From e8f6da06e5f7b09360df78842aae975548364f46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=82=96?= <1340691923@qq.com> Date: Wed, 6 Nov 2024 23:24:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0ElasticView=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E5=B8=82=E5=9C=BA=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .eslintignore | 1 + .gitattributes | 1 + .gitignore | 2 + .idea/.gitignore | 8 + .idea/ev2.iml | 9 + .idea/inspectionProfiles/Project_Default.xml | 7 + .idea/modules.xml | 8 + Dockerfile | 25 + cmd/build_ev/main.go | 221 ++ cmd/ev/main.go | 98 + config/config.yml | 40 + config/config.yml.tpl | 34 + config/ev-i18n/en.json | 61 + config/ev-i18n/zh-cn.json | 62 + config_dev/config_dev.yml | 39 + config_dev/config_dev.yml.tpl | 34 + config_dev/ev-i18n/en.json | 61 + config_dev/ev-i18n/zh-cn.json | 62 + debug.go | 6 + docs/docs.go | 3292 +++++++++++++++++ docs/swagger.json | 3267 ++++++++++++++++ docs/swagger.yaml | 2095 +++++++++++ go.mod | 166 + go.sum | 3187 ++++++++++++++++ go.work | 6 + go.work.sum | 908 +++++ gowatch.yml | 27 + pkg/api/base_controller.go | 30 + pkg/api/es_controller.go | 176 + pkg/api/es_link_controller.go | 483 +++ pkg/api/gm_operater_log.go | 50 + pkg/api/index_controller.go | 60 + pkg/api/manager_role_controller.go | 208 ++ pkg/api/manager_user_controller.go | 533 +++ pkg/api/plugin_controller.go | 171 + pkg/api/plugin_util_controller.go | 1679 +++++++++ pkg/api/ws_controller.go | 48 + pkg/infrastructure/access_control/rbac.go | 84 + pkg/infrastructure/config/config.go | 300 ++ pkg/infrastructure/config/version.go | 4 + pkg/infrastructure/dao/es_connect_dao.go | 7 + pkg/infrastructure/dao/es_link_v2_dao.go | 70 + pkg/infrastructure/dao/eslink_cfg_v2_dao.go | 51 + .../dao/eslink_role_cfg_reletion_dao.go | 70 + pkg/infrastructure/dao/ev_back_dao.go | 159 + pkg/infrastructure/dao/gm_operater_log_dao.go | 13 + pkg/infrastructure/dao/gm_role_dao.go | 73 + .../dao/gm_role_eslink_cfg_v2.go | 61 + pkg/infrastructure/dao/gm_user.go | 207 ++ pkg/infrastructure/dto/common/common.go | 19 + pkg/infrastructure/dto/datax.go | 90 + pkg/infrastructure/dto/es_alias.go | 13 + pkg/infrastructure/dto/es_cat.go | 7 + pkg/infrastructure/dto/es_connect.go | 62 + pkg/infrastructure/dto/es_crud.go | 33 + pkg/infrastructure/dto/es_doc.go | 18 + pkg/infrastructure/dto/es_index.go | 10 + pkg/infrastructure/dto/es_link.go | 57 + pkg/infrastructure/dto/es_map.go | 22 + pkg/infrastructure/dto/es_optimize.go | 6 + pkg/infrastructure/dto/es_reindex.go | 17 + pkg/infrastructure/dto/es_rest.go | 7 + pkg/infrastructure/dto/es_task.go | 18 + pkg/infrastructure/dto/gm_role.go | 50 + pkg/infrastructure/dto/guid.go | 5 + pkg/infrastructure/dto/oauth.go | 10 + pkg/infrastructure/dto/operater_log_list.go | 9 + pkg/infrastructure/dto/plugin.go | 19 + pkg/infrastructure/dto/plugin_util.go | 31 + pkg/infrastructure/dto/snapshot.go | 81 + pkg/infrastructure/dto/sql2dsl.go | 5 + pkg/infrastructure/dto/url_config.go | 5 + pkg/infrastructure/dto/user.go | 9 + pkg/infrastructure/dto/ws.go | 3 + .../es_sdk/pkg/base/base_datasource.go | 276 ++ .../es_sdk/pkg/cache/data_source.go | 84 + .../es_sdk/pkg/clickhouse/clickhouse.go | 130 + .../es_sdk/pkg/es_log/logger.go | 148 + .../es_sdk/pkg/factory/factory.go | 46 + pkg/infrastructure/es_sdk/pkg/mongo/mongo.go | 115 + pkg/infrastructure/es_sdk/pkg/mysql/mysql.go | 129 + .../es_sdk/pkg/postgresql/postgresql.go | 139 + pkg/infrastructure/es_sdk/pkg/proto/config.go | 228 ++ pkg/infrastructure/es_sdk/pkg/redis/redis.go | 80 + pkg/infrastructure/es_sdk/pkg/v6/es.go | 1202 ++++++ pkg/infrastructure/es_sdk/pkg/v7/es.go | 1198 ++++++ pkg/infrastructure/es_sdk/pkg/v8/es.go | 1208 ++++++ pkg/infrastructure/eve_api/api/api.go | 15 + pkg/infrastructure/eve_api/doc.go | 1 + pkg/infrastructure/eve_api/dto/ev_key.go | 43 + pkg/infrastructure/eve_api/ev_api.go | 71 + pkg/infrastructure/eve_api/vo/common.go | 107 + pkg/infrastructure/jwt_svr/errors.go | 7 + pkg/infrastructure/jwt_svr/exception_msg.go | 10 + pkg/infrastructure/jwt_svr/jwt.go | 109 + pkg/infrastructure/logger/log.go | 241 ++ pkg/infrastructure/middleware/Exception.go | 25 + .../middleware/middleware_svr.go | 270 ++ .../model/datax_link_info_model.go | 20 + pkg/infrastructure/model/datax_list_model.go | 23 + pkg/infrastructure/model/es_connect.go | 65 + pkg/infrastructure/model/es_link_model.go | 28 + pkg/infrastructure/model/eslink_cfg.go | 37 + .../model/eslink_role_cfg_reletion.go | 15 + pkg/infrastructure/model/gm_operater_log.go | 17 + pkg/infrastructure/model/gm_role.go | 12 + .../model/gm_role_eslink_cfg.go | 16 + pkg/infrastructure/model/gm_user.go | 34 + pkg/infrastructure/model/guid_model.go | 14 + .../model/user_role_relation.go | 16 + pkg/infrastructure/my_error/es_index.go | 11 + pkg/infrastructure/my_error/my_error.go | 26 + .../plugin_rpc/plugin_rpc_server.go | 72 + pkg/infrastructure/plugin_rpc/plugin_util.go | 72 + .../backendplugin/grpc_plugin/client.go | 116 + .../backendplugin/grpc_plugin/client_v2.go | 102 + .../backendplugin/grpc_plugin/grpc_plugin.go | 160 + .../backendplugin/grpc_plugin/log_wrapper.go | 180 + .../plugins/backendplugin/plugin.go | 19 + .../backendplugin/provider/provider.go | 40 + pkg/infrastructure/plugins/datasource.go | 224 ++ .../plugins/manager/interfaces.go | 17 + .../plugins/manager/plugin_manager.go | 78 + .../plugins/manager/process/ifaces.go | 11 + .../plugins/manager/process/process.go | 81 + pkg/infrastructure/plugins/plugin/plugin.go | 353 ++ .../pluginstore/plugin_store_service.go | 146 + pkg/infrastructure/process/process.go | 5 + pkg/infrastructure/process/root_check.go | 21 + .../process/root_check_windows.go | 9 + pkg/infrastructure/request/Request.go | 18 + pkg/infrastructure/response/response.go | 184 + pkg/infrastructure/sqlstore/gorm_log.go | 73 + .../sqlstore/migrator/migrator.go | 247 ++ pkg/infrastructure/sqlstore/orm.go | 77 + pkg/infrastructure/sqlstore/sqlite/ddlmod.go | 242 ++ pkg/infrastructure/sqlstore/sqlite/errors.go | 7 + .../sqlstore/sqlite/migrator.go | 433 +++ pkg/infrastructure/sqlstore/sqlite/sqlite.go | 241 ++ pkg/infrastructure/sqlstore/squirrel.go | 16 + .../sqlstore/svr_log/svr_log.go | 73 + pkg/infrastructure/vo/alias_info.go | 5 + pkg/infrastructure/vo/cat_index.go | 5 + pkg/infrastructure/vo/es_back.go | 7 + pkg/infrastructure/vo/es_link.go | 83 + pkg/infrastructure/vo/index_html.go | 9 + pkg/infrastructure/vo/oauth.go | 8 + pkg/infrastructure/vo/operater.go | 12 + pkg/infrastructure/vo/ping_result.go | 18 + pkg/infrastructure/vo/plugin_util.go | 13 + pkg/infrastructure/vo/snapshot.go | 364 ++ pkg/infrastructure/vo/sql2dsl.go | 6 + pkg/infrastructure/vo/task_info.go | 36 + pkg/infrastructure/vo/url_config.go | 6 + pkg/infrastructure/vo/user.go | 24 + pkg/infrastructure/vo/user_info.go | 10 + pkg/infrastructure/vo/ws.go | 3 + pkg/infrastructure/web_engine/web_engine.go | 251 ++ pkg/registry/registry.go | 31 + .../backgroundsvcs/background_services.go | 42 + pkg/server/generate.go | 3 + pkg/server/server.go | 176 + pkg/server/wire.go | 127 + pkg/server/wire_gen.go | 192 + pkg/services/cache_service/es_link_cache.go | 86 + pkg/services/es/es.go | 182 + .../es_link_service/es_link_service.go | 320 ++ pkg/services/es_service/es_service.go | 194 + pkg/services/eve_service/eve_service.go | 127 + .../gm_operater_log_service.go | 86 + pkg/services/gm_role/gm_role_service.go | 73 + pkg/services/gm_user/exception.go | 12 + pkg/services/gm_user/gm_user_service.go | 574 +++ pkg/services/oauth/idp.go | 13 + pkg/services/oauth/interfaces.go | 47 + pkg/services/oauth/utils/util.go | 7 + pkg/services/oauth/work_wechat.go | 224 ++ .../plugin_install_service.go | 164 + pkg/services/plugin_service/plugin_service.go | 234 ++ pkg/services/updatechecker/ev_update.go | 117 + pkg/services/updatechecker/plugins.go | 149 + pkg/services/ws_service/define.go | 5 + pkg/services/ws_service/heart.go | 17 + pkg/services/ws_service/ws_service.go | 303 ++ pkg/util/aes.go | 93 + pkg/util/array.go | 99 + pkg/util/cast.go | 118 + pkg/util/charset.go | 95 + pkg/util/config.go | 29 + pkg/util/dir.go | 85 + pkg/util/ecb.go | 76 + pkg/util/encoding.go | 84 + pkg/util/encoding_test.go | 132 + pkg/util/encryption.go | 148 + pkg/util/encryption_test.go | 49 + pkg/util/errors.go | 21 + pkg/util/excel.go | 70 + pkg/util/exec.go | 22 + pkg/util/exnet.go | 138 + pkg/util/filepath.go | 188 + pkg/util/filepath_test.go | 37 + pkg/util/gzip.go | 47 + pkg/util/hash.go | 130 + pkg/util/http.go | 455 +++ pkg/util/interface.go | 33 + pkg/util/ip.go | 1 + pkg/util/ip_address.go | 55 + pkg/util/ip_address_test.go | 34 + pkg/util/json.go | 4 + pkg/util/map.go | 3 + pkg/util/math.go | 24 + pkg/util/md5.go | 26 + pkg/util/md5_test.go | 17 + pkg/util/proxyutil/proxyutil.go | 44 + pkg/util/proxyutil/reverse_proxy.go | 146 + pkg/util/response/res.go | 10 + pkg/util/shortid_generator.go | 31 + pkg/util/shortid_generator_test.go | 45 + pkg/util/split_email.go | 14 + pkg/util/split_email_test.go | 52 + pkg/util/sql.go | 23 + pkg/util/strings.go | 133 + pkg/util/strings_test.go | 154 + pkg/util/sys.go | 16 + pkg/util/time.go | 75 + pkg/util/token.go | 33 + pkg/util/url.go | 52 + pkg/util/url_test.go | 81 + pkg/util/util.go | 59 + pkg/util/validation.go | 19 + pkg/util/validation_test.go | 38 + pkg/util/version.go | 1 + pkg/util/zip.go | 67 + pkg/web/es.go | 15 + pkg/web/es_link.go | 27 + pkg/web/manager_user.go | 38 + pkg/web/no_verification.go | 5 + pkg/web/operater_log.go | 8 + pkg/web/plugins.go | 23 + pkg/web/web_server.go | 180 + pkg/web/ws.go | 6 + resources/views/dist/css/401.CvIIrYMJ.css | 1 + resources/views/dist/css/404.CdPDqZCv.css | 1 + .../views/dist/css/EsHeader.DxYu6_fD.css | 1 + resources/views/dist/css/apifox.DQAG05N_.css | 1 + resources/views/dist/css/auth.Ch64Sp5X.css | 1 + .../views/dist/css/el-alert.CGNjtr_4.css | 1 + resources/views/dist/css/el-card.BJ3sbP9B.css | 1 + .../dist/css/el-checkbox-group.B3ldtHxN.css | 1 + .../views/dist/css/el-checkbox.BFZaSjz7.css | 1 + resources/views/dist/css/el-col.BP4dtlli.css | 1 + .../dist/css/el-date-picker.DZdkGm2i.css | 1 + .../views/dist/css/el-dialog.BCeqVwJ2.css | 1 + .../views/dist/css/el-divider.DtiKewmW.css | 1 + .../views/dist/css/el-drawer.CswTcYR2.css | 1 + resources/views/dist/css/el-form.Bw6vhIyH.css | 1 + .../dist/css/el-image-viewer.DufDdbED.css | 1 + .../views/dist/css/el-image.BrUZgf8Q.css | 1 + .../dist/css/el-input-number.52TPlFlv.css | 1 + resources/views/dist/css/el-link.Dc88KzPr.css | 1 + .../views/dist/css/el-loading.x7H6yciF.css | 1 + .../views/dist/css/el-pagination.EEgK1E05.css | 1 + .../views/dist/css/el-popover.BXo9j6C6.css | 1 + .../views/dist/css/el-popper.8rcjPMiY.css | 1 + .../views/dist/css/el-progress.BISVJXDI.css | 1 + .../views/dist/css/el-radio.kPKi7vSu.css | 1 + .../views/dist/css/el-scrollbar.DgVM_IK3.css | 1 + .../views/dist/css/el-select.DiVaJgmx.css | 1 + .../views/dist/css/el-switch.BhrVVMax.css | 1 + .../views/dist/css/el-tab-pane.99T6i4TO.css | 1 + .../dist/css/el-table-column.Ds_oPOdx.css | 1 + resources/views/dist/css/el-tag.5TqU4q48.css | 1 + resources/views/dist/css/el-text.CjuDOozN.css | 1 + .../dist/css/el-tree-select.BC9u6a6J.css | 1 + resources/views/dist/css/el-tree.LD6oLcSu.css | 1 + resources/views/dist/css/icons.Fl2phYMx.css | 1 + resources/views/dist/css/index.7eDotrm1.css | 7 + resources/views/dist/css/index.BDEJCyCm.css | 1 + resources/views/dist/css/index.BFuNDnEk.css | 1 + resources/views/dist/css/index.BU3Oya2i.css | 1 + resources/views/dist/css/index.Bp03AT9Z.css | 1 + resources/views/dist/css/index.Bv77CJl9.css | 1 + resources/views/dist/css/index.CC3X2lTN.css | 1 + resources/views/dist/css/index.VhSqXR7Y.css | 1 + resources/views/dist/css/index.gIaAfrbD.css | 1 + .../views/dist/css/internal-doc.Dysg9Ov1.css | 1 + resources/views/dist/css/knife4j.C9A4iUYs.css | 1 + resources/views/dist/css/market.BWh6NZB6.css | 1 + .../views/dist/css/operater_log.CGpmyHFe.css | 1 + resources/views/dist/css/role.Dqt6WeBM.css | 1 + .../views/dist/css/signature.rZpWOn9R.css | 1 + resources/views/dist/css/swagger.DXKrmNde.css | 1 + resources/views/dist/css/upload.w_PWxPc-.css | 1 + resources/views/dist/css/user.DPk9CuZD.css | 1 + .../views/dist/css/wang-editor.ClYh1QsV.css | 1 + .../views/dist/css/websocket.DEx0kJFa.css | 1 + resources/views/dist/favicon.ico | Bin 0 -> 14204 bytes resources/views/dist/img/401.DaBJYOxp.gif | Bin 0 -> 162867 bytes resources/views/dist/img/404.D6_y3Jr2.png | Bin 0 -> 20613 bytes .../img/login-background-dark.BfPFE40x.jpg | Bin 0 -> 20471 bytes .../img/login-background-light.CKlK6emc.jpg | Bin 0 -> 32872 bytes .../views/dist/img/login_bg.BzmVCLXR.png | Bin 0 -> 474374 bytes resources/views/dist/img/logo.BlrjUcG7.png | Bin 0 -> 73085 bytes .../views/dist/img/work_wechat.zTPxZRB-.png | Bin 0 -> 6991 bytes resources/views/dist/index.html | 26 + resources/views/dist/js/401.Diq3Y6E6.js | 1 + resources/views/dist/js/404.DKSrrdbO.js | 1 + .../views/dist/js/EsDashbord.BAS1EnKw.js | 1 + ...ue_type_script_setup_true_lang.BD2_WPlk.js | 1 + resources/views/dist/js/EsHeader.BozPtybD.js | 1 + .../views/dist/js/_Uint8Array.BEOPqGcx.js | 1 + .../js/_commonjs-dynamic-modules.BHR_E30J.js | 1 + .../js/_plugin-vue_export-helper.BCo6x5W8.js | 1 + resources/views/dist/js/api-rbac.BkPPKqLP.js | 1 + resources/views/dist/js/api.B2FJMEEY.js | 1 + resources/views/dist/js/apifox.wqbLB8iE.js | 1 + resources/views/dist/js/auth.Bn4YvWL7.js | 1 + resources/views/dist/js/backtop.C5bGCvZX.js | 1 + resources/views/dist/js/captcha.KixZeTLs.js | 1 + resources/views/dist/js/cascader.Bxy7lIuJ.js | 1 + resources/views/dist/js/castArray.arHVDzqw.js | 1 + resources/views/dist/js/client.fwafuIJ_.js | 1 + resources/views/dist/js/close.3A3CTE27.js | 1 + resources/views/dist/js/close_all.CpAPdWg9.js | 1 + .../views/dist/js/close_left.FPCWsnfT.js | 1 + .../views/dist/js/close_other.CtMgS35C.js | 1 + .../views/dist/js/close_right.WYLOaSAD.js | 1 + resources/views/dist/js/collapse.ROHmwAah.js | 1 + resources/views/dist/js/debounce.l44evi-0.js | 1 + resources/views/dist/js/delete.CrlEmVes.js | 1 + resources/views/dist/js/dept-tree.DBPM0br8.js | 1 + ...ue_type_script_setup_true_lang.DonqNhHi.js | 1 + resources/views/dist/js/dept.o4EvKKVx.js | 1 + resources/views/dist/js/dict.Bl25h5Gq.js | 1 + resources/views/dist/js/dict.BlxtrVRf.js | 1 + resources/views/dist/js/dict.CNA62ktp.js | 1 + resources/views/dist/js/document.DqID0E9P.js | 1 + resources/views/dist/js/download.BcBrriOr.js | 1 + resources/views/dist/js/dropdown.Dka1h-m0.js | 1 + resources/views/dist/js/el-alert.oASVj8Ze.js | 1 + resources/views/dist/js/el-card.BhvZLWwX.js | 1 + .../views/dist/js/el-checkbox.8MJHthul.js | 1 + resources/views/dist/js/el-col.DOWhjITg.js | 1 + .../views/dist/js/el-date-picker.BPCW1w6T.js | 1 + resources/views/dist/js/el-dialog.DGaSOiRM.js | 1 + .../views/dist/js/el-divider.CoJV5nts.js | 1 + resources/views/dist/js/el-drawer.CpqknkfB.js | 1 + .../views/dist/js/el-form-item.l0sNRNKZ.js | 1 + resources/views/dist/js/el-form.DUR-mZNt.js | 1 + .../views/dist/js/el-image-viewer.CSeiPfXQ.js | 1 + resources/views/dist/js/el-image.DM0ttR5m.js | 1 + .../views/dist/js/el-input-number.zcrW3MHJ.js | 1 + resources/views/dist/js/el-link.7KZopgR8.js | 1 + .../views/dist/js/el-pagination.CQTA1hq1.js | 1 + .../views/dist/js/el-popover.OX4vypnS.js | 1 + resources/views/dist/js/el-popper.Cb3Eus9m.js | 1 + .../views/dist/js/el-progress.BF08Xthz.js | 1 + resources/views/dist/js/el-radio.B-TDguQR.js | 1 + .../views/dist/js/el-scrollbar.BJ_tYB1D.js | 1 + resources/views/dist/js/el-select.C9ddzdnq.js | 1 + resources/views/dist/js/el-switch.BvIaL9AI.js | 1 + .../views/dist/js/el-tab-pane.Dc62g1GH.js | 1 + .../views/dist/js/el-table-column.Dl1jn1Bd.js | 1 + resources/views/dist/js/el-text.8E8aFHxr.js | 1 + .../views/dist/js/el-tooltip.l0sNRNKZ.js | 1 + .../views/dist/js/el-tree-select.BGIuc0mE.js | 1 + resources/views/dist/js/el-tree.UTBgh5GW.js | 1 + resources/views/dist/js/es.Bcp-0uIV.js | 1 + resources/views/dist/js/file.CkIRLx9T.js | 1 + .../views/dist/js/fullscreen-exit.DXwCcaMo.js | 1 + .../views/dist/js/fullscreen.dczNRBeD.js | 1 + resources/views/dist/js/github.DLO2QQQy.js | 1 + resources/views/dist/js/homepage.BcyYp1IG.js | 1 + .../views/dist/js/icon-selector.DE8gSAgB.js | 1 + resources/views/dist/js/icons.0j-KsJXn.js | 1 + resources/views/dist/js/index.3nOPQnwv.js | 1 + resources/views/dist/js/index.B-hlu3LH.js | 1 + resources/views/dist/js/index.B5LP4W1V.js | 1 + resources/views/dist/js/index.B6fdKp2E.js | 1 + resources/views/dist/js/index.B_yc3eBb.js | 1 + resources/views/dist/js/index.CP01f_MK.js | 1 + resources/views/dist/js/index.CVv0gcjf.js | 1 + resources/views/dist/js/index.CgxzQhlt.js | 1 + resources/views/dist/js/index.DBfl569D.js | 1 + resources/views/dist/js/index.DCoBgS8Y.js | 1 + resources/views/dist/js/index.DMBpWXpT.js | 2 + resources/views/dist/js/index.DrLk8lye.js | 1 + resources/views/dist/js/index.ES2wPbsk.js | 1 + resources/views/dist/js/index.OICg9GcR.js | 1 + resources/views/dist/js/index.R54cooZL.js | 1 + resources/views/dist/js/index.SwBASKCc.js | 1 + resources/views/dist/js/index.SyZ-sAxM.js | 1 + resources/views/dist/js/index.lMfFSmY8.js | 1 + resources/views/dist/js/index.qeCV5ckY.js | 1 + resources/views/dist/js/index.tvUbLRs9.js | 1 + ...ue_type_script_setup_true_lang.CqBp_XYA.js | 1 + ...ue_type_script_setup_true_lang.u9qT2mYo.js | 1 + resources/views/dist/js/index.wrq3oQhC.js | 1 + .../views/dist/js/internal-doc.DmL46gxE.js | 1 + resources/views/dist/js/ip.NBim6PQ8.js | 1 + resources/views/dist/js/isEqual.B61-3bNT.js | 1 + .../views/dist/js/isUndefined.DgmxjSXK.js | 1 + resources/views/dist/js/knife4j.BQHvDfXA.js | 1 + resources/views/dist/js/language.k0ZPy50U.js | 1 + resources/views/dist/js/level1.CTwj1DQS.js | 1 + resources/views/dist/js/level2.DgBfXfTl.js | 1 + resources/views/dist/js/level3-1.OLQvDptA.js | 1 + resources/views/dist/js/level3-2.DhL6Xgpc.js | 1 + resources/views/dist/js/link.DiUzVB7Z.js | 1 + resources/views/dist/js/market.CHHjOpBP.js | 1 + resources/views/dist/js/menu.CSAxtYMZ.js | 1 + resources/views/dist/js/message.CTraJOIE.js | 1 + resources/views/dist/js/monitor.Cm5WDh5_.js | 1 + resources/views/dist/js/oauth.Bng1BCw1.js | 1 + ...ue_type_script_setup_true_lang.DbnOqKxM.js | 1 + .../views/dist/js/operater_log.c4ZyDKxO.js | 2 + resources/views/dist/js/other.PTgD1G_4.js | 1 + resources/views/dist/js/plugins.BcScPyxj.js | 1 + resources/views/dist/js/plus.BhbEy4-l.js | 1 + resources/views/dist/js/position.CIWFjaHr.js | 1 + resources/views/dist/js/project.CAkqf0A3.js | 1 + resources/views/dist/js/pv.oj4_s-Zv.js | 1 + .../views/dist/js/question-filled.8tGWrj00.js | 1 + resources/views/dist/js/refresh.B5ExwFoE.js | 1 + resources/views/dist/js/refresh.BxJIPU5v.js | 1 + resources/views/dist/js/refs.BiRbkTK3.js | 1 + resources/views/dist/js/role.BVYrj-EL.js | 1 + resources/views/dist/js/role.BZhV-890.js | 1 + resources/views/dist/js/role.DDpGZwDf.js | 1 + .../views/dist/js/route-param.CnBOQ5EZ.js | 1 + resources/views/dist/js/search.DdQbLJWh.js | 1 + resources/views/dist/js/setting.CfydkD5J.js | 1 + resources/views/dist/js/signature.fGsK1tnl.js | 1 + resources/views/dist/js/size.C48ZYpz_.js | 1 + resources/views/dist/js/strings.DeQ3Zoz4.js | 1 + resources/views/dist/js/swagger.BK8ZmUGU.js | 1 + resources/views/dist/js/system.BjyKXCM4.js | 1 + resources/views/dist/js/table.C6Xt0YCE.js | 1 + resources/views/dist/js/todo.C6Ti5UL0.js | 1 + resources/views/dist/js/token.DWNpOE8r.js | 1 + resources/views/dist/js/tree.ByH7Oq4A.js | 1 + resources/views/dist/js/upload.DYbCoZtY.js | 1 + .../views/dist/js/use-dialog.CoOh9qjD.js | 1 + .../views/dist/js/user-import.fAKgRM7z.js | 1 + ...ue_type_script_setup_true_lang.Cqs-TTBJ.js | 1 + resources/views/dist/js/user.rrOxQVjB.js | 1 + resources/views/dist/js/user.y-CSH6zA.js | 1 + resources/views/dist/js/uv.DYcf65LN.js | 1 + .../views/dist/js/wang-editor.DK0fpScR.js | 1 + resources/views/dist/js/websocket.iBs7fvfo.js | 1 + resources/views/fs.go | 18 + resources/vue/.editorconfig | 15 + resources/vue/.env.development | 11 + resources/vue/.env.production | 8 + resources/vue/.eslintignore | 14 + resources/vue/.eslintrc-auto-import.json | 284 ++ resources/vue/.eslintrc.cjs | 88 + resources/vue/.gitignore | 18 + resources/vue/.husky/commit-msg | 1 + resources/vue/.husky/pre-commit | 1 + resources/vue/.prettierignore | 11 + resources/vue/.prettierrc.cjs | 46 + resources/vue/.stylelintignore | 11 + resources/vue/.stylelintrc.cjs | 51 + resources/vue/.vscode/extensions.json | 11 + resources/vue/.vscode/settings.json | 81 + resources/vue/.vscode/vue3.0.code-snippets | 23 + resources/vue/.vscode/vue3.2.code-snippets | 17 + resources/vue/.vscode/vue3.3.code-snippets | 21 + resources/vue/CHANGELOG.md | 386 ++ resources/vue/LICENSE | 21 + resources/vue/README.en-US.md | 161 + resources/vue/README.md | 182 + resources/vue/commitlint.config.cjs | 93 + resources/vue/index.html | 64 + .../vue/licenses/vue-element-admin/LICENSE | 21 + .../vue/licenses/vue3-element-admin/LICENSE | 21 + resources/vue/mock/auth.mock.ts | 43 + resources/vue/mock/base.ts | 10 + resources/vue/mock/dept.mock.ts | 153 + resources/vue/mock/dict.mock.ts | 168 + resources/vue/mock/log.mock.ts | 225 ++ resources/vue/mock/menu.mock.ts | 1620 ++++++++ resources/vue/mock/role.mock.ts | 335 ++ resources/vue/mock/user.mock.ts | 189 + resources/vue/npminstall-debug.log | 197 + resources/vue/package.json | 139 + resources/vue/public/favicon.ico | Bin 0 -> 14204 bytes resources/vue/src/App.vue | 45 + resources/vue/src/api/api-rbac.ts | 26 + resources/vue/src/api/auth.ts | 31 + resources/vue/src/api/es-link.ts | 112 + resources/vue/src/api/es.ts | 27 + resources/vue/src/api/i18n.ts | 10 + resources/vue/src/api/menu.ts | 130 + resources/vue/src/api/operate.ts | 9 + resources/vue/src/api/plugin.js | 31 + resources/vue/src/api/plugins.ts | 70 + resources/vue/src/api/role.ts | 33 + resources/vue/src/api/user.ts | 164 + resources/vue/src/assets/icons/api.svg | 1 + resources/vue/src/assets/icons/backtop.svg | 1 + resources/vue/src/assets/icons/captcha.svg | 1 + resources/vue/src/assets/icons/cascader.svg | 1 + resources/vue/src/assets/icons/client.svg | 1 + resources/vue/src/assets/icons/close.svg | 1 + resources/vue/src/assets/icons/close_all.svg | 1 + resources/vue/src/assets/icons/close_left.svg | 1 + .../vue/src/assets/icons/close_other.svg | 1 + .../vue/src/assets/icons/close_right.svg | 1 + resources/vue/src/assets/icons/collapse.svg | 1 + resources/vue/src/assets/icons/dict.svg | 1 + resources/vue/src/assets/icons/document.svg | 1 + resources/vue/src/assets/icons/download.svg | 1 + .../vue/src/assets/icons/fullscreen-exit.svg | 1 + resources/vue/src/assets/icons/fullscreen.svg | 1 + resources/vue/src/assets/icons/github.svg | 1 + resources/vue/src/assets/icons/homepage.svg | 1 + resources/vue/src/assets/icons/ip.svg | 1 + resources/vue/src/assets/icons/language.svg | 1 + resources/vue/src/assets/icons/menu.svg | 1 + resources/vue/src/assets/icons/message.svg | 1 + resources/vue/src/assets/icons/monitor.svg | 1 + resources/vue/src/assets/icons/project.svg | 1 + resources/vue/src/assets/icons/pv.svg | 1 + resources/vue/src/assets/icons/refresh.svg | 1 + resources/vue/src/assets/icons/role.svg | 1 + resources/vue/src/assets/icons/setting.svg | 1 + resources/vue/src/assets/icons/size.svg | 1 + resources/vue/src/assets/icons/system.svg | 1 + resources/vue/src/assets/icons/table.svg | 1 + resources/vue/src/assets/icons/todo.svg | 1 + resources/vue/src/assets/icons/tree.svg | 1 + resources/vue/src/assets/icons/user.svg | 1 + resources/vue/src/assets/icons/uv.svg | 1 + resources/vue/src/assets/images/401.gif | Bin 0 -> 162867 bytes resources/vue/src/assets/images/404.png | Bin 0 -> 20613 bytes resources/vue/src/assets/images/404_cloud.png | Bin 0 -> 2644 bytes resources/vue/src/assets/images/img.png | Bin 0 -> 1223769 bytes .../assets/images/login-background-dark.jpg | Bin 0 -> 20471 bytes .../assets/images/login-background-light.jpg | Bin 0 -> 32872 bytes resources/vue/src/assets/images/login_bg.png | Bin 0 -> 474374 bytes resources/vue/src/assets/images/login_bg.svg | 1 + .../vue/src/assets/images/work_wechat.png | Bin 0 -> 6991 bytes resources/vue/src/assets/logo.png | Bin 0 -> 73085 bytes .../vue/src/components/AppLink/index.vue | 38 + .../vue/src/components/Breadcrumb/index.vue | 97 + .../vue/src/components/CURD/PageContent.vue | 1022 +++++ .../vue/src/components/CURD/PageForm.vue | 174 + .../vue/src/components/CURD/PageModal.vue | 405 ++ .../vue/src/components/CURD/PageSearch.vue | 237 ++ resources/vue/src/components/CURD/types.ts | 271 ++ resources/vue/src/components/CURD/usePage.ts | 73 + .../vue/src/components/CopyButton/index.vue | 62 + resources/vue/src/components/Date/index.vue | 171 + .../vue/src/components/Dictionary/index.vue | 76 + .../vue/src/components/GithubCorner/index.vue | 62 + .../vue/src/components/Hamburger/index.vue | 39 + .../vue/src/components/IconSelect/index.vue | 208 ++ .../vue/src/components/ImportEvKey/index.vue | 80 + .../vue/src/components/LangSelect/index.vue | 47 + .../vue/src/components/MarkDownView/index.vue | 21 + .../vue/src/components/MenuSelect/index.vue | 126 + .../vue/src/components/Pagination/index.vue | 81 + .../vue/src/components/SelectLink/index.vue | 70 + .../vue/src/components/SizeSelect/index.vue | 39 + .../vue/src/components/SvgIcon/index.vue | 45 + .../vue/src/components/TableSelect/index.vue | 371 ++ .../vue/src/components/Upload/ImageUpload.vue | 215 ++ .../src/components/Upload/SingleUpload.vue | 77 + .../vue/src/components/WangEditor/index.vue | 73 + resources/vue/src/directive/index.ts | 9 + .../vue/src/directive/permission/index.ts | 38 + resources/vue/src/enums/CacheEnum.ts | 4 + resources/vue/src/enums/DeviceEnum.ts | 14 + resources/vue/src/enums/LanguageEnum.ts | 14 + resources/vue/src/enums/LayoutEnum.ts | 18 + resources/vue/src/enums/MenuTypeEnum.ts | 22 + resources/vue/src/enums/MessageTypeEnum.ts | 15 + resources/vue/src/enums/NoticeTypeEnum.ts | 30 + resources/vue/src/enums/ResultEnum.ts | 18 + resources/vue/src/enums/SidebarStatusEnum.ts | 14 + resources/vue/src/enums/SizeEnum.ts | 19 + resources/vue/src/enums/ThemeEnum.ts | 18 + resources/vue/src/lang/index.ts | 32 + resources/vue/src/lang/package/en.ts | 350 ++ resources/vue/src/lang/package/zh-cn.ts | 136 + .../src/layout/components/AppMain/index.vue | 56 + .../NavBar/components/NavbarAction.vue | 270 ++ .../src/layout/components/NavBar/index.vue | 33 + .../Settings/components/LayoutSelect.vue | 108 + .../Settings/components/ThemeColorPicker.vue | 41 + .../src/layout/components/Settings/index.vue | 212 ++ .../Sidebar/components/SidebarLogo.vue | 64 + .../Sidebar/components/SidebarMenu.vue | 66 + .../Sidebar/components/SidebarMenuItem.vue | 202 + .../components/SidebarMenuItemTitle.vue | 43 + .../Sidebar/components/SidebarMixTopMenu.vue | 90 + .../src/layout/components/Sidebar/index.vue | 38 + .../src/layout/components/TagsView/index.vue | 448 +++ resources/vue/src/layout/index.vue | 303 ++ resources/vue/src/main.ts | 55 + resources/vue/src/plugins/icons.ts | 9 + resources/vue/src/plugins/index.ts | 24 + resources/vue/src/plugins/permission.ts | 116 + resources/vue/src/router/index.ts | 85 + resources/vue/src/settings.ts | 26 + resources/vue/src/store/index.ts | 16 + resources/vue/src/store/modules/app.ts | 109 + resources/vue/src/store/modules/permission.ts | 148 + resources/vue/src/store/modules/settings.ts | 130 + resources/vue/src/store/modules/tagsView.ts | 253 ++ resources/vue/src/store/modules/user.ts | 90 + resources/vue/src/styles/index.scss | 28 + resources/vue/src/styles/login.scss | 81 + resources/vue/src/styles/reset.scss | 76 + .../vue/src/styles/variables.module.scss | 11 + resources/vue/src/styles/variables.scss | 36 + resources/vue/src/types/auto-imports.d.ts | 1780 +++++++++ resources/vue/src/types/components.d.ts | 108 + resources/vue/src/types/env.d.ts | 40 + resources/vue/src/types/global.d.ts | 95 + resources/vue/src/types/router.d.ts | 54 + resources/vue/src/types/socket.d.ts | 6 + resources/vue/src/utils/asyncRoutes.ts | 102 + resources/vue/src/utils/auth.ts | 17 + resources/vue/src/utils/clipboard.ts | 31 + resources/vue/src/utils/es_link.ts | 29 + resources/vue/src/utils/i18n.ts | 12 + resources/vue/src/utils/index.ts | 380 ++ resources/vue/src/utils/monaco.ts | 34 + resources/vue/src/utils/nprogress.ts | 18 + resources/vue/src/utils/plugin.ts | 105 + resources/vue/src/utils/request.ts | 125 + .../vue/src/views/connect-tree/EsHeader.vue | 100 + resources/vue/src/views/connect-tree/auth.vue | 600 +++ resources/vue/src/views/connect-tree/link.vue | 504 +++ .../views/dashboard/components/EsDashbord.vue | 153 + resources/vue/src/views/dashboard/index.vue | 277 ++ resources/vue/src/views/error-page/401.vue | 109 + resources/vue/src/views/error-page/404.vue | 264 ++ resources/vue/src/views/login/index.vue | 473 +++ resources/vue/src/views/permission/oauth.vue | 85 + .../vue/src/views/permission/operater_log.vue | 255 ++ resources/vue/src/views/permission/role.vue | 513 +++ resources/vue/src/views/permission/user.vue | 452 +++ resources/vue/src/views/plugins/market.vue | 717 ++++ resources/vue/src/views/redirect/index.vue | 15 + resources/vue/tsconfig.json | 28 + resources/vue/uno.config.ts | 43 + resources/vue/vite.config.ts | 285 ++ testing/ev_back_dao_test.go | 55 + testing/logs/ev/info.log.20240914 | 19 + testing/logs/ev/info.log.20241022 | 15 + 654 files changed, 58288 insertions(+) create mode 100644 .eslintignore create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/ev2.iml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/modules.xml create mode 100644 Dockerfile create mode 100644 cmd/build_ev/main.go create mode 100644 cmd/ev/main.go create mode 100644 config/config.yml create mode 100644 config/config.yml.tpl create mode 100644 config/ev-i18n/en.json create mode 100644 config/ev-i18n/zh-cn.json create mode 100644 config_dev/config_dev.yml create mode 100644 config_dev/config_dev.yml.tpl create mode 100644 config_dev/ev-i18n/en.json create mode 100644 config_dev/ev-i18n/zh-cn.json create mode 100644 debug.go create mode 100644 docs/docs.go create mode 100644 docs/swagger.json create mode 100644 docs/swagger.yaml create mode 100644 go.mod create mode 100644 go.sum create mode 100644 go.work create mode 100644 go.work.sum create mode 100644 gowatch.yml create mode 100644 pkg/api/base_controller.go create mode 100644 pkg/api/es_controller.go create mode 100644 pkg/api/es_link_controller.go create mode 100644 pkg/api/gm_operater_log.go create mode 100644 pkg/api/index_controller.go create mode 100644 pkg/api/manager_role_controller.go create mode 100644 pkg/api/manager_user_controller.go create mode 100644 pkg/api/plugin_controller.go create mode 100644 pkg/api/plugin_util_controller.go create mode 100644 pkg/api/ws_controller.go create mode 100644 pkg/infrastructure/access_control/rbac.go create mode 100644 pkg/infrastructure/config/config.go create mode 100644 pkg/infrastructure/config/version.go create mode 100644 pkg/infrastructure/dao/es_connect_dao.go create mode 100644 pkg/infrastructure/dao/es_link_v2_dao.go create mode 100644 pkg/infrastructure/dao/eslink_cfg_v2_dao.go create mode 100644 pkg/infrastructure/dao/eslink_role_cfg_reletion_dao.go create mode 100644 pkg/infrastructure/dao/ev_back_dao.go create mode 100644 pkg/infrastructure/dao/gm_operater_log_dao.go create mode 100644 pkg/infrastructure/dao/gm_role_dao.go create mode 100644 pkg/infrastructure/dao/gm_role_eslink_cfg_v2.go create mode 100644 pkg/infrastructure/dao/gm_user.go create mode 100644 pkg/infrastructure/dto/common/common.go create mode 100644 pkg/infrastructure/dto/datax.go create mode 100644 pkg/infrastructure/dto/es_alias.go create mode 100644 pkg/infrastructure/dto/es_cat.go create mode 100644 pkg/infrastructure/dto/es_connect.go create mode 100644 pkg/infrastructure/dto/es_crud.go create mode 100644 pkg/infrastructure/dto/es_doc.go create mode 100644 pkg/infrastructure/dto/es_index.go create mode 100644 pkg/infrastructure/dto/es_link.go create mode 100644 pkg/infrastructure/dto/es_map.go create mode 100644 pkg/infrastructure/dto/es_optimize.go create mode 100644 pkg/infrastructure/dto/es_reindex.go create mode 100644 pkg/infrastructure/dto/es_rest.go create mode 100644 pkg/infrastructure/dto/es_task.go create mode 100644 pkg/infrastructure/dto/gm_role.go create mode 100644 pkg/infrastructure/dto/guid.go create mode 100644 pkg/infrastructure/dto/oauth.go create mode 100644 pkg/infrastructure/dto/operater_log_list.go create mode 100644 pkg/infrastructure/dto/plugin.go create mode 100644 pkg/infrastructure/dto/plugin_util.go create mode 100644 pkg/infrastructure/dto/snapshot.go create mode 100644 pkg/infrastructure/dto/sql2dsl.go create mode 100644 pkg/infrastructure/dto/url_config.go create mode 100644 pkg/infrastructure/dto/user.go create mode 100644 pkg/infrastructure/dto/ws.go create mode 100644 pkg/infrastructure/es_sdk/pkg/base/base_datasource.go create mode 100644 pkg/infrastructure/es_sdk/pkg/cache/data_source.go create mode 100644 pkg/infrastructure/es_sdk/pkg/clickhouse/clickhouse.go create mode 100644 pkg/infrastructure/es_sdk/pkg/es_log/logger.go create mode 100644 pkg/infrastructure/es_sdk/pkg/factory/factory.go create mode 100644 pkg/infrastructure/es_sdk/pkg/mongo/mongo.go create mode 100644 pkg/infrastructure/es_sdk/pkg/mysql/mysql.go create mode 100644 pkg/infrastructure/es_sdk/pkg/postgresql/postgresql.go create mode 100644 pkg/infrastructure/es_sdk/pkg/proto/config.go create mode 100644 pkg/infrastructure/es_sdk/pkg/redis/redis.go create mode 100644 pkg/infrastructure/es_sdk/pkg/v6/es.go create mode 100644 pkg/infrastructure/es_sdk/pkg/v7/es.go create mode 100644 pkg/infrastructure/es_sdk/pkg/v8/es.go create mode 100644 pkg/infrastructure/eve_api/api/api.go create mode 100644 pkg/infrastructure/eve_api/doc.go create mode 100644 pkg/infrastructure/eve_api/dto/ev_key.go create mode 100644 pkg/infrastructure/eve_api/ev_api.go create mode 100644 pkg/infrastructure/eve_api/vo/common.go create mode 100644 pkg/infrastructure/jwt_svr/errors.go create mode 100644 pkg/infrastructure/jwt_svr/exception_msg.go create mode 100644 pkg/infrastructure/jwt_svr/jwt.go create mode 100644 pkg/infrastructure/logger/log.go create mode 100644 pkg/infrastructure/middleware/Exception.go create mode 100644 pkg/infrastructure/middleware/middleware_svr.go create mode 100644 pkg/infrastructure/model/datax_link_info_model.go create mode 100644 pkg/infrastructure/model/datax_list_model.go create mode 100644 pkg/infrastructure/model/es_connect.go create mode 100644 pkg/infrastructure/model/es_link_model.go create mode 100644 pkg/infrastructure/model/eslink_cfg.go create mode 100644 pkg/infrastructure/model/eslink_role_cfg_reletion.go create mode 100644 pkg/infrastructure/model/gm_operater_log.go create mode 100644 pkg/infrastructure/model/gm_role.go create mode 100644 pkg/infrastructure/model/gm_role_eslink_cfg.go create mode 100644 pkg/infrastructure/model/gm_user.go create mode 100644 pkg/infrastructure/model/guid_model.go create mode 100644 pkg/infrastructure/model/user_role_relation.go create mode 100644 pkg/infrastructure/my_error/es_index.go create mode 100644 pkg/infrastructure/my_error/my_error.go create mode 100644 pkg/infrastructure/plugin_rpc/plugin_rpc_server.go create mode 100644 pkg/infrastructure/plugin_rpc/plugin_util.go create mode 100644 pkg/infrastructure/plugins/backendplugin/grpc_plugin/client.go create mode 100644 pkg/infrastructure/plugins/backendplugin/grpc_plugin/client_v2.go create mode 100644 pkg/infrastructure/plugins/backendplugin/grpc_plugin/grpc_plugin.go create mode 100644 pkg/infrastructure/plugins/backendplugin/grpc_plugin/log_wrapper.go create mode 100644 pkg/infrastructure/plugins/backendplugin/plugin.go create mode 100644 pkg/infrastructure/plugins/backendplugin/provider/provider.go create mode 100644 pkg/infrastructure/plugins/datasource.go create mode 100644 pkg/infrastructure/plugins/manager/interfaces.go create mode 100644 pkg/infrastructure/plugins/manager/plugin_manager.go create mode 100644 pkg/infrastructure/plugins/manager/process/ifaces.go create mode 100644 pkg/infrastructure/plugins/manager/process/process.go create mode 100644 pkg/infrastructure/plugins/plugin/plugin.go create mode 100644 pkg/infrastructure/pluginstore/plugin_store_service.go create mode 100644 pkg/infrastructure/process/process.go create mode 100644 pkg/infrastructure/process/root_check.go create mode 100644 pkg/infrastructure/process/root_check_windows.go create mode 100644 pkg/infrastructure/request/Request.go create mode 100644 pkg/infrastructure/response/response.go create mode 100644 pkg/infrastructure/sqlstore/gorm_log.go create mode 100644 pkg/infrastructure/sqlstore/migrator/migrator.go create mode 100644 pkg/infrastructure/sqlstore/orm.go create mode 100644 pkg/infrastructure/sqlstore/sqlite/ddlmod.go create mode 100644 pkg/infrastructure/sqlstore/sqlite/errors.go create mode 100644 pkg/infrastructure/sqlstore/sqlite/migrator.go create mode 100644 pkg/infrastructure/sqlstore/sqlite/sqlite.go create mode 100644 pkg/infrastructure/sqlstore/squirrel.go create mode 100644 pkg/infrastructure/sqlstore/svr_log/svr_log.go create mode 100644 pkg/infrastructure/vo/alias_info.go create mode 100644 pkg/infrastructure/vo/cat_index.go create mode 100644 pkg/infrastructure/vo/es_back.go create mode 100644 pkg/infrastructure/vo/es_link.go create mode 100644 pkg/infrastructure/vo/index_html.go create mode 100644 pkg/infrastructure/vo/oauth.go create mode 100644 pkg/infrastructure/vo/operater.go create mode 100644 pkg/infrastructure/vo/ping_result.go create mode 100644 pkg/infrastructure/vo/plugin_util.go create mode 100644 pkg/infrastructure/vo/snapshot.go create mode 100644 pkg/infrastructure/vo/sql2dsl.go create mode 100644 pkg/infrastructure/vo/task_info.go create mode 100644 pkg/infrastructure/vo/url_config.go create mode 100644 pkg/infrastructure/vo/user.go create mode 100644 pkg/infrastructure/vo/user_info.go create mode 100644 pkg/infrastructure/vo/ws.go create mode 100644 pkg/infrastructure/web_engine/web_engine.go create mode 100644 pkg/registry/registry.go create mode 100644 pkg/server/backgroundsvcs/background_services.go create mode 100644 pkg/server/generate.go create mode 100644 pkg/server/server.go create mode 100644 pkg/server/wire.go create mode 100644 pkg/server/wire_gen.go create mode 100644 pkg/services/cache_service/es_link_cache.go create mode 100644 pkg/services/es/es.go create mode 100644 pkg/services/es_link_service/es_link_service.go create mode 100644 pkg/services/es_service/es_service.go create mode 100644 pkg/services/eve_service/eve_service.go create mode 100644 pkg/services/gm_operater_log/gm_operater_log_service.go create mode 100644 pkg/services/gm_role/gm_role_service.go create mode 100644 pkg/services/gm_user/exception.go create mode 100644 pkg/services/gm_user/gm_user_service.go create mode 100644 pkg/services/oauth/idp.go create mode 100644 pkg/services/oauth/interfaces.go create mode 100644 pkg/services/oauth/utils/util.go create mode 100644 pkg/services/oauth/work_wechat.go create mode 100644 pkg/services/plugin_install_service/plugin_install_service.go create mode 100644 pkg/services/plugin_service/plugin_service.go create mode 100644 pkg/services/updatechecker/ev_update.go create mode 100644 pkg/services/updatechecker/plugins.go create mode 100644 pkg/services/ws_service/define.go create mode 100644 pkg/services/ws_service/heart.go create mode 100644 pkg/services/ws_service/ws_service.go create mode 100644 pkg/util/aes.go create mode 100644 pkg/util/array.go create mode 100644 pkg/util/cast.go create mode 100644 pkg/util/charset.go create mode 100644 pkg/util/config.go create mode 100644 pkg/util/dir.go create mode 100644 pkg/util/ecb.go create mode 100644 pkg/util/encoding.go create mode 100644 pkg/util/encoding_test.go create mode 100644 pkg/util/encryption.go create mode 100644 pkg/util/encryption_test.go create mode 100644 pkg/util/errors.go create mode 100644 pkg/util/excel.go create mode 100644 pkg/util/exec.go create mode 100644 pkg/util/exnet.go create mode 100644 pkg/util/filepath.go create mode 100644 pkg/util/filepath_test.go create mode 100644 pkg/util/gzip.go create mode 100644 pkg/util/hash.go create mode 100644 pkg/util/http.go create mode 100644 pkg/util/interface.go create mode 100644 pkg/util/ip.go create mode 100644 pkg/util/ip_address.go create mode 100644 pkg/util/ip_address_test.go create mode 100644 pkg/util/json.go create mode 100644 pkg/util/map.go create mode 100644 pkg/util/math.go create mode 100644 pkg/util/md5.go create mode 100644 pkg/util/md5_test.go create mode 100644 pkg/util/proxyutil/proxyutil.go create mode 100644 pkg/util/proxyutil/reverse_proxy.go create mode 100644 pkg/util/response/res.go create mode 100644 pkg/util/shortid_generator.go create mode 100644 pkg/util/shortid_generator_test.go create mode 100644 pkg/util/split_email.go create mode 100644 pkg/util/split_email_test.go create mode 100644 pkg/util/sql.go create mode 100644 pkg/util/strings.go create mode 100644 pkg/util/strings_test.go create mode 100644 pkg/util/sys.go create mode 100644 pkg/util/time.go create mode 100644 pkg/util/token.go create mode 100644 pkg/util/url.go create mode 100644 pkg/util/url_test.go create mode 100644 pkg/util/util.go create mode 100644 pkg/util/validation.go create mode 100644 pkg/util/validation_test.go create mode 100644 pkg/util/version.go create mode 100644 pkg/util/zip.go create mode 100644 pkg/web/es.go create mode 100644 pkg/web/es_link.go create mode 100644 pkg/web/manager_user.go create mode 100644 pkg/web/no_verification.go create mode 100644 pkg/web/operater_log.go create mode 100644 pkg/web/plugins.go create mode 100644 pkg/web/web_server.go create mode 100644 pkg/web/ws.go create mode 100644 resources/views/dist/css/401.CvIIrYMJ.css create mode 100644 resources/views/dist/css/404.CdPDqZCv.css create mode 100644 resources/views/dist/css/EsHeader.DxYu6_fD.css create mode 100644 resources/views/dist/css/apifox.DQAG05N_.css create mode 100644 resources/views/dist/css/auth.Ch64Sp5X.css create mode 100644 resources/views/dist/css/el-alert.CGNjtr_4.css create mode 100644 resources/views/dist/css/el-card.BJ3sbP9B.css create mode 100644 resources/views/dist/css/el-checkbox-group.B3ldtHxN.css create mode 100644 resources/views/dist/css/el-checkbox.BFZaSjz7.css create mode 100644 resources/views/dist/css/el-col.BP4dtlli.css create mode 100644 resources/views/dist/css/el-date-picker.DZdkGm2i.css create mode 100644 resources/views/dist/css/el-dialog.BCeqVwJ2.css create mode 100644 resources/views/dist/css/el-divider.DtiKewmW.css create mode 100644 resources/views/dist/css/el-drawer.CswTcYR2.css create mode 100644 resources/views/dist/css/el-form.Bw6vhIyH.css create mode 100644 resources/views/dist/css/el-image-viewer.DufDdbED.css create mode 100644 resources/views/dist/css/el-image.BrUZgf8Q.css create mode 100644 resources/views/dist/css/el-input-number.52TPlFlv.css create mode 100644 resources/views/dist/css/el-link.Dc88KzPr.css create mode 100644 resources/views/dist/css/el-loading.x7H6yciF.css create mode 100644 resources/views/dist/css/el-pagination.EEgK1E05.css create mode 100644 resources/views/dist/css/el-popover.BXo9j6C6.css create mode 100644 resources/views/dist/css/el-popper.8rcjPMiY.css create mode 100644 resources/views/dist/css/el-progress.BISVJXDI.css create mode 100644 resources/views/dist/css/el-radio.kPKi7vSu.css create mode 100644 resources/views/dist/css/el-scrollbar.DgVM_IK3.css create mode 100644 resources/views/dist/css/el-select.DiVaJgmx.css create mode 100644 resources/views/dist/css/el-switch.BhrVVMax.css create mode 100644 resources/views/dist/css/el-tab-pane.99T6i4TO.css create mode 100644 resources/views/dist/css/el-table-column.Ds_oPOdx.css create mode 100644 resources/views/dist/css/el-tag.5TqU4q48.css create mode 100644 resources/views/dist/css/el-text.CjuDOozN.css create mode 100644 resources/views/dist/css/el-tree-select.BC9u6a6J.css create mode 100644 resources/views/dist/css/el-tree.LD6oLcSu.css create mode 100644 resources/views/dist/css/icons.Fl2phYMx.css create mode 100644 resources/views/dist/css/index.7eDotrm1.css create mode 100644 resources/views/dist/css/index.BDEJCyCm.css create mode 100644 resources/views/dist/css/index.BFuNDnEk.css create mode 100644 resources/views/dist/css/index.BU3Oya2i.css create mode 100644 resources/views/dist/css/index.Bp03AT9Z.css create mode 100644 resources/views/dist/css/index.Bv77CJl9.css create mode 100644 resources/views/dist/css/index.CC3X2lTN.css create mode 100644 resources/views/dist/css/index.VhSqXR7Y.css create mode 100644 resources/views/dist/css/index.gIaAfrbD.css create mode 100644 resources/views/dist/css/internal-doc.Dysg9Ov1.css create mode 100644 resources/views/dist/css/knife4j.C9A4iUYs.css create mode 100644 resources/views/dist/css/market.BWh6NZB6.css create mode 100644 resources/views/dist/css/operater_log.CGpmyHFe.css create mode 100644 resources/views/dist/css/role.Dqt6WeBM.css create mode 100644 resources/views/dist/css/signature.rZpWOn9R.css create mode 100644 resources/views/dist/css/swagger.DXKrmNde.css create mode 100644 resources/views/dist/css/upload.w_PWxPc-.css create mode 100644 resources/views/dist/css/user.DPk9CuZD.css create mode 100644 resources/views/dist/css/wang-editor.ClYh1QsV.css create mode 100644 resources/views/dist/css/websocket.DEx0kJFa.css create mode 100644 resources/views/dist/favicon.ico create mode 100644 resources/views/dist/img/401.DaBJYOxp.gif create mode 100644 resources/views/dist/img/404.D6_y3Jr2.png create mode 100644 resources/views/dist/img/login-background-dark.BfPFE40x.jpg create mode 100644 resources/views/dist/img/login-background-light.CKlK6emc.jpg create mode 100644 resources/views/dist/img/login_bg.BzmVCLXR.png create mode 100644 resources/views/dist/img/logo.BlrjUcG7.png create mode 100644 resources/views/dist/img/work_wechat.zTPxZRB-.png create mode 100644 resources/views/dist/index.html create mode 100644 resources/views/dist/js/401.Diq3Y6E6.js create mode 100644 resources/views/dist/js/404.DKSrrdbO.js create mode 100644 resources/views/dist/js/EsDashbord.BAS1EnKw.js create mode 100644 resources/views/dist/js/EsDashbord.vue_vue_type_script_setup_true_lang.BD2_WPlk.js create mode 100644 resources/views/dist/js/EsHeader.BozPtybD.js create mode 100644 resources/views/dist/js/_Uint8Array.BEOPqGcx.js create mode 100644 resources/views/dist/js/_commonjs-dynamic-modules.BHR_E30J.js create mode 100644 resources/views/dist/js/_plugin-vue_export-helper.BCo6x5W8.js create mode 100644 resources/views/dist/js/api-rbac.BkPPKqLP.js create mode 100644 resources/views/dist/js/api.B2FJMEEY.js create mode 100644 resources/views/dist/js/apifox.wqbLB8iE.js create mode 100644 resources/views/dist/js/auth.Bn4YvWL7.js create mode 100644 resources/views/dist/js/backtop.C5bGCvZX.js create mode 100644 resources/views/dist/js/captcha.KixZeTLs.js create mode 100644 resources/views/dist/js/cascader.Bxy7lIuJ.js create mode 100644 resources/views/dist/js/castArray.arHVDzqw.js create mode 100644 resources/views/dist/js/client.fwafuIJ_.js create mode 100644 resources/views/dist/js/close.3A3CTE27.js create mode 100644 resources/views/dist/js/close_all.CpAPdWg9.js create mode 100644 resources/views/dist/js/close_left.FPCWsnfT.js create mode 100644 resources/views/dist/js/close_other.CtMgS35C.js create mode 100644 resources/views/dist/js/close_right.WYLOaSAD.js create mode 100644 resources/views/dist/js/collapse.ROHmwAah.js create mode 100644 resources/views/dist/js/debounce.l44evi-0.js create mode 100644 resources/views/dist/js/delete.CrlEmVes.js create mode 100644 resources/views/dist/js/dept-tree.DBPM0br8.js create mode 100644 resources/views/dist/js/dept-tree.vue_vue_type_script_setup_true_lang.DonqNhHi.js create mode 100644 resources/views/dist/js/dept.o4EvKKVx.js create mode 100644 resources/views/dist/js/dict.Bl25h5Gq.js create mode 100644 resources/views/dist/js/dict.BlxtrVRf.js create mode 100644 resources/views/dist/js/dict.CNA62ktp.js create mode 100644 resources/views/dist/js/document.DqID0E9P.js create mode 100644 resources/views/dist/js/download.BcBrriOr.js create mode 100644 resources/views/dist/js/dropdown.Dka1h-m0.js create mode 100644 resources/views/dist/js/el-alert.oASVj8Ze.js create mode 100644 resources/views/dist/js/el-card.BhvZLWwX.js create mode 100644 resources/views/dist/js/el-checkbox.8MJHthul.js create mode 100644 resources/views/dist/js/el-col.DOWhjITg.js create mode 100644 resources/views/dist/js/el-date-picker.BPCW1w6T.js create mode 100644 resources/views/dist/js/el-dialog.DGaSOiRM.js create mode 100644 resources/views/dist/js/el-divider.CoJV5nts.js create mode 100644 resources/views/dist/js/el-drawer.CpqknkfB.js create mode 100644 resources/views/dist/js/el-form-item.l0sNRNKZ.js create mode 100644 resources/views/dist/js/el-form.DUR-mZNt.js create mode 100644 resources/views/dist/js/el-image-viewer.CSeiPfXQ.js create mode 100644 resources/views/dist/js/el-image.DM0ttR5m.js create mode 100644 resources/views/dist/js/el-input-number.zcrW3MHJ.js create mode 100644 resources/views/dist/js/el-link.7KZopgR8.js create mode 100644 resources/views/dist/js/el-pagination.CQTA1hq1.js create mode 100644 resources/views/dist/js/el-popover.OX4vypnS.js create mode 100644 resources/views/dist/js/el-popper.Cb3Eus9m.js create mode 100644 resources/views/dist/js/el-progress.BF08Xthz.js create mode 100644 resources/views/dist/js/el-radio.B-TDguQR.js create mode 100644 resources/views/dist/js/el-scrollbar.BJ_tYB1D.js create mode 100644 resources/views/dist/js/el-select.C9ddzdnq.js create mode 100644 resources/views/dist/js/el-switch.BvIaL9AI.js create mode 100644 resources/views/dist/js/el-tab-pane.Dc62g1GH.js create mode 100644 resources/views/dist/js/el-table-column.Dl1jn1Bd.js create mode 100644 resources/views/dist/js/el-text.8E8aFHxr.js create mode 100644 resources/views/dist/js/el-tooltip.l0sNRNKZ.js create mode 100644 resources/views/dist/js/el-tree-select.BGIuc0mE.js create mode 100644 resources/views/dist/js/el-tree.UTBgh5GW.js create mode 100644 resources/views/dist/js/es.Bcp-0uIV.js create mode 100644 resources/views/dist/js/file.CkIRLx9T.js create mode 100644 resources/views/dist/js/fullscreen-exit.DXwCcaMo.js create mode 100644 resources/views/dist/js/fullscreen.dczNRBeD.js create mode 100644 resources/views/dist/js/github.DLO2QQQy.js create mode 100644 resources/views/dist/js/homepage.BcyYp1IG.js create mode 100644 resources/views/dist/js/icon-selector.DE8gSAgB.js create mode 100644 resources/views/dist/js/icons.0j-KsJXn.js create mode 100644 resources/views/dist/js/index.3nOPQnwv.js create mode 100644 resources/views/dist/js/index.B-hlu3LH.js create mode 100644 resources/views/dist/js/index.B5LP4W1V.js create mode 100644 resources/views/dist/js/index.B6fdKp2E.js create mode 100644 resources/views/dist/js/index.B_yc3eBb.js create mode 100644 resources/views/dist/js/index.CP01f_MK.js create mode 100644 resources/views/dist/js/index.CVv0gcjf.js create mode 100644 resources/views/dist/js/index.CgxzQhlt.js create mode 100644 resources/views/dist/js/index.DBfl569D.js create mode 100644 resources/views/dist/js/index.DCoBgS8Y.js create mode 100644 resources/views/dist/js/index.DMBpWXpT.js create mode 100644 resources/views/dist/js/index.DrLk8lye.js create mode 100644 resources/views/dist/js/index.ES2wPbsk.js create mode 100644 resources/views/dist/js/index.OICg9GcR.js create mode 100644 resources/views/dist/js/index.R54cooZL.js create mode 100644 resources/views/dist/js/index.SwBASKCc.js create mode 100644 resources/views/dist/js/index.SyZ-sAxM.js create mode 100644 resources/views/dist/js/index.lMfFSmY8.js create mode 100644 resources/views/dist/js/index.qeCV5ckY.js create mode 100644 resources/views/dist/js/index.tvUbLRs9.js create mode 100644 resources/views/dist/js/index.vue_vue_type_script_setup_true_lang.CqBp_XYA.js create mode 100644 resources/views/dist/js/index.vue_vue_type_script_setup_true_lang.u9qT2mYo.js create mode 100644 resources/views/dist/js/index.wrq3oQhC.js create mode 100644 resources/views/dist/js/internal-doc.DmL46gxE.js create mode 100644 resources/views/dist/js/ip.NBim6PQ8.js create mode 100644 resources/views/dist/js/isEqual.B61-3bNT.js create mode 100644 resources/views/dist/js/isUndefined.DgmxjSXK.js create mode 100644 resources/views/dist/js/knife4j.BQHvDfXA.js create mode 100644 resources/views/dist/js/language.k0ZPy50U.js create mode 100644 resources/views/dist/js/level1.CTwj1DQS.js create mode 100644 resources/views/dist/js/level2.DgBfXfTl.js create mode 100644 resources/views/dist/js/level3-1.OLQvDptA.js create mode 100644 resources/views/dist/js/level3-2.DhL6Xgpc.js create mode 100644 resources/views/dist/js/link.DiUzVB7Z.js create mode 100644 resources/views/dist/js/market.CHHjOpBP.js create mode 100644 resources/views/dist/js/menu.CSAxtYMZ.js create mode 100644 resources/views/dist/js/message.CTraJOIE.js create mode 100644 resources/views/dist/js/monitor.Cm5WDh5_.js create mode 100644 resources/views/dist/js/oauth.Bng1BCw1.js create mode 100644 resources/views/dist/js/oauth.vue_vue_type_script_setup_true_lang.DbnOqKxM.js create mode 100644 resources/views/dist/js/operater_log.c4ZyDKxO.js create mode 100644 resources/views/dist/js/other.PTgD1G_4.js create mode 100644 resources/views/dist/js/plugins.BcScPyxj.js create mode 100644 resources/views/dist/js/plus.BhbEy4-l.js create mode 100644 resources/views/dist/js/position.CIWFjaHr.js create mode 100644 resources/views/dist/js/project.CAkqf0A3.js create mode 100644 resources/views/dist/js/pv.oj4_s-Zv.js create mode 100644 resources/views/dist/js/question-filled.8tGWrj00.js create mode 100644 resources/views/dist/js/refresh.B5ExwFoE.js create mode 100644 resources/views/dist/js/refresh.BxJIPU5v.js create mode 100644 resources/views/dist/js/refs.BiRbkTK3.js create mode 100644 resources/views/dist/js/role.BVYrj-EL.js create mode 100644 resources/views/dist/js/role.BZhV-890.js create mode 100644 resources/views/dist/js/role.DDpGZwDf.js create mode 100644 resources/views/dist/js/route-param.CnBOQ5EZ.js create mode 100644 resources/views/dist/js/search.DdQbLJWh.js create mode 100644 resources/views/dist/js/setting.CfydkD5J.js create mode 100644 resources/views/dist/js/signature.fGsK1tnl.js create mode 100644 resources/views/dist/js/size.C48ZYpz_.js create mode 100644 resources/views/dist/js/strings.DeQ3Zoz4.js create mode 100644 resources/views/dist/js/swagger.BK8ZmUGU.js create mode 100644 resources/views/dist/js/system.BjyKXCM4.js create mode 100644 resources/views/dist/js/table.C6Xt0YCE.js create mode 100644 resources/views/dist/js/todo.C6Ti5UL0.js create mode 100644 resources/views/dist/js/token.DWNpOE8r.js create mode 100644 resources/views/dist/js/tree.ByH7Oq4A.js create mode 100644 resources/views/dist/js/upload.DYbCoZtY.js create mode 100644 resources/views/dist/js/use-dialog.CoOh9qjD.js create mode 100644 resources/views/dist/js/user-import.fAKgRM7z.js create mode 100644 resources/views/dist/js/user-import.vue_vue_type_script_setup_true_lang.Cqs-TTBJ.js create mode 100644 resources/views/dist/js/user.rrOxQVjB.js create mode 100644 resources/views/dist/js/user.y-CSH6zA.js create mode 100644 resources/views/dist/js/uv.DYcf65LN.js create mode 100644 resources/views/dist/js/wang-editor.DK0fpScR.js create mode 100644 resources/views/dist/js/websocket.iBs7fvfo.js create mode 100644 resources/views/fs.go create mode 100644 resources/vue/.editorconfig create mode 100644 resources/vue/.env.development create mode 100644 resources/vue/.env.production create mode 100644 resources/vue/.eslintignore create mode 100644 resources/vue/.eslintrc-auto-import.json create mode 100644 resources/vue/.eslintrc.cjs create mode 100644 resources/vue/.gitignore create mode 100644 resources/vue/.husky/commit-msg create mode 100644 resources/vue/.husky/pre-commit create mode 100644 resources/vue/.prettierignore create mode 100644 resources/vue/.prettierrc.cjs create mode 100644 resources/vue/.stylelintignore create mode 100644 resources/vue/.stylelintrc.cjs create mode 100644 resources/vue/.vscode/extensions.json create mode 100644 resources/vue/.vscode/settings.json create mode 100644 resources/vue/.vscode/vue3.0.code-snippets create mode 100644 resources/vue/.vscode/vue3.2.code-snippets create mode 100644 resources/vue/.vscode/vue3.3.code-snippets create mode 100644 resources/vue/CHANGELOG.md create mode 100644 resources/vue/LICENSE create mode 100644 resources/vue/README.en-US.md create mode 100644 resources/vue/README.md create mode 100644 resources/vue/commitlint.config.cjs create mode 100644 resources/vue/index.html create mode 100644 resources/vue/licenses/vue-element-admin/LICENSE create mode 100644 resources/vue/licenses/vue3-element-admin/LICENSE create mode 100644 resources/vue/mock/auth.mock.ts create mode 100644 resources/vue/mock/base.ts create mode 100644 resources/vue/mock/dept.mock.ts create mode 100644 resources/vue/mock/dict.mock.ts create mode 100644 resources/vue/mock/log.mock.ts create mode 100644 resources/vue/mock/menu.mock.ts create mode 100644 resources/vue/mock/role.mock.ts create mode 100644 resources/vue/mock/user.mock.ts create mode 100644 resources/vue/npminstall-debug.log create mode 100644 resources/vue/package.json create mode 100644 resources/vue/public/favicon.ico create mode 100644 resources/vue/src/App.vue create mode 100644 resources/vue/src/api/api-rbac.ts create mode 100644 resources/vue/src/api/auth.ts create mode 100644 resources/vue/src/api/es-link.ts create mode 100644 resources/vue/src/api/es.ts create mode 100644 resources/vue/src/api/i18n.ts create mode 100644 resources/vue/src/api/menu.ts create mode 100644 resources/vue/src/api/operate.ts create mode 100644 resources/vue/src/api/plugin.js create mode 100644 resources/vue/src/api/plugins.ts create mode 100644 resources/vue/src/api/role.ts create mode 100644 resources/vue/src/api/user.ts create mode 100644 resources/vue/src/assets/icons/api.svg create mode 100644 resources/vue/src/assets/icons/backtop.svg create mode 100644 resources/vue/src/assets/icons/captcha.svg create mode 100644 resources/vue/src/assets/icons/cascader.svg create mode 100644 resources/vue/src/assets/icons/client.svg create mode 100644 resources/vue/src/assets/icons/close.svg create mode 100644 resources/vue/src/assets/icons/close_all.svg create mode 100644 resources/vue/src/assets/icons/close_left.svg create mode 100644 resources/vue/src/assets/icons/close_other.svg create mode 100644 resources/vue/src/assets/icons/close_right.svg create mode 100644 resources/vue/src/assets/icons/collapse.svg create mode 100644 resources/vue/src/assets/icons/dict.svg create mode 100644 resources/vue/src/assets/icons/document.svg create mode 100644 resources/vue/src/assets/icons/download.svg create mode 100644 resources/vue/src/assets/icons/fullscreen-exit.svg create mode 100644 resources/vue/src/assets/icons/fullscreen.svg create mode 100644 resources/vue/src/assets/icons/github.svg create mode 100644 resources/vue/src/assets/icons/homepage.svg create mode 100644 resources/vue/src/assets/icons/ip.svg create mode 100644 resources/vue/src/assets/icons/language.svg create mode 100644 resources/vue/src/assets/icons/menu.svg create mode 100644 resources/vue/src/assets/icons/message.svg create mode 100644 resources/vue/src/assets/icons/monitor.svg create mode 100644 resources/vue/src/assets/icons/project.svg create mode 100644 resources/vue/src/assets/icons/pv.svg create mode 100644 resources/vue/src/assets/icons/refresh.svg create mode 100644 resources/vue/src/assets/icons/role.svg create mode 100644 resources/vue/src/assets/icons/setting.svg create mode 100644 resources/vue/src/assets/icons/size.svg create mode 100644 resources/vue/src/assets/icons/system.svg create mode 100644 resources/vue/src/assets/icons/table.svg create mode 100644 resources/vue/src/assets/icons/todo.svg create mode 100644 resources/vue/src/assets/icons/tree.svg create mode 100644 resources/vue/src/assets/icons/user.svg create mode 100644 resources/vue/src/assets/icons/uv.svg create mode 100644 resources/vue/src/assets/images/401.gif create mode 100644 resources/vue/src/assets/images/404.png create mode 100644 resources/vue/src/assets/images/404_cloud.png create mode 100644 resources/vue/src/assets/images/img.png create mode 100644 resources/vue/src/assets/images/login-background-dark.jpg create mode 100644 resources/vue/src/assets/images/login-background-light.jpg create mode 100644 resources/vue/src/assets/images/login_bg.png create mode 100644 resources/vue/src/assets/images/login_bg.svg create mode 100644 resources/vue/src/assets/images/work_wechat.png create mode 100644 resources/vue/src/assets/logo.png create mode 100644 resources/vue/src/components/AppLink/index.vue create mode 100644 resources/vue/src/components/Breadcrumb/index.vue create mode 100644 resources/vue/src/components/CURD/PageContent.vue create mode 100644 resources/vue/src/components/CURD/PageForm.vue create mode 100644 resources/vue/src/components/CURD/PageModal.vue create mode 100644 resources/vue/src/components/CURD/PageSearch.vue create mode 100644 resources/vue/src/components/CURD/types.ts create mode 100644 resources/vue/src/components/CURD/usePage.ts create mode 100644 resources/vue/src/components/CopyButton/index.vue create mode 100644 resources/vue/src/components/Date/index.vue create mode 100644 resources/vue/src/components/Dictionary/index.vue create mode 100644 resources/vue/src/components/GithubCorner/index.vue create mode 100644 resources/vue/src/components/Hamburger/index.vue create mode 100644 resources/vue/src/components/IconSelect/index.vue create mode 100644 resources/vue/src/components/ImportEvKey/index.vue create mode 100644 resources/vue/src/components/LangSelect/index.vue create mode 100644 resources/vue/src/components/MarkDownView/index.vue create mode 100644 resources/vue/src/components/MenuSelect/index.vue create mode 100644 resources/vue/src/components/Pagination/index.vue create mode 100644 resources/vue/src/components/SelectLink/index.vue create mode 100644 resources/vue/src/components/SizeSelect/index.vue create mode 100644 resources/vue/src/components/SvgIcon/index.vue create mode 100644 resources/vue/src/components/TableSelect/index.vue create mode 100644 resources/vue/src/components/Upload/ImageUpload.vue create mode 100644 resources/vue/src/components/Upload/SingleUpload.vue create mode 100644 resources/vue/src/components/WangEditor/index.vue create mode 100644 resources/vue/src/directive/index.ts create mode 100644 resources/vue/src/directive/permission/index.ts create mode 100644 resources/vue/src/enums/CacheEnum.ts create mode 100644 resources/vue/src/enums/DeviceEnum.ts create mode 100644 resources/vue/src/enums/LanguageEnum.ts create mode 100644 resources/vue/src/enums/LayoutEnum.ts create mode 100644 resources/vue/src/enums/MenuTypeEnum.ts create mode 100644 resources/vue/src/enums/MessageTypeEnum.ts create mode 100644 resources/vue/src/enums/NoticeTypeEnum.ts create mode 100644 resources/vue/src/enums/ResultEnum.ts create mode 100644 resources/vue/src/enums/SidebarStatusEnum.ts create mode 100644 resources/vue/src/enums/SizeEnum.ts create mode 100644 resources/vue/src/enums/ThemeEnum.ts create mode 100644 resources/vue/src/lang/index.ts create mode 100644 resources/vue/src/lang/package/en.ts create mode 100644 resources/vue/src/lang/package/zh-cn.ts create mode 100644 resources/vue/src/layout/components/AppMain/index.vue create mode 100644 resources/vue/src/layout/components/NavBar/components/NavbarAction.vue create mode 100644 resources/vue/src/layout/components/NavBar/index.vue create mode 100644 resources/vue/src/layout/components/Settings/components/LayoutSelect.vue create mode 100644 resources/vue/src/layout/components/Settings/components/ThemeColorPicker.vue create mode 100644 resources/vue/src/layout/components/Settings/index.vue create mode 100644 resources/vue/src/layout/components/Sidebar/components/SidebarLogo.vue create mode 100644 resources/vue/src/layout/components/Sidebar/components/SidebarMenu.vue create mode 100644 resources/vue/src/layout/components/Sidebar/components/SidebarMenuItem.vue create mode 100644 resources/vue/src/layout/components/Sidebar/components/SidebarMenuItemTitle.vue create mode 100644 resources/vue/src/layout/components/Sidebar/components/SidebarMixTopMenu.vue create mode 100644 resources/vue/src/layout/components/Sidebar/index.vue create mode 100644 resources/vue/src/layout/components/TagsView/index.vue create mode 100644 resources/vue/src/layout/index.vue create mode 100644 resources/vue/src/main.ts create mode 100644 resources/vue/src/plugins/icons.ts create mode 100644 resources/vue/src/plugins/index.ts create mode 100644 resources/vue/src/plugins/permission.ts create mode 100644 resources/vue/src/router/index.ts create mode 100644 resources/vue/src/settings.ts create mode 100644 resources/vue/src/store/index.ts create mode 100644 resources/vue/src/store/modules/app.ts create mode 100644 resources/vue/src/store/modules/permission.ts create mode 100644 resources/vue/src/store/modules/settings.ts create mode 100644 resources/vue/src/store/modules/tagsView.ts create mode 100644 resources/vue/src/store/modules/user.ts create mode 100644 resources/vue/src/styles/index.scss create mode 100644 resources/vue/src/styles/login.scss create mode 100644 resources/vue/src/styles/reset.scss create mode 100644 resources/vue/src/styles/variables.module.scss create mode 100644 resources/vue/src/styles/variables.scss create mode 100644 resources/vue/src/types/auto-imports.d.ts create mode 100644 resources/vue/src/types/components.d.ts create mode 100644 resources/vue/src/types/env.d.ts create mode 100644 resources/vue/src/types/global.d.ts create mode 100644 resources/vue/src/types/router.d.ts create mode 100644 resources/vue/src/types/socket.d.ts create mode 100644 resources/vue/src/utils/asyncRoutes.ts create mode 100644 resources/vue/src/utils/auth.ts create mode 100644 resources/vue/src/utils/clipboard.ts create mode 100644 resources/vue/src/utils/es_link.ts create mode 100644 resources/vue/src/utils/i18n.ts create mode 100644 resources/vue/src/utils/index.ts create mode 100644 resources/vue/src/utils/monaco.ts create mode 100644 resources/vue/src/utils/nprogress.ts create mode 100644 resources/vue/src/utils/plugin.ts create mode 100644 resources/vue/src/utils/request.ts create mode 100644 resources/vue/src/views/connect-tree/EsHeader.vue create mode 100644 resources/vue/src/views/connect-tree/auth.vue create mode 100644 resources/vue/src/views/connect-tree/link.vue create mode 100644 resources/vue/src/views/dashboard/components/EsDashbord.vue create mode 100644 resources/vue/src/views/dashboard/index.vue create mode 100644 resources/vue/src/views/error-page/401.vue create mode 100644 resources/vue/src/views/error-page/404.vue create mode 100644 resources/vue/src/views/login/index.vue create mode 100644 resources/vue/src/views/permission/oauth.vue create mode 100644 resources/vue/src/views/permission/operater_log.vue create mode 100644 resources/vue/src/views/permission/role.vue create mode 100644 resources/vue/src/views/permission/user.vue create mode 100644 resources/vue/src/views/plugins/market.vue create mode 100644 resources/vue/src/views/redirect/index.vue create mode 100644 resources/vue/tsconfig.json create mode 100644 resources/vue/uno.config.ts create mode 100644 resources/vue/vite.config.ts create mode 100644 testing/ev_back_dao_test.go create mode 100644 testing/logs/ev/info.log.20240914 create mode 100644 testing/logs/ev/info.log.20241022 diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..421184b --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +/views/ \ No newline at end of file diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..ec4740d --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.vue linguist-language=Go diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..833dbf0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +resources/vue/node_moudules +/logs/ diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..1c2fda5 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/ev2.iml b/.idea/ev2.iml new file mode 100644 index 0000000..338a266 --- /dev/null +++ b/.idea/ev2.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..7c4836f --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..7c856aa --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..06bf206 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,25 @@ +# 使用基础镜像,比如 alpine 或者 debian,alpine 体积较小 +FROM alpine:latest + +VOLUME /app/config +VOLUME /app/data +VOLUME /app/logs +VOLUME /app/plugins +VOLUME /app/plugin_store +VOLUME /app/plugin_logs +VOLUME /app/store_file_dir + +# 设置工作目录 +WORKDIR /app + +# 将本地的二进制文件和配置文件复制到容器中 +COPY ev_linux_amd64 /app/ +COPY config /app/config/ + +# 确保二进制文件有可执行权限 +RUN chmod +x /app/ev_linux_amd64 + +EXPOSE 8090 + +# 定义容器启动时执行的命令 +CMD ["./ev_linux_amd64", "-configFile=config/config.yml"] diff --git a/cmd/build_ev/main.go b/cmd/build_ev/main.go new file mode 100644 index 0000000..281df3c --- /dev/null +++ b/cmd/build_ev/main.go @@ -0,0 +1,221 @@ +package main + +import ( + "bufio" + "flag" + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/util" + "github.com/pkg/errors" + _ "net/http/pprof" + "os" + "os/exec" + "path/filepath" + "strings" +) + +var args *config.CommandLineArgs + +func init() { + args = &config.CommandLineArgs{} + flag.StringVar(&args.HomePath, "homePath", util.GetCurrentDirectory(), "ev程序所在文件夹") + flag.StringVar(&args.CmdName, "cmdName", "build", "二进制名称") + flag.StringVar(&args.ConfigFile, "configFile", "config/config.yml", "配置文件路径") + flag.Parse() +} + +func main() { + cfg, err := config.InitConfig(args) + if err != nil { + fmt.Println("InitConfig err", err) + panic(err) + } + + err = BuildVue(cfg) + if err != nil { + fmt.Println("BuildVue err", err) + panic(err) + } + + outputZipPath := fmt.Sprintf("resources/dist/ev_%s", strings.ReplaceAll(cfg.Version, ".", "_")) + + err = util.WriteVersionGoFile(fmt.Sprintf(`package config + +const Version = "v%s" + +`, cfg.Version)) + + if err != nil { + fmt.Println("BuildVue err", err) + panic(err) + } + + fmt.Println("开始检测是否已有该版本打包", cfg.Version) + if util.CheckFileIsExist(outputZipPath) { + fmt.Println("检测到已经该版本打包,正在删除老包", cfg.Version) + os.RemoveAll(outputZipPath) + } else { + fmt.Println("暂无该版本打包") + } + + for _, osAndArch := range []string{ + "linux_arm64", + "linux_amd64", + "darwin_amd64", + "windows_amd64", + } { + osAndArchArr := strings.Split(osAndArch, "_") + os := osAndArchArr[0] + arch := osAndArchArr[1] + err = BuildEvSvr(cfg, os, arch) + if err != nil { + fmt.Println("BuildEvSvr err", err) + panic(err) + } + } + + fmt.Println("BuildEvSvr success") +} + +type BuildConfig struct { + OS string // GOOS + GOARCH string + Env map[string]string + OutputPath string +} + +func getExecutableName(os, arch string) (string, error) { + exname := "ev" + + exeName := fmt.Sprintf("%s_%s_%s", exname, os, arch) + if os == "windows" { + exeName = fmt.Sprintf("%s.exe", exeName) + } + return exeName, nil +} + +func buildBackend(cfg BuildConfig) error { + + exeName, err := getExecutableName(cfg.OS, cfg.GOARCH) + if err != nil { + return err + } + + //-H windowsgui + ldFlags := fmt.Sprintf("-w -s%s%s ", " ", `-extldflags "-static"`) + + /*if cfg.OS == "windows" { + ldFlags = fmt.Sprintf("-w -s%s%s -H windowsgui", " ", `-extldflags "-static"`) + }*/ + + outputPath := cfg.OutputPath + + args := []string{ + "build", "-o", filepath.Join(outputPath, exeName), + } + + args = append(args, "-ldflags", ldFlags) + + rootPackage := "./cmd/ev" + + args = append(args, rootPackage) + + cfg.Env["GOOS"] = cfg.OS + cfg.Env["CGO_ENABLED"] = "0" + cfg.Env["GOARCH"] = cfg.GOARCH + return RunGoBuild(cfg.Env, args...) +} + +func newBuildConfig(os, arch, outputPath string) BuildConfig { + return BuildConfig{ + OS: os, + GOARCH: arch, + OutputPath: outputPath, + Env: map[string]string{}, + } +} + +func BuildVue(cfg *config.Config) (err error) { + cmd := exec.Command("npm", "run", "build") + cmd.Dir = "resources/vue" + + stdout, err := cmd.StdoutPipe() + if err != nil { + return errors.WithStack(err) + } + if err = cmd.Start(); err != nil { + return errors.WithStack(err) + } + scanner := bufio.NewScanner(stdout) + fmt.Println("=================build vue================") + + for scanner.Scan() { + fmt.Println(scanner.Text()) + } + if err = cmd.Wait(); err != nil { + return errors.WithStack(err) + } + + return +} + +func BuildEvSvr(cfg *config.Config, buildOs, buildArch string) (err error) { + + fmt.Println("开始编译ev二进制文件,版本:", cfg.Version, buildOs, buildArch) + + outputPath := fmt.Sprintf("resources/dist/ev_%s_%s_%s", cfg.Version, buildOs, buildArch) + + err = buildBackend(newBuildConfig(buildOs, buildArch, outputPath)) + if err != nil { + return + } + + os.MkdirAll(filepath.Join(outputPath, "config"), os.ModePerm) + err = util.DirCopy("config", filepath.Join(outputPath, "config")) + if err != nil { + return + } + + versionString := strings.ReplaceAll(cfg.Version, ".", "_") + + outputZipPath := fmt.Sprintf("resources/dist/ev_%s", versionString) + + fmt.Println("开始打包", cfg.Version, buildOs, buildArch) + + os.MkdirAll(outputZipPath, os.ModePerm) + + outputZip := filepath.Join(outputZipPath, fmt.Sprintf("ev_%s_%s_%s.zip", versionString, buildOs, buildArch)) + + err = util.CompressPathToZip(outputPath, outputZip) + if err != nil { + return + } + fmt.Println("打包成功,开始清理临时文件", cfg.Version, buildOs, buildArch) + os.RemoveAll(outputPath) + fmt.Println("清理临时文件完毕") + + return +} + +func RunGoBuild(env map[string]string, args ...string) (err error) { + if len(env) > 0 { + envArr := []string{"env", "-w"} + for k, v := range env { + envArr = append(envArr, fmt.Sprintf("%s=%s", k, v)) + } + + fmt.Println(fmt.Sprintf("start build cmd: go %v", envArr)) + + cmd := exec.Command("go", envArr...) + + err = cmd.Run() + if err != nil { + return + } + } + + fmt.Println(fmt.Sprintf("start build cmd: go %v", args)) + cmd := exec.Command("go", args...) + err = cmd.Run() + return +} diff --git a/cmd/ev/main.go b/cmd/ev/main.go new file mode 100644 index 0000000..25f244a --- /dev/null +++ b/cmd/ev/main.go @@ -0,0 +1,98 @@ +package main + +import ( + "context" + _ "embed" + "flag" + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/server" + "github.com/1340691923/ElasticView/pkg/util" + "log" + _ "net/http/pprof" + "os" + "os/signal" + "syscall" + "time" +) + +var args *config.CommandLineArgs + +func init() { + args = &config.CommandLineArgs{} + flag.StringVar(&args.HomePath, "homePath", util.GetCurrentDirectory(), "ev程序所在文件夹") + flag.StringVar(&args.CmdName, "cmdName", "ev", "二进制名称") + flag.StringVar(&args.ConfigFile, "configFile", "config/config.yml", "配置文件路径") + flag.StringVar(&args.AdminPwd, "adminPwd", "", "需要重置的管理员密码") + flag.Parse() +} + +// @title ElasticView +// @description 励志成为陪伴你一生的elasticsearch可视化客户端 + +// @contact.name 肖文龙 +// @contact.url http://www.elastic-view.cn/suporrt.html +// @contact.email 1340691923@qq.com + +// @license.name Apache 2.0 +// @license.url http://www.apache.org/licenses/LICENSE-2.0.html +func main() { + + svr, err := server.Initialize(args) + if err != nil { + log.Println(fmt.Sprintf("初始化ev失败:%+v", err)) + panic(err) + } + if args.AdminPwd != "" { + err = svr.ResetAdminPwd(args.AdminPwd) + if err != nil { + log.Println(fmt.Sprintf("初始化管理员密码失败:%+v", err)) + panic(err) + } + log.Println(fmt.Sprintf("初始化管理员密码成功")) + return + } + + err = svr.RunMigrator() + if err != nil { + log.Println(fmt.Sprintf("初始化ev失败:%+v", err)) + panic(err) + } + svr.InitSwagger() + err = svr.Init() + if err != nil { + log.Println(fmt.Sprintf("初始化ev失败:%+v", err)) + panic(err) + } + + go listenToSystemSignals(context.Background(), svr) + + if err = svr.Run(func(svr *server.Server) error { + log.Println("服务退出成功") + return nil + }, func(svr *server.Server) error { + return svr.CloseLog() + }); err != nil { + log.Println("启动EV失败") + panic(err) + } +} + +func listenToSystemSignals(ctx context.Context, s *server.Server) { + signalChan := make(chan os.Signal, 1) + + signal.Notify(signalChan, os.Interrupt, syscall.SIGTERM) + + for { + select { + case <-signalChan: + ctx, cancel := context.WithTimeout(ctx, 30*time.Second) + defer cancel() + if err := s.Shutdown(ctx); err != nil { + log.Println(fmt.Sprintf("%+v", err)) + fmt.Fprintf(os.Stderr, "ev服务关闭超时\n") + } + return + } + } +} diff --git a/config/config.yml b/config/config.yml new file mode 100644 index 0000000..229c5a3 --- /dev/null +++ b/config/config.yml @@ -0,0 +1,40 @@ +log: + storageDays: 4 # 日志保留天数 + logDir: "logs" # 日志保留文件夹 +port: 8090 # 启动端口 +pluginRpcPort: 8091 #插件内网访问端口 +rootUrl: http://localhost:8090/ #项目访问根目录 +dbType: "sqlite3" # 数据保留类型 分为 sqlite3 和 mysql +enableLogEs: false #是否记录es请求记录 +enableLogEsRes: false #是否记录es请求记录中返回的响应体 +sqlite: # dbType为sqlite3时填 dbPath为数据保存文件地址 + dbName: "es_view.db" +mysql: # dbType为mysql时填 + username: "root" + pwd: "" + ip: "localhost" + port: "3306" + dbName: "test" + maxOpenConns: 10 + maxIdleConns: 10 +appSecret: "1340691923@qq.com" # jwt 加密密钥 +esPwdSecret: "concat_mail!!->1340691923@qq.com" # es密码加密密钥 加密方式为 AES +version: "0.0.5" # EV 版本号 +deBug: false # 是否为测试模式 如果为 false则打开默认浏览器直接访问地址 +checkForevUpdates: true #是否自动检测ev更新 +checkForPluginUpdates: true #是否自动检测ev插件更新 +evKey: #evKey 需要到插件者后台注册获取 +storeFileDir: store_file_dir #临时文件存放目录 例如下载的excel +plugin: + loadPath: plugins #插件存放目录 + storePath: plugins_store #插件临时文件存放目录 +watermarkContent: ElasticView #水印 +translation: + lang: zh-cn # zh-cn or en + cfgDir: config/ev-i18n #i18n文件存放目录 +oauth: + workwechat: + agentid: + corpid: + enable: false + secert: diff --git a/config/config.yml.tpl b/config/config.yml.tpl new file mode 100644 index 0000000..b4f5a18 --- /dev/null +++ b/config/config.yml.tpl @@ -0,0 +1,34 @@ +log: + storageDays: 4 # 日志保留天数 + logDir: "logs" # 日志保留文件夹 +port: 8090 # 启动端口 +pluginRpcPort: 8091 #插件内网访问端口 +rootUrl: http://localhost:8090/ #项目访问根目录 +dbType: "sqlite3" # 数据保留类型 分为 sqlite3 和 mysql +enableLogEs: false #是否记录es请求记录 +enableLogEsRes: false #是否记录es请求记录中返回的响应体 +sqlite: # dbType为sqlite3时填 dbPath为数据保存文件地址 + dbName: "es_view.db" +mysql: # dbType为mysql时填 + username: "root" + pwd: "" + ip: "localhost" + port: "3306" + dbName: "test" + maxOpenConns: 10 + maxIdleConns: 10 +appSecret: "1340691923@qq.com" # jwt 加密密钥 +esPwdSecret: "concat_mail!!->1340691923@qq.com" # es密码加密密钥 加密方式为 AES +version: "0.0.3" # EV 版本号 +deBug: false # 是否为测试模式 如果为 false则打开默认浏览器直接访问地址 +checkForevUpdates: true #是否自动检测ev更新 +checkForPluginUpdates: true #是否自动检测ev插件更新 +evKey: #evKey 需要到插件者后台注册获取 +storeFileDir: #临时文件存放目录 例如下载的excel +plugin: + loadPath: plugins #插件存放目录 + storePath: plugins_store #插件临时文件存放目录 +watermarkContent: ElasticView #水印 +translation: + lang: zh-cn # zh-cn or en + cfgDir: config/ev-i18n #i18n文件存放目录 diff --git a/config/ev-i18n/en.json b/config/ev-i18n/en.json new file mode 100644 index 0000000..e947ed3 --- /dev/null +++ b/config/ev-i18n/en.json @@ -0,0 +1,61 @@ +{ + "首页": "Home", + "序号": "No.", + "角色id": "Role ID", + "角色名": "Role Name", + "角色详细信息": "Role Details", + "新建角色": "Create Role", + "操作": "Action", + "编辑": "Edit", + "删除": "Delete", + "角色详情信息": "Role Details", + "菜单栏": "Menu Bar", + "输入关键字进行过滤": "Enter Keywords to Filter", + "全选": "Select All", + "新建用户": "Create User", + "id": "ID", + "用户名": "Username", + "所属角色": "Assigned Role", + "真实姓名": "Real Name", + "密码": "Password", + "请选择角色": "Select a Role", + "取消": "Cancel", + "确认": "Confirm", + "操作用户": "User Operations", + "操作接口": "Management Interface", + "接口请求参数": "API Request Parameters", + "创建时间": "Creation Time", + "搜索": "Search", + "新建连接信息": "Create Connection Information", + "ES鉴权配置": "ES Authentication Configuration", + "折叠": "Collapse", + "展开": "Expand", + "鉴权配置": "Authentication Configuration", + "备注": "Notes", + "版本": "Version", + "修改时间": "Last Modified Time", + "鉴权列表": "Authentication List", + "新建鉴权信息": "Create Authentication Information", + "已分配角色": "Assigned Roles", + "root证书": "Root Certificate", + "cert证书": "Certificate", + "key证书": "Key Certificate", + "可访问集群成员": "Accessible Cluster Members", + "全部角色": "All Roles", + "请操作角色": "Please Manage Roles", + "无数据": "No Data", + "当前集群角色": "Current Roles in Cluster", + "移除角色": "Remove Role", + "添加角色": "Add Role", + "筛选菜单": "Filter Menu", + "请选择ES连接": "Please Select ES Connection", + "消息": "Message", + "通知": "Notification", + "待办": "To-Do", + "查看更多": "View More", + "全部已读": "Mark All as Read", + "ev后台备注": "EV Backend Notes", + "ES连接": "ES Connection", + "界面工具": "Interface Tools", + "默认连接(空鉴权)": "Default Connection (Empty Authentication)" +} diff --git a/config/ev-i18n/zh-cn.json b/config/ev-i18n/zh-cn.json new file mode 100644 index 0000000..c06c60b --- /dev/null +++ b/config/ev-i18n/zh-cn.json @@ -0,0 +1,62 @@ +{ + "首页": "首页", + "序号": "序号", + "角色id": "角色id", + "角色名": "角色名", + "角色详细信息": "角色详细信息", + "新建角色": "新建角色", + "操作": "操作", + "编辑": "编辑", + "删除": "删除", + "角色详情信息": "角色详情信息", + "菜单栏": "菜单栏", + "输入关键字进行过滤": "输入关键字进行过滤", + "全选": "全选", + "新建用户": "新建用户", + "id": "id", + "用户名": "用户名", + "所属角色": "所属角色", + "真实姓名": "真实姓名", + "密码": "密码", + "请选择角色": "请选择角色", + "取消": "取消", + "确认": "确认", + "操作用户": "操作用户", + "操作接口": "操作接口", + "接口请求参数": "接口请求参数", + "创建时间": "创建时间", + "搜索": "搜索", + "新建连接信息": "新建连接信息", + "ES鉴权配置": "ES鉴权配置", + "折叠": "折叠", + "展开": "展开", + "鉴权配置": "鉴权配置", + "备注": "备注", + "版本": "版本", + "修改时间": "修改时间", + "鉴权列表": "鉴权列表", + "新建鉴权信息": "新建鉴权信息", + "已分配角色": "已分配角色", + "root证书": "root证书", + "cert证书": "cert证书", + "key证书": "key证书", + "可访问集群成员": "可访问集群成员", + "全部角色": "全部角色", + "请操作角色": "请操作角色", + "无数据": "无数据", + "当前集群角色": "当前集群角色", + "移除角色": "移除角色", + "添加角色": "添加角色", + "筛选菜单": "筛选菜单", + "请选择ES连接": "请选择ES连接", + "消息": "消息", + "通知": "通知", + "待办": "待办", + "查看更多": "查看更多", + "全部已读": "全部已读", + "ev后台备注": "ev后台备注", + "ES连接": "ES连接", + "界面工具": "界面工具", + "默认连接(空鉴权)": "默认连接(空鉴权)" +} + diff --git a/config_dev/config_dev.yml b/config_dev/config_dev.yml new file mode 100644 index 0000000..a677bfe --- /dev/null +++ b/config_dev/config_dev.yml @@ -0,0 +1,39 @@ +appsecret: 1340691923@qq.com +checkforevupdates: true +checkforpluginupdates: true +dbtype: sqlite3 +debug: true +enableloges: false +enablelogesres: false +espwdsecret: concat_mail!!->1340691923@qq.com +log: + logdir: logs + storagedays: 4 +mysql: + dbname: test + ip: localhost + maxidleconns: 10 + maxopenconns: 10 + port: "3306" + pwd: "" + username: root +oauth: + workwechat: + agentid: + corpid: + enable: + secert: +plugin: + loadpath: plugins + storepath: plugins_store +pluginrpcport: 8091 +port: 8090 +rooturl: http://localhost:8090/ +sqlite: + dbname: es_view.db +translation: + cfgdir: ev-i18n + lang: zh-cn +version: 0.0.5 +watermarkcontent: +storeFileDir: #临时文件存放目录 例如下载的excel diff --git a/config_dev/config_dev.yml.tpl b/config_dev/config_dev.yml.tpl new file mode 100644 index 0000000..b4f5a18 --- /dev/null +++ b/config_dev/config_dev.yml.tpl @@ -0,0 +1,34 @@ +log: + storageDays: 4 # 日志保留天数 + logDir: "logs" # 日志保留文件夹 +port: 8090 # 启动端口 +pluginRpcPort: 8091 #插件内网访问端口 +rootUrl: http://localhost:8090/ #项目访问根目录 +dbType: "sqlite3" # 数据保留类型 分为 sqlite3 和 mysql +enableLogEs: false #是否记录es请求记录 +enableLogEsRes: false #是否记录es请求记录中返回的响应体 +sqlite: # dbType为sqlite3时填 dbPath为数据保存文件地址 + dbName: "es_view.db" +mysql: # dbType为mysql时填 + username: "root" + pwd: "" + ip: "localhost" + port: "3306" + dbName: "test" + maxOpenConns: 10 + maxIdleConns: 10 +appSecret: "1340691923@qq.com" # jwt 加密密钥 +esPwdSecret: "concat_mail!!->1340691923@qq.com" # es密码加密密钥 加密方式为 AES +version: "0.0.3" # EV 版本号 +deBug: false # 是否为测试模式 如果为 false则打开默认浏览器直接访问地址 +checkForevUpdates: true #是否自动检测ev更新 +checkForPluginUpdates: true #是否自动检测ev插件更新 +evKey: #evKey 需要到插件者后台注册获取 +storeFileDir: #临时文件存放目录 例如下载的excel +plugin: + loadPath: plugins #插件存放目录 + storePath: plugins_store #插件临时文件存放目录 +watermarkContent: ElasticView #水印 +translation: + lang: zh-cn # zh-cn or en + cfgDir: config/ev-i18n #i18n文件存放目录 diff --git a/config_dev/ev-i18n/en.json b/config_dev/ev-i18n/en.json new file mode 100644 index 0000000..e947ed3 --- /dev/null +++ b/config_dev/ev-i18n/en.json @@ -0,0 +1,61 @@ +{ + "首页": "Home", + "序号": "No.", + "角色id": "Role ID", + "角色名": "Role Name", + "角色详细信息": "Role Details", + "新建角色": "Create Role", + "操作": "Action", + "编辑": "Edit", + "删除": "Delete", + "角色详情信息": "Role Details", + "菜单栏": "Menu Bar", + "输入关键字进行过滤": "Enter Keywords to Filter", + "全选": "Select All", + "新建用户": "Create User", + "id": "ID", + "用户名": "Username", + "所属角色": "Assigned Role", + "真实姓名": "Real Name", + "密码": "Password", + "请选择角色": "Select a Role", + "取消": "Cancel", + "确认": "Confirm", + "操作用户": "User Operations", + "操作接口": "Management Interface", + "接口请求参数": "API Request Parameters", + "创建时间": "Creation Time", + "搜索": "Search", + "新建连接信息": "Create Connection Information", + "ES鉴权配置": "ES Authentication Configuration", + "折叠": "Collapse", + "展开": "Expand", + "鉴权配置": "Authentication Configuration", + "备注": "Notes", + "版本": "Version", + "修改时间": "Last Modified Time", + "鉴权列表": "Authentication List", + "新建鉴权信息": "Create Authentication Information", + "已分配角色": "Assigned Roles", + "root证书": "Root Certificate", + "cert证书": "Certificate", + "key证书": "Key Certificate", + "可访问集群成员": "Accessible Cluster Members", + "全部角色": "All Roles", + "请操作角色": "Please Manage Roles", + "无数据": "No Data", + "当前集群角色": "Current Roles in Cluster", + "移除角色": "Remove Role", + "添加角色": "Add Role", + "筛选菜单": "Filter Menu", + "请选择ES连接": "Please Select ES Connection", + "消息": "Message", + "通知": "Notification", + "待办": "To-Do", + "查看更多": "View More", + "全部已读": "Mark All as Read", + "ev后台备注": "EV Backend Notes", + "ES连接": "ES Connection", + "界面工具": "Interface Tools", + "默认连接(空鉴权)": "Default Connection (Empty Authentication)" +} diff --git a/config_dev/ev-i18n/zh-cn.json b/config_dev/ev-i18n/zh-cn.json new file mode 100644 index 0000000..c06c60b --- /dev/null +++ b/config_dev/ev-i18n/zh-cn.json @@ -0,0 +1,62 @@ +{ + "首页": "首页", + "序号": "序号", + "角色id": "角色id", + "角色名": "角色名", + "角色详细信息": "角色详细信息", + "新建角色": "新建角色", + "操作": "操作", + "编辑": "编辑", + "删除": "删除", + "角色详情信息": "角色详情信息", + "菜单栏": "菜单栏", + "输入关键字进行过滤": "输入关键字进行过滤", + "全选": "全选", + "新建用户": "新建用户", + "id": "id", + "用户名": "用户名", + "所属角色": "所属角色", + "真实姓名": "真实姓名", + "密码": "密码", + "请选择角色": "请选择角色", + "取消": "取消", + "确认": "确认", + "操作用户": "操作用户", + "操作接口": "操作接口", + "接口请求参数": "接口请求参数", + "创建时间": "创建时间", + "搜索": "搜索", + "新建连接信息": "新建连接信息", + "ES鉴权配置": "ES鉴权配置", + "折叠": "折叠", + "展开": "展开", + "鉴权配置": "鉴权配置", + "备注": "备注", + "版本": "版本", + "修改时间": "修改时间", + "鉴权列表": "鉴权列表", + "新建鉴权信息": "新建鉴权信息", + "已分配角色": "已分配角色", + "root证书": "root证书", + "cert证书": "cert证书", + "key证书": "key证书", + "可访问集群成员": "可访问集群成员", + "全部角色": "全部角色", + "请操作角色": "请操作角色", + "无数据": "无数据", + "当前集群角色": "当前集群角色", + "移除角色": "移除角色", + "添加角色": "添加角色", + "筛选菜单": "筛选菜单", + "请选择ES连接": "请选择ES连接", + "消息": "消息", + "通知": "通知", + "待办": "待办", + "查看更多": "查看更多", + "全部已读": "全部已读", + "ev后台备注": "ev后台备注", + "ES连接": "ES连接", + "界面工具": "界面工具", + "默认连接(空鉴权)": "默认连接(空鉴权)" +} + diff --git a/debug.go b/debug.go new file mode 100644 index 0000000..776bd65 --- /dev/null +++ b/debug.go @@ -0,0 +1,6 @@ +package main + +//go:generate go build -o build.exe cmd/build_ev/main.go +//go:generate build.exe +//go:generate swag init -g cmd/ev/main.go -o docs -exclude resources,logs,config +//go:generate gowatch diff --git a/docs/docs.go b/docs/docs.go new file mode 100644 index 0000000..8a23327 --- /dev/null +++ b/docs/docs.go @@ -0,0 +1,3292 @@ +// Code generated by swaggo/swag. DO NOT EDIT +package docs + +import "github.com/swaggo/swag" + +const docTemplate = `{ + "schemes": {{ marshal .Schemes }}, + "swagger": "2.0", + "info": { + "description": "{{escape .Description}}", + "title": "{{.Title}}", + "contact": { + "name": "肖文龙", + "url": "http://www.elastic-view.cn/suporrt.html", + "email": "1340691923@qq.com" + }, + "license": { + "name": "Apache 2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0.html" + }, + "version": "{{.Version}}" + }, + "host": "{{.Host}}", + "basePath": "{{.BasePath}}", + "paths": { + "/api/backUp/CleanupeRepositoryAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "快照" + ], + "summary": "清理快照仓库", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.CleanupeRepository" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/backUp/CreateSnapshotAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "快照" + ], + "summary": "创建快照", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.CreateSnapshot" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/backUp/SnapshotCreateRepositoryAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "快照" + ], + "summary": "新建快照仓库", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.SnapshotCreateRepository" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/backUp/SnapshotDeleteAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "快照" + ], + "summary": "删除快照", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.SnapshotDelete" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/backUp/SnapshotDeleteRepositoryAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "快照" + ], + "summary": "删除快照仓库", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.SnapshotDeleteRepository" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/backUp/SnapshotDetailAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "快照" + ], + "summary": "快照详情", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.SnapshotDetail" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/vo.SnapshotDetail" + } + } + } + } + }, + "/api/backUp/SnapshotListAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "快照" + ], + "summary": "快照列表", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.SnapshotList" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/vo.Snapshot" + } + } + } + } + } + }, + "/api/backUp/SnapshotRepositoryListAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "快照" + ], + "summary": "快照仓库列表", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsSnapshotInfo" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/vo.SnapshotRepositoryList" + } + } + } + } + }, + "/api/backUp/SnapshotRestoreAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "快照" + ], + "summary": "将索引恢复至快照时状态", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.SnapshotRestore" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/backUp/SnapshotStatusAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "快照" + ], + "summary": "得到快照状态", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.SnapshotStatus" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/dslHistory/CleanAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "DSL查询记录" + ], + "summary": "清空DSL查询记录", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/dslHistory/ListAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "DSL查询记录" + ], + "summary": "查询DSL查询记录接口", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.DslHistoryListReq" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/vo.DisHistoryListRes" + } + } + } + } + }, + "/api/es/CatAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ES" + ], + "summary": "es的cat操作", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsCat" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es/PingAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ES" + ], + "summary": "测试es连接", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/model.EsConnect" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es/RecoverCanWrite": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ES" + ], + "summary": "将索引恢复为可写状态 由于不可抗力,ES禁止写后,默认不会自动恢复", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsConnectID" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es/RunDslGetAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ES" + ], + "summary": "发送DELETE请求到es", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsRest" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es/RunDslHeadAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ES" + ], + "summary": "发送HEAD请求到es", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsRest" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es/RunDslPUTAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ES" + ], + "summary": "发送PUT请求到es", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsRest" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es/RunDslPostAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ES" + ], + "summary": "发送POST请求到es", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsRest" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es/SqlToDslAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ES" + ], + "summary": "SQL 转换为 DSL", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.SqlToDsl" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/vo.SqlToDsl" + } + } + } + } + }, + "/api/es_crud/Download": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "可视化筛选" + ], + "summary": "下载navicat查询excel", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.CrudFilter" + } + } + ], + "responses": {} + } + }, + "/api/es_crud/GetDSL": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "可视化筛选" + ], + "summary": "可视化GetDSL", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.CrudFilter" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/navicat_service.Search" + } + } + } + } + }, + "/api/es_crud/GetList": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "可视化筛选" + ], + "summary": "可视化筛选获取数据", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.CrudFilter" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_doc/DeleteRowByIDAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es文档" + ], + "summary": "删除文档数据", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsDocDeleteRowByID" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_doc/InsertAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es文档" + ], + "summary": "新增文档", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsDocUpdateByID" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_doc/UpdateByIDAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es文档" + ], + "summary": "修改文档", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsDocUpdateByID" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/AddAliasToIndex": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "新增别名到索引", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsAliasInfo" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/BatchAddAliasToIndex": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "批量新增别名到索引", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsAliasInfo" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/CacheClear": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "清理索引缓存", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsOptimize" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/Close": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "关闭索引", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsOptimize" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/CreateAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "创建索引", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsIndexInfo" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/DeleteAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es连接信息" + ], + "summary": "删除es连接", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.DeleteEsLink" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/Empty": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "清空索引", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsOptimize" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/Flush": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "将所有索引刷新到磁盘", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsOptimize" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/Forcemerge": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "强制合并索引", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsOptimize" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/GetAliasAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "获取别名", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsAliasInfo" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/vo.AliasInfo" + } + } + } + } + }, + "/api/es_index/GetSettingsAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "获取索引配置信息", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsIndexInfo" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/GetSettingsInfoAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "获取所有的索引配置信息", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsIndexInfo" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/IndexNamesAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "得到所有的索引名", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsConnectID" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + }, + "/api/es_index/IndexsCountAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "得到所有的索引数量", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsConnectID" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "type": "integer" + } + } + } + } + }, + "/api/es_index/InsertAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es连接信息" + ], + "summary": "新增连接信息", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.InsertEsLink" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/MoveAliasToIndex": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "移动别名到索引", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsAliasInfo" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/Open": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "开启索引", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsOptimize" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/Refresh": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "刷新索引", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsOptimize" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/ReindexAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "重建索引", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsReIndexInfo" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/RemoveAlias": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "移除别名", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsAliasInfo" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/StatsAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "获取索引的Stats", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsIndexInfo" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/vo.Status" + } + } + } + } + } + }, + "/api/es_index/UpdateAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es连接信息" + ], + "summary": "修改连接信息", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.UpdateEsLink" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_link/ListAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es连接信息" + ], + "summary": "获取Es连接列表", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/vo.EsLink" + } + } + } + } + } + }, + "/api/es_link/OptAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es连接信息" + ], + "summary": "查看ES连接配置下拉选", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/vo.EsLinkOpt" + } + } + } + } + } + }, + "/api/es_map/ListAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es映射" + ], + "summary": "Es 映射列表", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsMapGetProperties" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_map/UpdateMappingAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es映射" + ], + "summary": "修改Es映射", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.UpdateMapping" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_task/CancelAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es任务" + ], + "summary": "取消ES任务", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.CancelTask" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_task/ListAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es任务" + ], + "summary": "Es任务列表", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.TaskList" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/vo.TaskInfo" + } + } + } + } + } + }, + "/api/gm_user/login": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "summary": "EV用户登录", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.User" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/vo.User" + } + } + } + } + }, + "/api/operater_log/ListAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ev后台操作日志" + ], + "summary": "查看后台操作日志", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.GmOperaterLogList" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/vo.GmOperaterLog" + } + } + } + } + } + }, + "definitions": { + "dto.AnalysisFilter": { + "type": "object", + "properties": { + "filterType": { + "type": "string" + }, + "filts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "columnName": { + "type": "string" + }, + "comparator": { + "type": "string" + }, + "filterType": { + "type": "string" + }, + "filts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "columnName": { + "type": "string" + }, + "comparator": { + "type": "string" + }, + "filterType": { + "type": "string" + }, + "ftv": {} + } + } + }, + "ftv": {}, + "relation": { + "type": "string" + } + } + } + }, + "relation": { + "type": "string" + } + } + }, + "dto.CancelTask": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "task_id": { + "type": "string" + } + } + }, + "dto.CleanupeRepository": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "name": { + "type": "string" + } + } + }, + "dto.CreateSnapshot": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "ignore_unavailable": { + "type": "boolean" + }, + "include_global_state": { + "type": "boolean" + }, + "indexList": { + "type": "array", + "items": { + "type": "string" + } + }, + "partial": { + "type": "boolean" + }, + "repositoryName": { + "type": "string" + }, + "snapshotName": { + "type": "string" + }, + "wait": { + "type": "boolean" + } + } + }, + "dto.CrudFilter": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "index_name": { + "type": "string" + }, + "limit": { + "type": "integer" + }, + "page": { + "type": "integer" + }, + "relation": { + "$ref": "#/definitions/dto.AnalysisFilter" + }, + "sort_list": { + "type": "array", + "items": { + "$ref": "#/definitions/dto.SortStruct" + } + } + } + }, + "dto.DeleteEsLink": { + "type": "object", + "properties": { + "id": { + "type": "integer" + } + } + }, + "dto.DslHistoryListReq": { + "type": "object", + "properties": { + "date": { + "description": "开始时间与结束时间(格式:”年-月-日 时:分:秒“ )", + "type": "array", + "items": { + "type": "string" + } + }, + "indexName": { + "description": "索引名", + "type": "string" + }, + "limit": { + "description": "拉取条数", + "type": "integer" + }, + "page": { + "description": "拉取数据当前页", + "type": "integer" + } + } + }, + "dto.EsAliasInfo": { + "type": "object", + "properties": { + "alias_name": { + "type": "string" + }, + "es_connect": { + "type": "integer" + }, + "index_name": { + "type": "string" + }, + "new_alias_name_list": { + "type": "array", + "items": { + "type": "string" + } + }, + "new_index_list": { + "type": "array", + "items": { + "type": "string" + } + }, + "settings": { + "$ref": "#/definitions/dto.Json" + }, + "types": { + "type": "integer" + } + } + }, + "dto.EsCat": { + "type": "object", + "properties": { + "cat": { + "type": "string" + }, + "es_connect": { + "type": "integer" + }, + "index_bytes_format": { + "type": "string" + } + } + }, + "dto.EsConnectID": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + } + } + }, + "dto.EsDocDeleteRowByID": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "id": { + "type": "string" + }, + "index_name": { + "type": "string" + }, + "type": { + "type": "string" + } + } + }, + "dto.EsDocUpdateByID": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "id": { + "type": "string" + }, + "index": { + "type": "string" + }, + "json": { + "$ref": "#/definitions/dto.Json" + }, + "type_name": { + "type": "string" + } + } + }, + "dto.EsIndexInfo": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "index_name": { + "type": "string" + }, + "settings": { + "$ref": "#/definitions/dto.Json" + }, + "types": { + "type": "string" + } + } + }, + "dto.EsMapGetProperties": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "index_name": { + "type": "string" + } + } + }, + "dto.EsOptimize": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "index_name": { + "type": "string" + } + } + }, + "dto.EsReIndexInfo": { + "type": "object", + "properties": { + "body": { + "$ref": "#/definitions/util.Map" + }, + "es_connect": { + "type": "integer" + }, + "url_values": { + "type": "object", + "properties": { + "refresh": { + "type": "boolean" + }, + "requests_per_second": { + "type": "integer" + }, + "scroll": { + "type": "string" + }, + "slices": { + "type": "integer" + }, + "timeout": { + "type": "integer" + }, + "wait_for_active_shards": { + "type": "string" + }, + "wait_for_completion": { + "type": "boolean" + } + } + } + } + }, + "dto.EsRest": { + "type": "object", + "properties": { + "body": { + "type": "string" + }, + "es_connect": { + "type": "integer" + }, + "path": { + "type": "string" + } + } + }, + "dto.EsSnapshotInfo": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "snapshot_info_list": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "dto.GmOperaterLogList": { + "type": "object", + "properties": { + "date": { + "type": "array", + "items": { + "type": "string" + } + }, + "limit": { + "type": "integer" + }, + "operater_action": { + "type": "string" + }, + "operater_id": { + "type": "integer" + }, + "operater_role_id": { + "type": "integer" + }, + "page": { + "type": "integer" + } + } + }, + "dto.InsertEsLink": { + "type": "object", + "properties": { + "cfgIds": { + "type": "array", + "items": { + "type": "integer" + } + }, + "ip": { + "type": "string" + }, + "remark": { + "type": "string" + }, + "version": { + "type": "integer" + } + } + }, + "dto.Json": { + "type": "object", + "additionalProperties": true + }, + "dto.SnapshotCreateRepository": { + "type": "object", + "properties": { + "chunk_size": { + "type": "string" + }, + "compress": { + "type": "string" + }, + "es_connect": { + "type": "integer" + }, + "location": { + "type": "string" + }, + "max_restore_bytes_per_sec": { + "type": "string" + }, + "max_snapshot_bytes_per_sec": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readonly": { + "type": "string" + }, + "type": { + "type": "string" + } + } + }, + "dto.SnapshotDelete": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "repository": { + "type": "string" + }, + "snapshot": { + "type": "string" + } + } + }, + "dto.SnapshotDeleteRepository": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "name": { + "type": "string" + } + } + }, + "dto.SnapshotDetail": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "repository": { + "type": "string" + }, + "snapshot": { + "type": "string" + } + } + }, + "dto.SnapshotList": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "repository": { + "type": "string" + } + } + }, + "dto.SnapshotRestore": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "ignore_unavailable": { + "type": "boolean" + }, + "include_global_state": { + "type": "boolean" + }, + "indexList": { + "type": "array", + "items": { + "type": "string" + } + }, + "partial": { + "type": "boolean" + }, + "rename_pattern": { + "type": "string" + }, + "rename_replacement": { + "type": "string" + }, + "repositoryName": { + "type": "string" + }, + "snapshotName": { + "type": "string" + }, + "wait": { + "type": "boolean" + } + } + }, + "dto.SnapshotStatus": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "repository": { + "type": "string" + }, + "snapshot": { + "type": "string" + } + } + }, + "dto.SortStruct": { + "type": "object", + "properties": { + "col": { + "type": "string" + }, + "sortRule": { + "type": "string" + } + } + }, + "dto.SqlToDsl": { + "type": "object", + "properties": { + "sql": { + "type": "string" + } + } + }, + "dto.TaskList": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + } + } + }, + "dto.UpdateEsLink": { + "type": "object", + "properties": { + "cfgIds": { + "type": "array", + "items": { + "type": "integer" + } + }, + "id": { + "type": "integer" + }, + "ip": { + "type": "string" + }, + "remark": { + "type": "string" + }, + "version": { + "type": "integer" + } + } + }, + "dto.UpdateMapping": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "index_name": { + "type": "string" + }, + "properties": { + "$ref": "#/definitions/dto.Json" + }, + "type_name": { + "type": "string" + } + } + }, + "dto.User": { + "type": "object", + "properties": { + "password": { + "type": "string" + }, + "username": { + "type": "string" + } + } + }, + "model.EsConnect": { + "type": "object", + "properties": { + "certpem": { + "type": "string" + }, + "ip": { + "type": "string" + }, + "keypem": { + "type": "string" + }, + "pwd": { + "type": "string" + }, + "rootpem": { + "type": "string" + }, + "user": { + "type": "string" + }, + "version": { + "type": "integer" + } + } + }, + "model.GmDslHistory": { + "type": "object", + "properties": { + "body": { + "description": "请求body", + "type": "string" + }, + "created": { + "description": "操作时间", + "type": "string" + }, + "id": { + "description": "id", + "type": "integer" + }, + "method": { + "description": "请求方法", + "type": "string" + }, + "path": { + "description": "请求path", + "type": "string" + }, + "uid": { + "description": "用户id", + "type": "integer" + } + } + }, + "navicat_service.Search": { + "type": "object", + "properties": { + "from": { + "type": "integer" + }, + "query": {}, + "search_after": { + "description": "explains how the score was computed", + "type": "array", + "items": {} + }, + "size": { + "type": "integer" + }, + "sort": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "response.ResponseData": { + "type": "object", + "properties": { + "code": { + "description": "消息码", + "type": "integer" + }, + "data": { + "description": "附加信息" + }, + "msg": { + "description": "消息提示", + "type": "string" + } + } + }, + "util.Map": { + "type": "object", + "additionalProperties": true + }, + "vo.AliasInfo": { + "type": "object", + "properties": { + "AliasName": { + "type": "string" + } + } + }, + "vo.DisHistoryListRes": { + "type": "object", + "properties": { + "count": { + "description": "查询数据总条数", + "type": "integer" + }, + "list": { + "description": "数据列表", + "type": "array", + "items": { + "$ref": "#/definitions/model.GmDslHistory" + } + } + } + }, + "vo.EsLink": { + "type": "object", + "properties": { + "create_by_id": { + "type": "integer" + }, + "create_by_user_name": { + "type": "string" + }, + "created": { + "type": "string" + }, + "es_link_configs": { + "type": "array", + "items": { + "$ref": "#/definitions/vo.EsLinkConfig" + } + }, + "id": { + "type": "integer" + }, + "ip": { + "type": "string" + }, + "remark": { + "type": "string" + }, + "updated": { + "type": "string" + }, + "version": { + "type": "integer" + } + } + }, + "vo.EsLinkConfig": { + "type": "object", + "properties": { + "certpem": { + "type": "string" + }, + "cfg_relation_id": { + "type": "integer" + }, + "created": { + "type": "string" + }, + "es_link_id": { + "type": "integer" + }, + "id": { + "type": "integer" + }, + "ip": { + "type": "string" + }, + "keypem": { + "type": "string" + }, + "pwd": { + "type": "string" + }, + "remark": { + "type": "string" + }, + "rootpem": { + "type": "string" + }, + "share_roles": { + "type": "array", + "items": { + "type": "string" + } + }, + "updated": { + "type": "string" + }, + "user": { + "type": "string" + }, + "version": { + "type": "integer" + } + } + }, + "vo.EsLinkOpt": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "remark": { + "type": "string" + } + } + }, + "vo.GmOperaterLog": { + "type": "object", + "properties": { + "body_str": { + "type": "string" + }, + "created": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "method": { + "type": "string" + }, + "operater_action": { + "type": "string" + }, + "operater_id": { + "type": "integer" + }, + "operater_name": { + "type": "string" + }, + "operater_role_id": { + "type": "integer" + } + } + }, + "vo.Snapshot": { + "type": "object", + "properties": { + "duration": { + "type": "string" + }, + "end_epoch": { + "type": "string" + }, + "end_time": { + "type": "string" + }, + "failed_shards": { + "type": "string" + }, + "id": { + "type": "string" + }, + "indices": { + "type": "string" + }, + "start_epoch": { + "type": "string" + }, + "start_time": { + "type": "string" + }, + "status": { + "type": "string" + }, + "successful_shards": { + "type": "string" + }, + "total_shards": { + "type": "string" + } + } + }, + "vo.SnapshotDetail": { + "type": "object", + "properties": { + "snapshots": { + "type": "array", + "items": { + "type": "object", + "properties": { + "duration_in_millis": { + "type": "integer" + }, + "end_time": { + "type": "string" + }, + "end_time_in_millis": { + "type": "integer" + }, + "failures": { + "type": "array", + "items": {} + }, + "include_global_state": { + "type": "boolean" + }, + "indices": { + "type": "array", + "items": { + "type": "string" + } + }, + "shards": { + "type": "object", + "properties": { + "failed": { + "type": "integer" + }, + "successful": { + "type": "integer" + }, + "total": { + "type": "integer" + } + } + }, + "snapshot": { + "type": "string" + }, + "start_time": { + "type": "string" + }, + "start_time_in_millis": { + "type": "integer" + }, + "state": { + "type": "string" + }, + "uuid": { + "type": "string" + }, + "version": { + "type": "string" + }, + "version_id": { + "type": "integer" + } + } + } + } + } + }, + "vo.SnapshotRepository": { + "type": "object", + "properties": { + "settings": { + "$ref": "#/definitions/vo.SnapshotRepositorySettings" + }, + "type": { + "type": "string" + } + } + }, + "vo.SnapshotRepositoryList": { + "type": "object", + "properties": { + "list": { + "type": "array", + "items": { + "$ref": "#/definitions/vo.Snashot" + } + }, + "pathRepo": { + "type": "array", + "items": {} + }, + "res": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/vo.SnapshotRepository" + } + } + } + }, + "vo.SnapshotRepositorySettings": { + "type": "object", + "properties": { + "compress": { + "type": "string" + }, + "location": { + "type": "string" + }, + "max_restore_bytes_per_sec": { + "type": "string" + }, + "max_snapshot_bytes_per_sec": { + "type": "string" + }, + "readonly": { + "type": "string" + } + } + }, + "vo.Snashot": { + "type": "object", + "properties": { + "chunk_size": { + "type": "string" + }, + "compress": { + "type": "string" + }, + "location": { + "type": "string" + }, + "max_restore_bytes_per_sec": { + "type": "string" + }, + "max_snapshot_bytes_per_sec": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readonly": { + "type": "string" + }, + "type": { + "type": "string" + } + } + }, + "vo.SqlToDsl": { + "type": "object", + "properties": { + "dsl": { + "type": "string" + }, + "tableName": { + "type": "string" + } + } + }, + "vo.Status": { + "type": "object", + "properties": { + "status": { + "type": "string" + } + } + }, + "vo.TaskInfo": { + "type": "object", + "properties": { + "action": { + "type": "string" + }, + "cancellable": { + "type": "boolean" + }, + "description": { + "description": "same as Status" + }, + "headers": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "id": { + "description": "the task id (yes, this is a long in the Java source)", + "type": "integer" + }, + "node": { + "type": "string" + }, + "parent_task_id": { + "description": "like \"YxJnVYjwSBm_AUbzddTajQ:12356\"", + "type": "string" + }, + "running_time": { + "type": "string" + }, + "running_time_in_nanos": { + "type": "integer" + }, + "start_time": { + "type": "string" + }, + "start_time_in_millis": { + "type": "integer" + }, + "status": { + "description": "has separate implementations of Task.Status in Java for reindexing, replication, and \"RawTaskStatus\"" + }, + "type": { + "type": "string" + } + } + }, + "vo.User": { + "type": "object", + "properties": { + "token": { + "type": "string" + }, + "unix_time": { + "type": "integer" + } + } + } + } +}` + +// SwaggerInfo holds exported Swagger Info so clients can modify it +var SwaggerInfo = &swag.Spec{ + Version: "", + Host: "", + BasePath: "", + Schemes: []string{}, + Title: "ElasticView", + Description: "励志成为陪伴你一生的elasticsearch可视化客户端", + InfoInstanceName: "swagger", + SwaggerTemplate: docTemplate, +} + +func init() { + swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo) +} diff --git a/docs/swagger.json b/docs/swagger.json new file mode 100644 index 0000000..6b7bb60 --- /dev/null +++ b/docs/swagger.json @@ -0,0 +1,3267 @@ +{ + "swagger": "2.0", + "info": { + "description": "励志成为陪伴你一生的elasticsearch可视化客户端", + "title": "ElasticView", + "contact": { + "name": "肖文龙", + "url": "http://www.elastic-view.cn/suporrt.html", + "email": "1340691923@qq.com" + }, + "license": { + "name": "Apache 2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0.html" + } + }, + "paths": { + "/api/backUp/CleanupeRepositoryAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "快照" + ], + "summary": "清理快照仓库", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.CleanupeRepository" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/backUp/CreateSnapshotAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "快照" + ], + "summary": "创建快照", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.CreateSnapshot" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/backUp/SnapshotCreateRepositoryAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "快照" + ], + "summary": "新建快照仓库", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.SnapshotCreateRepository" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/backUp/SnapshotDeleteAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "快照" + ], + "summary": "删除快照", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.SnapshotDelete" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/backUp/SnapshotDeleteRepositoryAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "快照" + ], + "summary": "删除快照仓库", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.SnapshotDeleteRepository" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/backUp/SnapshotDetailAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "快照" + ], + "summary": "快照详情", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.SnapshotDetail" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/vo.SnapshotDetail" + } + } + } + } + }, + "/api/backUp/SnapshotListAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "快照" + ], + "summary": "快照列表", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.SnapshotList" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/vo.Snapshot" + } + } + } + } + } + }, + "/api/backUp/SnapshotRepositoryListAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "快照" + ], + "summary": "快照仓库列表", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsSnapshotInfo" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/vo.SnapshotRepositoryList" + } + } + } + } + }, + "/api/backUp/SnapshotRestoreAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "快照" + ], + "summary": "将索引恢复至快照时状态", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.SnapshotRestore" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/backUp/SnapshotStatusAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "快照" + ], + "summary": "得到快照状态", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.SnapshotStatus" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/dslHistory/CleanAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "DSL查询记录" + ], + "summary": "清空DSL查询记录", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/dslHistory/ListAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "DSL查询记录" + ], + "summary": "查询DSL查询记录接口", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.DslHistoryListReq" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/vo.DisHistoryListRes" + } + } + } + } + }, + "/api/es/CatAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ES" + ], + "summary": "es的cat操作", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsCat" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es/PingAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ES" + ], + "summary": "测试es连接", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/model.EsConnect" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es/RecoverCanWrite": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ES" + ], + "summary": "将索引恢复为可写状态 由于不可抗力,ES禁止写后,默认不会自动恢复", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsConnectID" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es/RunDslGetAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ES" + ], + "summary": "发送DELETE请求到es", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsRest" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es/RunDslHeadAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ES" + ], + "summary": "发送HEAD请求到es", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsRest" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es/RunDslPUTAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ES" + ], + "summary": "发送PUT请求到es", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsRest" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es/RunDslPostAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ES" + ], + "summary": "发送POST请求到es", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsRest" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es/SqlToDslAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ES" + ], + "summary": "SQL 转换为 DSL", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.SqlToDsl" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/vo.SqlToDsl" + } + } + } + } + }, + "/api/es_crud/Download": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "可视化筛选" + ], + "summary": "下载navicat查询excel", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.CrudFilter" + } + } + ], + "responses": {} + } + }, + "/api/es_crud/GetDSL": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "可视化筛选" + ], + "summary": "可视化GetDSL", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.CrudFilter" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/navicat_service.Search" + } + } + } + } + }, + "/api/es_crud/GetList": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "可视化筛选" + ], + "summary": "可视化筛选获取数据", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.CrudFilter" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_doc/DeleteRowByIDAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es文档" + ], + "summary": "删除文档数据", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsDocDeleteRowByID" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_doc/InsertAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es文档" + ], + "summary": "新增文档", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsDocUpdateByID" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_doc/UpdateByIDAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es文档" + ], + "summary": "修改文档", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsDocUpdateByID" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/AddAliasToIndex": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "新增别名到索引", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsAliasInfo" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/BatchAddAliasToIndex": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "批量新增别名到索引", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsAliasInfo" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/CacheClear": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "清理索引缓存", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsOptimize" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/Close": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "关闭索引", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsOptimize" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/CreateAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "创建索引", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsIndexInfo" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/DeleteAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es连接信息" + ], + "summary": "删除es连接", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.DeleteEsLink" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/Empty": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "清空索引", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsOptimize" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/Flush": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "将所有索引刷新到磁盘", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsOptimize" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/Forcemerge": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "强制合并索引", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsOptimize" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/GetAliasAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "获取别名", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsAliasInfo" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/vo.AliasInfo" + } + } + } + } + }, + "/api/es_index/GetSettingsAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "获取索引配置信息", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsIndexInfo" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/GetSettingsInfoAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "获取所有的索引配置信息", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsIndexInfo" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/IndexNamesAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "得到所有的索引名", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsConnectID" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + }, + "/api/es_index/IndexsCountAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "得到所有的索引数量", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsConnectID" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "type": "integer" + } + } + } + } + }, + "/api/es_index/InsertAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es连接信息" + ], + "summary": "新增连接信息", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.InsertEsLink" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/MoveAliasToIndex": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "移动别名到索引", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsAliasInfo" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/Open": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "开启索引", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsOptimize" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/Refresh": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "刷新索引", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsOptimize" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/ReindexAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "重建索引", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsReIndexInfo" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/RemoveAlias": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "移除别名", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsAliasInfo" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_index/StatsAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es索引" + ], + "summary": "获取索引的Stats", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsIndexInfo" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/vo.Status" + } + } + } + } + } + }, + "/api/es_index/UpdateAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es连接信息" + ], + "summary": "修改连接信息", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.UpdateEsLink" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_link/ListAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es连接信息" + ], + "summary": "获取Es连接列表", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/vo.EsLink" + } + } + } + } + } + }, + "/api/es_link/OptAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es连接信息" + ], + "summary": "查看ES连接配置下拉选", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/vo.EsLinkOpt" + } + } + } + } + } + }, + "/api/es_map/ListAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es映射" + ], + "summary": "Es 映射列表", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.EsMapGetProperties" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_map/UpdateMappingAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es映射" + ], + "summary": "修改Es映射", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.UpdateMapping" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_task/CancelAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es任务" + ], + "summary": "取消ES任务", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.CancelTask" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/response.ResponseData" + } + } + } + } + }, + "/api/es_task/ListAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "es任务" + ], + "summary": "Es任务列表", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.TaskList" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/vo.TaskInfo" + } + } + } + } + } + }, + "/api/gm_user/login": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "summary": "EV用户登录", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.User" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/vo.User" + } + } + } + } + }, + "/api/operater_log/ListAction": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ev后台操作日志" + ], + "summary": "查看后台操作日志", + "parameters": [ + { + "type": "string", + "description": "用户令牌", + "name": "X-Token", + "in": "header" + }, + { + "description": "查询参数", + "name": "object", + "in": "body", + "schema": { + "$ref": "#/definitions/dto.GmOperaterLogList" + } + } + ], + "responses": { + "0": { + "description": "", + "schema": { + "$ref": "#/definitions/vo.GmOperaterLog" + } + } + } + } + } + }, + "definitions": { + "dto.AnalysisFilter": { + "type": "object", + "properties": { + "filterType": { + "type": "string" + }, + "filts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "columnName": { + "type": "string" + }, + "comparator": { + "type": "string" + }, + "filterType": { + "type": "string" + }, + "filts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "columnName": { + "type": "string" + }, + "comparator": { + "type": "string" + }, + "filterType": { + "type": "string" + }, + "ftv": {} + } + } + }, + "ftv": {}, + "relation": { + "type": "string" + } + } + } + }, + "relation": { + "type": "string" + } + } + }, + "dto.CancelTask": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "task_id": { + "type": "string" + } + } + }, + "dto.CleanupeRepository": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "name": { + "type": "string" + } + } + }, + "dto.CreateSnapshot": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "ignore_unavailable": { + "type": "boolean" + }, + "include_global_state": { + "type": "boolean" + }, + "indexList": { + "type": "array", + "items": { + "type": "string" + } + }, + "partial": { + "type": "boolean" + }, + "repositoryName": { + "type": "string" + }, + "snapshotName": { + "type": "string" + }, + "wait": { + "type": "boolean" + } + } + }, + "dto.CrudFilter": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "index_name": { + "type": "string" + }, + "limit": { + "type": "integer" + }, + "page": { + "type": "integer" + }, + "relation": { + "$ref": "#/definitions/dto.AnalysisFilter" + }, + "sort_list": { + "type": "array", + "items": { + "$ref": "#/definitions/dto.SortStruct" + } + } + } + }, + "dto.DeleteEsLink": { + "type": "object", + "properties": { + "id": { + "type": "integer" + } + } + }, + "dto.DslHistoryListReq": { + "type": "object", + "properties": { + "date": { + "description": "开始时间与结束时间(格式:”年-月-日 时:分:秒“ )", + "type": "array", + "items": { + "type": "string" + } + }, + "indexName": { + "description": "索引名", + "type": "string" + }, + "limit": { + "description": "拉取条数", + "type": "integer" + }, + "page": { + "description": "拉取数据当前页", + "type": "integer" + } + } + }, + "dto.EsAliasInfo": { + "type": "object", + "properties": { + "alias_name": { + "type": "string" + }, + "es_connect": { + "type": "integer" + }, + "index_name": { + "type": "string" + }, + "new_alias_name_list": { + "type": "array", + "items": { + "type": "string" + } + }, + "new_index_list": { + "type": "array", + "items": { + "type": "string" + } + }, + "settings": { + "$ref": "#/definitions/dto.Json" + }, + "types": { + "type": "integer" + } + } + }, + "dto.EsCat": { + "type": "object", + "properties": { + "cat": { + "type": "string" + }, + "es_connect": { + "type": "integer" + }, + "index_bytes_format": { + "type": "string" + } + } + }, + "dto.EsConnectID": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + } + } + }, + "dto.EsDocDeleteRowByID": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "id": { + "type": "string" + }, + "index_name": { + "type": "string" + }, + "type": { + "type": "string" + } + } + }, + "dto.EsDocUpdateByID": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "id": { + "type": "string" + }, + "index": { + "type": "string" + }, + "json": { + "$ref": "#/definitions/dto.Json" + }, + "type_name": { + "type": "string" + } + } + }, + "dto.EsIndexInfo": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "index_name": { + "type": "string" + }, + "settings": { + "$ref": "#/definitions/dto.Json" + }, + "types": { + "type": "string" + } + } + }, + "dto.EsMapGetProperties": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "index_name": { + "type": "string" + } + } + }, + "dto.EsOptimize": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "index_name": { + "type": "string" + } + } + }, + "dto.EsReIndexInfo": { + "type": "object", + "properties": { + "body": { + "$ref": "#/definitions/util.Map" + }, + "es_connect": { + "type": "integer" + }, + "url_values": { + "type": "object", + "properties": { + "refresh": { + "type": "boolean" + }, + "requests_per_second": { + "type": "integer" + }, + "scroll": { + "type": "string" + }, + "slices": { + "type": "integer" + }, + "timeout": { + "type": "integer" + }, + "wait_for_active_shards": { + "type": "string" + }, + "wait_for_completion": { + "type": "boolean" + } + } + } + } + }, + "dto.EsRest": { + "type": "object", + "properties": { + "body": { + "type": "string" + }, + "es_connect": { + "type": "integer" + }, + "path": { + "type": "string" + } + } + }, + "dto.EsSnapshotInfo": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "snapshot_info_list": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "dto.GmOperaterLogList": { + "type": "object", + "properties": { + "date": { + "type": "array", + "items": { + "type": "string" + } + }, + "limit": { + "type": "integer" + }, + "operater_action": { + "type": "string" + }, + "operater_id": { + "type": "integer" + }, + "operater_role_id": { + "type": "integer" + }, + "page": { + "type": "integer" + } + } + }, + "dto.InsertEsLink": { + "type": "object", + "properties": { + "cfgIds": { + "type": "array", + "items": { + "type": "integer" + } + }, + "ip": { + "type": "string" + }, + "remark": { + "type": "string" + }, + "version": { + "type": "integer" + } + } + }, + "dto.Json": { + "type": "object", + "additionalProperties": true + }, + "dto.SnapshotCreateRepository": { + "type": "object", + "properties": { + "chunk_size": { + "type": "string" + }, + "compress": { + "type": "string" + }, + "es_connect": { + "type": "integer" + }, + "location": { + "type": "string" + }, + "max_restore_bytes_per_sec": { + "type": "string" + }, + "max_snapshot_bytes_per_sec": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readonly": { + "type": "string" + }, + "type": { + "type": "string" + } + } + }, + "dto.SnapshotDelete": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "repository": { + "type": "string" + }, + "snapshot": { + "type": "string" + } + } + }, + "dto.SnapshotDeleteRepository": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "name": { + "type": "string" + } + } + }, + "dto.SnapshotDetail": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "repository": { + "type": "string" + }, + "snapshot": { + "type": "string" + } + } + }, + "dto.SnapshotList": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "repository": { + "type": "string" + } + } + }, + "dto.SnapshotRestore": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "ignore_unavailable": { + "type": "boolean" + }, + "include_global_state": { + "type": "boolean" + }, + "indexList": { + "type": "array", + "items": { + "type": "string" + } + }, + "partial": { + "type": "boolean" + }, + "rename_pattern": { + "type": "string" + }, + "rename_replacement": { + "type": "string" + }, + "repositoryName": { + "type": "string" + }, + "snapshotName": { + "type": "string" + }, + "wait": { + "type": "boolean" + } + } + }, + "dto.SnapshotStatus": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "repository": { + "type": "string" + }, + "snapshot": { + "type": "string" + } + } + }, + "dto.SortStruct": { + "type": "object", + "properties": { + "col": { + "type": "string" + }, + "sortRule": { + "type": "string" + } + } + }, + "dto.SqlToDsl": { + "type": "object", + "properties": { + "sql": { + "type": "string" + } + } + }, + "dto.TaskList": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + } + } + }, + "dto.UpdateEsLink": { + "type": "object", + "properties": { + "cfgIds": { + "type": "array", + "items": { + "type": "integer" + } + }, + "id": { + "type": "integer" + }, + "ip": { + "type": "string" + }, + "remark": { + "type": "string" + }, + "version": { + "type": "integer" + } + } + }, + "dto.UpdateMapping": { + "type": "object", + "properties": { + "es_connect": { + "type": "integer" + }, + "index_name": { + "type": "string" + }, + "properties": { + "$ref": "#/definitions/dto.Json" + }, + "type_name": { + "type": "string" + } + } + }, + "dto.User": { + "type": "object", + "properties": { + "password": { + "type": "string" + }, + "username": { + "type": "string" + } + } + }, + "model.EsConnect": { + "type": "object", + "properties": { + "certpem": { + "type": "string" + }, + "ip": { + "type": "string" + }, + "keypem": { + "type": "string" + }, + "pwd": { + "type": "string" + }, + "rootpem": { + "type": "string" + }, + "user": { + "type": "string" + }, + "version": { + "type": "integer" + } + } + }, + "model.GmDslHistory": { + "type": "object", + "properties": { + "body": { + "description": "请求body", + "type": "string" + }, + "created": { + "description": "操作时间", + "type": "string" + }, + "id": { + "description": "id", + "type": "integer" + }, + "method": { + "description": "请求方法", + "type": "string" + }, + "path": { + "description": "请求path", + "type": "string" + }, + "uid": { + "description": "用户id", + "type": "integer" + } + } + }, + "navicat_service.Search": { + "type": "object", + "properties": { + "from": { + "type": "integer" + }, + "query": {}, + "search_after": { + "description": "explains how the score was computed", + "type": "array", + "items": {} + }, + "size": { + "type": "integer" + }, + "sort": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "response.ResponseData": { + "type": "object", + "properties": { + "code": { + "description": "消息码", + "type": "integer" + }, + "data": { + "description": "附加信息" + }, + "msg": { + "description": "消息提示", + "type": "string" + } + } + }, + "util.Map": { + "type": "object", + "additionalProperties": true + }, + "vo.AliasInfo": { + "type": "object", + "properties": { + "AliasName": { + "type": "string" + } + } + }, + "vo.DisHistoryListRes": { + "type": "object", + "properties": { + "count": { + "description": "查询数据总条数", + "type": "integer" + }, + "list": { + "description": "数据列表", + "type": "array", + "items": { + "$ref": "#/definitions/model.GmDslHistory" + } + } + } + }, + "vo.EsLink": { + "type": "object", + "properties": { + "create_by_id": { + "type": "integer" + }, + "create_by_user_name": { + "type": "string" + }, + "created": { + "type": "string" + }, + "es_link_configs": { + "type": "array", + "items": { + "$ref": "#/definitions/vo.EsLinkConfig" + } + }, + "id": { + "type": "integer" + }, + "ip": { + "type": "string" + }, + "remark": { + "type": "string" + }, + "updated": { + "type": "string" + }, + "version": { + "type": "integer" + } + } + }, + "vo.EsLinkConfig": { + "type": "object", + "properties": { + "certpem": { + "type": "string" + }, + "cfg_relation_id": { + "type": "integer" + }, + "created": { + "type": "string" + }, + "es_link_id": { + "type": "integer" + }, + "id": { + "type": "integer" + }, + "ip": { + "type": "string" + }, + "keypem": { + "type": "string" + }, + "pwd": { + "type": "string" + }, + "remark": { + "type": "string" + }, + "rootpem": { + "type": "string" + }, + "share_roles": { + "type": "array", + "items": { + "type": "string" + } + }, + "updated": { + "type": "string" + }, + "user": { + "type": "string" + }, + "version": { + "type": "integer" + } + } + }, + "vo.EsLinkOpt": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "remark": { + "type": "string" + } + } + }, + "vo.GmOperaterLog": { + "type": "object", + "properties": { + "body_str": { + "type": "string" + }, + "created": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "method": { + "type": "string" + }, + "operater_action": { + "type": "string" + }, + "operater_id": { + "type": "integer" + }, + "operater_name": { + "type": "string" + }, + "operater_role_id": { + "type": "integer" + } + } + }, + "vo.Snapshot": { + "type": "object", + "properties": { + "duration": { + "type": "string" + }, + "end_epoch": { + "type": "string" + }, + "end_time": { + "type": "string" + }, + "failed_shards": { + "type": "string" + }, + "id": { + "type": "string" + }, + "indices": { + "type": "string" + }, + "start_epoch": { + "type": "string" + }, + "start_time": { + "type": "string" + }, + "status": { + "type": "string" + }, + "successful_shards": { + "type": "string" + }, + "total_shards": { + "type": "string" + } + } + }, + "vo.SnapshotDetail": { + "type": "object", + "properties": { + "snapshots": { + "type": "array", + "items": { + "type": "object", + "properties": { + "duration_in_millis": { + "type": "integer" + }, + "end_time": { + "type": "string" + }, + "end_time_in_millis": { + "type": "integer" + }, + "failures": { + "type": "array", + "items": {} + }, + "include_global_state": { + "type": "boolean" + }, + "indices": { + "type": "array", + "items": { + "type": "string" + } + }, + "shards": { + "type": "object", + "properties": { + "failed": { + "type": "integer" + }, + "successful": { + "type": "integer" + }, + "total": { + "type": "integer" + } + } + }, + "snapshot": { + "type": "string" + }, + "start_time": { + "type": "string" + }, + "start_time_in_millis": { + "type": "integer" + }, + "state": { + "type": "string" + }, + "uuid": { + "type": "string" + }, + "version": { + "type": "string" + }, + "version_id": { + "type": "integer" + } + } + } + } + } + }, + "vo.SnapshotRepository": { + "type": "object", + "properties": { + "settings": { + "$ref": "#/definitions/vo.SnapshotRepositorySettings" + }, + "type": { + "type": "string" + } + } + }, + "vo.SnapshotRepositoryList": { + "type": "object", + "properties": { + "list": { + "type": "array", + "items": { + "$ref": "#/definitions/vo.Snashot" + } + }, + "pathRepo": { + "type": "array", + "items": {} + }, + "res": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/vo.SnapshotRepository" + } + } + } + }, + "vo.SnapshotRepositorySettings": { + "type": "object", + "properties": { + "compress": { + "type": "string" + }, + "location": { + "type": "string" + }, + "max_restore_bytes_per_sec": { + "type": "string" + }, + "max_snapshot_bytes_per_sec": { + "type": "string" + }, + "readonly": { + "type": "string" + } + } + }, + "vo.Snashot": { + "type": "object", + "properties": { + "chunk_size": { + "type": "string" + }, + "compress": { + "type": "string" + }, + "location": { + "type": "string" + }, + "max_restore_bytes_per_sec": { + "type": "string" + }, + "max_snapshot_bytes_per_sec": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readonly": { + "type": "string" + }, + "type": { + "type": "string" + } + } + }, + "vo.SqlToDsl": { + "type": "object", + "properties": { + "dsl": { + "type": "string" + }, + "tableName": { + "type": "string" + } + } + }, + "vo.Status": { + "type": "object", + "properties": { + "status": { + "type": "string" + } + } + }, + "vo.TaskInfo": { + "type": "object", + "properties": { + "action": { + "type": "string" + }, + "cancellable": { + "type": "boolean" + }, + "description": { + "description": "same as Status" + }, + "headers": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "id": { + "description": "the task id (yes, this is a long in the Java source)", + "type": "integer" + }, + "node": { + "type": "string" + }, + "parent_task_id": { + "description": "like \"YxJnVYjwSBm_AUbzddTajQ:12356\"", + "type": "string" + }, + "running_time": { + "type": "string" + }, + "running_time_in_nanos": { + "type": "integer" + }, + "start_time": { + "type": "string" + }, + "start_time_in_millis": { + "type": "integer" + }, + "status": { + "description": "has separate implementations of Task.Status in Java for reindexing, replication, and \"RawTaskStatus\"" + }, + "type": { + "type": "string" + } + } + }, + "vo.User": { + "type": "object", + "properties": { + "token": { + "type": "string" + }, + "unix_time": { + "type": "integer" + } + } + } + } +} \ No newline at end of file diff --git a/docs/swagger.yaml b/docs/swagger.yaml new file mode 100644 index 0000000..fbe6259 --- /dev/null +++ b/docs/swagger.yaml @@ -0,0 +1,2095 @@ +definitions: + dto.AnalysisFilter: + properties: + filterType: + type: string + filts: + items: + properties: + columnName: + type: string + comparator: + type: string + filterType: + type: string + filts: + items: + properties: + columnName: + type: string + comparator: + type: string + filterType: + type: string + ftv: {} + type: object + type: array + ftv: {} + relation: + type: string + type: object + type: array + relation: + type: string + type: object + dto.CancelTask: + properties: + es_connect: + type: integer + task_id: + type: string + type: object + dto.CleanupeRepository: + properties: + es_connect: + type: integer + name: + type: string + type: object + dto.CreateSnapshot: + properties: + es_connect: + type: integer + ignore_unavailable: + type: boolean + include_global_state: + type: boolean + indexList: + items: + type: string + type: array + partial: + type: boolean + repositoryName: + type: string + snapshotName: + type: string + wait: + type: boolean + type: object + dto.CrudFilter: + properties: + es_connect: + type: integer + index_name: + type: string + limit: + type: integer + page: + type: integer + relation: + $ref: '#/definitions/dto.AnalysisFilter' + sort_list: + items: + $ref: '#/definitions/dto.SortStruct' + type: array + type: object + dto.DeleteEsLink: + properties: + id: + type: integer + type: object + dto.DslHistoryListReq: + properties: + date: + description: 开始时间与结束时间(格式:”年-月-日 时:分:秒“ ) + items: + type: string + type: array + indexName: + description: 索引名 + type: string + limit: + description: 拉取条数 + type: integer + page: + description: 拉取数据当前页 + type: integer + type: object + dto.EsAliasInfo: + properties: + alias_name: + type: string + es_connect: + type: integer + index_name: + type: string + new_alias_name_list: + items: + type: string + type: array + new_index_list: + items: + type: string + type: array + settings: + $ref: '#/definitions/dto.Json' + types: + type: integer + type: object + dto.EsCat: + properties: + cat: + type: string + es_connect: + type: integer + index_bytes_format: + type: string + type: object + dto.EsConnectID: + properties: + es_connect: + type: integer + type: object + dto.EsDocDeleteRowByID: + properties: + es_connect: + type: integer + id: + type: string + index_name: + type: string + type: + type: string + type: object + dto.EsDocUpdateByID: + properties: + es_connect: + type: integer + id: + type: string + index: + type: string + json: + $ref: '#/definitions/dto.Json' + type_name: + type: string + type: object + dto.EsIndexInfo: + properties: + es_connect: + type: integer + index_name: + type: string + settings: + $ref: '#/definitions/dto.Json' + types: + type: string + type: object + dto.EsMapGetProperties: + properties: + es_connect: + type: integer + index_name: + type: string + type: object + dto.EsOptimize: + properties: + es_connect: + type: integer + index_name: + type: string + type: object + dto.EsReIndexInfo: + properties: + body: + $ref: '#/definitions/util.Map' + es_connect: + type: integer + url_values: + properties: + refresh: + type: boolean + requests_per_second: + type: integer + scroll: + type: string + slices: + type: integer + timeout: + type: integer + wait_for_active_shards: + type: string + wait_for_completion: + type: boolean + type: object + type: object + dto.EsRest: + properties: + body: + type: string + es_connect: + type: integer + path: + type: string + type: object + dto.EsSnapshotInfo: + properties: + es_connect: + type: integer + snapshot_info_list: + items: + type: string + type: array + type: object + dto.GmOperaterLogList: + properties: + date: + items: + type: string + type: array + limit: + type: integer + operater_action: + type: string + operater_id: + type: integer + operater_role_id: + type: integer + page: + type: integer + type: object + dto.InsertEsLink: + properties: + cfgIds: + items: + type: integer + type: array + ip: + type: string + remark: + type: string + version: + type: integer + type: object + dto.Json: + additionalProperties: true + type: object + dto.SnapshotCreateRepository: + properties: + chunk_size: + type: string + compress: + type: string + es_connect: + type: integer + location: + type: string + max_restore_bytes_per_sec: + type: string + max_snapshot_bytes_per_sec: + type: string + name: + type: string + readonly: + type: string + type: + type: string + type: object + dto.SnapshotDelete: + properties: + es_connect: + type: integer + repository: + type: string + snapshot: + type: string + type: object + dto.SnapshotDeleteRepository: + properties: + es_connect: + type: integer + name: + type: string + type: object + dto.SnapshotDetail: + properties: + es_connect: + type: integer + repository: + type: string + snapshot: + type: string + type: object + dto.SnapshotList: + properties: + es_connect: + type: integer + repository: + type: string + type: object + dto.SnapshotRestore: + properties: + es_connect: + type: integer + ignore_unavailable: + type: boolean + include_global_state: + type: boolean + indexList: + items: + type: string + type: array + partial: + type: boolean + rename_pattern: + type: string + rename_replacement: + type: string + repositoryName: + type: string + snapshotName: + type: string + wait: + type: boolean + type: object + dto.SnapshotStatus: + properties: + es_connect: + type: integer + repository: + type: string + snapshot: + type: string + type: object + dto.SortStruct: + properties: + col: + type: string + sortRule: + type: string + type: object + dto.SqlToDsl: + properties: + sql: + type: string + type: object + dto.TaskList: + properties: + es_connect: + type: integer + type: object + dto.UpdateEsLink: + properties: + cfgIds: + items: + type: integer + type: array + id: + type: integer + ip: + type: string + remark: + type: string + version: + type: integer + type: object + dto.UpdateMapping: + properties: + es_connect: + type: integer + index_name: + type: string + properties: + $ref: '#/definitions/dto.Json' + type_name: + type: string + type: object + dto.User: + properties: + password: + type: string + username: + type: string + type: object + model.EsConnect: + properties: + certpem: + type: string + ip: + type: string + keypem: + type: string + pwd: + type: string + rootpem: + type: string + user: + type: string + version: + type: integer + type: object + model.GmDslHistory: + properties: + body: + description: 请求body + type: string + created: + description: 操作时间 + type: string + id: + description: id + type: integer + method: + description: 请求方法 + type: string + path: + description: 请求path + type: string + uid: + description: 用户id + type: integer + type: object + navicat_service.Search: + properties: + from: + type: integer + query: {} + search_after: + description: explains how the score was computed + items: {} + type: array + size: + type: integer + sort: + items: + additionalProperties: true + type: object + type: array + type: object + response.ResponseData: + properties: + code: + description: 消息码 + type: integer + data: + description: 附加信息 + msg: + description: 消息提示 + type: string + type: object + util.Map: + additionalProperties: true + type: object + vo.AliasInfo: + properties: + AliasName: + type: string + type: object + vo.DisHistoryListRes: + properties: + count: + description: 查询数据总条数 + type: integer + list: + description: 数据列表 + items: + $ref: '#/definitions/model.GmDslHistory' + type: array + type: object + vo.EsLink: + properties: + create_by_id: + type: integer + create_by_user_name: + type: string + created: + type: string + es_link_configs: + items: + $ref: '#/definitions/vo.EsLinkConfig' + type: array + id: + type: integer + ip: + type: string + remark: + type: string + updated: + type: string + version: + type: integer + type: object + vo.EsLinkConfig: + properties: + certpem: + type: string + cfg_relation_id: + type: integer + created: + type: string + es_link_id: + type: integer + id: + type: integer + ip: + type: string + keypem: + type: string + pwd: + type: string + remark: + type: string + rootpem: + type: string + share_roles: + items: + type: string + type: array + updated: + type: string + user: + type: string + version: + type: integer + type: object + vo.EsLinkOpt: + properties: + id: + type: integer + remark: + type: string + type: object + vo.GmOperaterLog: + properties: + body_str: + type: string + created: + type: string + id: + type: integer + method: + type: string + operater_action: + type: string + operater_id: + type: integer + operater_name: + type: string + operater_role_id: + type: integer + type: object + vo.Snapshot: + properties: + duration: + type: string + end_epoch: + type: string + end_time: + type: string + failed_shards: + type: string + id: + type: string + indices: + type: string + start_epoch: + type: string + start_time: + type: string + status: + type: string + successful_shards: + type: string + total_shards: + type: string + type: object + vo.SnapshotDetail: + properties: + snapshots: + items: + properties: + duration_in_millis: + type: integer + end_time: + type: string + end_time_in_millis: + type: integer + failures: + items: {} + type: array + include_global_state: + type: boolean + indices: + items: + type: string + type: array + shards: + properties: + failed: + type: integer + successful: + type: integer + total: + type: integer + type: object + snapshot: + type: string + start_time: + type: string + start_time_in_millis: + type: integer + state: + type: string + uuid: + type: string + version: + type: string + version_id: + type: integer + type: object + type: array + type: object + vo.SnapshotRepository: + properties: + settings: + $ref: '#/definitions/vo.SnapshotRepositorySettings' + type: + type: string + type: object + vo.SnapshotRepositoryList: + properties: + list: + items: + $ref: '#/definitions/vo.Snashot' + type: array + pathRepo: + items: {} + type: array + res: + additionalProperties: + $ref: '#/definitions/vo.SnapshotRepository' + type: object + type: object + vo.SnapshotRepositorySettings: + properties: + compress: + type: string + location: + type: string + max_restore_bytes_per_sec: + type: string + max_snapshot_bytes_per_sec: + type: string + readonly: + type: string + type: object + vo.Snashot: + properties: + chunk_size: + type: string + compress: + type: string + location: + type: string + max_restore_bytes_per_sec: + type: string + max_snapshot_bytes_per_sec: + type: string + name: + type: string + readonly: + type: string + type: + type: string + type: object + vo.SqlToDsl: + properties: + dsl: + type: string + tableName: + type: string + type: object + vo.Status: + properties: + status: + type: string + type: object + vo.TaskInfo: + properties: + action: + type: string + cancellable: + type: boolean + description: + description: same as Status + headers: + additionalProperties: + type: string + type: object + id: + description: the task id (yes, this is a long in the Java source) + type: integer + node: + type: string + parent_task_id: + description: like "YxJnVYjwSBm_AUbzddTajQ:12356" + type: string + running_time: + type: string + running_time_in_nanos: + type: integer + start_time: + type: string + start_time_in_millis: + type: integer + status: + description: has separate implementations of Task.Status in Java for reindexing, + replication, and "RawTaskStatus" + type: + type: string + type: object + vo.User: + properties: + token: + type: string + unix_time: + type: integer + type: object +info: + contact: + email: 1340691923@qq.com + name: 肖文龙 + url: http://www.elastic-view.cn/suporrt.html + description: 励志成为陪伴你一生的elasticsearch可视化客户端 + license: + name: Apache 2.0 + url: http://www.apache.org/licenses/LICENSE-2.0.html + title: ElasticView +paths: + /api/backUp/CleanupeRepositoryAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.CleanupeRepository' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 清理快照仓库 + tags: + - 快照 + /api/backUp/CreateSnapshotAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.CreateSnapshot' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 创建快照 + tags: + - 快照 + /api/backUp/SnapshotCreateRepositoryAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.SnapshotCreateRepository' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 新建快照仓库 + tags: + - 快照 + /api/backUp/SnapshotDeleteAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.SnapshotDelete' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 删除快照 + tags: + - 快照 + /api/backUp/SnapshotDeleteRepositoryAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.SnapshotDeleteRepository' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 删除快照仓库 + tags: + - 快照 + /api/backUp/SnapshotDetailAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.SnapshotDetail' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/vo.SnapshotDetail' + summary: 快照详情 + tags: + - 快照 + /api/backUp/SnapshotListAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.SnapshotList' + produces: + - application/json + responses: + "0": + description: "" + schema: + items: + $ref: '#/definitions/vo.Snapshot' + type: array + summary: 快照列表 + tags: + - 快照 + /api/backUp/SnapshotRepositoryListAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsSnapshotInfo' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/vo.SnapshotRepositoryList' + summary: 快照仓库列表 + tags: + - 快照 + /api/backUp/SnapshotRestoreAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.SnapshotRestore' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 将索引恢复至快照时状态 + tags: + - 快照 + /api/backUp/SnapshotStatusAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.SnapshotStatus' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 得到快照状态 + tags: + - 快照 + /api/dslHistory/CleanAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 清空DSL查询记录 + tags: + - DSL查询记录 + /api/dslHistory/ListAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.DslHistoryListReq' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/vo.DisHistoryListRes' + summary: 查询DSL查询记录接口 + tags: + - DSL查询记录 + /api/es/CatAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsCat' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: es的cat操作 + tags: + - ES + /api/es/PingAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/model.EsConnect' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 测试es连接 + tags: + - ES + /api/es/RecoverCanWrite: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsConnectID' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 将索引恢复为可写状态 由于不可抗力,ES禁止写后,默认不会自动恢复 + tags: + - ES + /api/es/RunDslGetAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsRest' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 发送DELETE请求到es + tags: + - ES + /api/es/RunDslHeadAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsRest' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 发送HEAD请求到es + tags: + - ES + /api/es/RunDslPUTAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsRest' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 发送PUT请求到es + tags: + - ES + /api/es/RunDslPostAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsRest' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 发送POST请求到es + tags: + - ES + /api/es/SqlToDslAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.SqlToDsl' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/vo.SqlToDsl' + summary: SQL 转换为 DSL + tags: + - ES + /api/es_crud/Download: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.CrudFilter' + produces: + - application/json + responses: {} + summary: 下载navicat查询excel + tags: + - 可视化筛选 + /api/es_crud/GetDSL: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.CrudFilter' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/navicat_service.Search' + summary: 可视化GetDSL + tags: + - 可视化筛选 + /api/es_crud/GetList: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.CrudFilter' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 可视化筛选获取数据 + tags: + - 可视化筛选 + /api/es_doc/DeleteRowByIDAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsDocDeleteRowByID' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 删除文档数据 + tags: + - es文档 + /api/es_doc/InsertAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsDocUpdateByID' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 新增文档 + tags: + - es文档 + /api/es_doc/UpdateByIDAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsDocUpdateByID' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 修改文档 + tags: + - es文档 + /api/es_index/AddAliasToIndex: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsAliasInfo' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 新增别名到索引 + tags: + - es索引 + /api/es_index/BatchAddAliasToIndex: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsAliasInfo' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 批量新增别名到索引 + tags: + - es索引 + /api/es_index/CacheClear: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsOptimize' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 清理索引缓存 + tags: + - es索引 + /api/es_index/Close: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsOptimize' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 关闭索引 + tags: + - es索引 + /api/es_index/CreateAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsIndexInfo' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 创建索引 + tags: + - es索引 + /api/es_index/DeleteAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.DeleteEsLink' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 删除es连接 + tags: + - es连接信息 + /api/es_index/Empty: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsOptimize' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 清空索引 + tags: + - es索引 + /api/es_index/Flush: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsOptimize' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 将所有索引刷新到磁盘 + tags: + - es索引 + /api/es_index/Forcemerge: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsOptimize' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 强制合并索引 + tags: + - es索引 + /api/es_index/GetAliasAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsAliasInfo' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/vo.AliasInfo' + summary: 获取别名 + tags: + - es索引 + /api/es_index/GetSettingsAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsIndexInfo' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 获取索引配置信息 + tags: + - es索引 + /api/es_index/GetSettingsInfoAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsIndexInfo' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 获取所有的索引配置信息 + tags: + - es索引 + /api/es_index/IndexNamesAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsConnectID' + produces: + - application/json + responses: + "0": + description: "" + schema: + items: + type: string + type: array + summary: 得到所有的索引名 + tags: + - es索引 + /api/es_index/IndexsCountAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsConnectID' + produces: + - application/json + responses: + "0": + description: "" + schema: + type: integer + summary: 得到所有的索引数量 + tags: + - es索引 + /api/es_index/InsertAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.InsertEsLink' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 新增连接信息 + tags: + - es连接信息 + /api/es_index/MoveAliasToIndex: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsAliasInfo' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 移动别名到索引 + tags: + - es索引 + /api/es_index/Open: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsOptimize' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 开启索引 + tags: + - es索引 + /api/es_index/Refresh: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsOptimize' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 刷新索引 + tags: + - es索引 + /api/es_index/ReindexAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsReIndexInfo' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 重建索引 + tags: + - es索引 + /api/es_index/RemoveAlias: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsAliasInfo' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 移除别名 + tags: + - es索引 + /api/es_index/StatsAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsIndexInfo' + produces: + - application/json + responses: + "0": + description: "" + schema: + items: + $ref: '#/definitions/vo.Status' + type: array + summary: 获取索引的Stats + tags: + - es索引 + /api/es_index/UpdateAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.UpdateEsLink' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 修改连接信息 + tags: + - es连接信息 + /api/es_link/ListAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + produces: + - application/json + responses: + "0": + description: "" + schema: + items: + $ref: '#/definitions/vo.EsLink' + type: array + summary: 获取Es连接列表 + tags: + - es连接信息 + /api/es_link/OptAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + produces: + - application/json + responses: + "0": + description: "" + schema: + items: + $ref: '#/definitions/vo.EsLinkOpt' + type: array + summary: 查看ES连接配置下拉选 + tags: + - es连接信息 + /api/es_map/ListAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.EsMapGetProperties' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: Es 映射列表 + tags: + - es映射 + /api/es_map/UpdateMappingAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.UpdateMapping' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 修改Es映射 + tags: + - es映射 + /api/es_task/CancelAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.CancelTask' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/response.ResponseData' + summary: 取消ES任务 + tags: + - es任务 + /api/es_task/ListAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.TaskList' + produces: + - application/json + responses: + "0": + description: "" + schema: + additionalProperties: + $ref: '#/definitions/vo.TaskInfo' + type: object + summary: Es任务列表 + tags: + - es任务 + /api/gm_user/login: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.User' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/vo.User' + summary: EV用户登录 + /api/operater_log/ListAction: + post: + consumes: + - application/json + parameters: + - description: 用户令牌 + in: header + name: X-Token + type: string + - description: 查询参数 + in: body + name: object + schema: + $ref: '#/definitions/dto.GmOperaterLogList' + produces: + - application/json + responses: + "0": + description: "" + schema: + $ref: '#/definitions/vo.GmOperaterLog' + summary: 查看后台操作日志 + tags: + - ev后台操作日志 +swagger: "2.0" diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..2fe4a41 --- /dev/null +++ b/go.mod @@ -0,0 +1,166 @@ +module github.com/1340691923/ElasticView + +go 1.23 + +//replace github.com/1340691923/eve-plugin-sdk-go => ../eve-plugin-sdk-go + +require ( + github.com/1340691923/eve-plugin-sdk-go v0.0.6 + github.com/360EntSecGroup-Skylar/excelize v1.4.1 + github.com/casbin/casbin/v2 v2.77.2 + github.com/casbin/gorm-adapter/v3 v3.20.0 + github.com/davecgh/go-spew v1.1.1 + github.com/elastic/elastic-transport-go/v8 v8.3.0 + github.com/elastic/go-elasticsearch/v6 v6.8.10 + github.com/elastic/go-elasticsearch/v7 v7.13.1 + github.com/elastic/go-elasticsearch/v8 v8.10.0 + github.com/gin-contrib/cors v1.4.0 + github.com/gin-gonic/gin v1.10.0 + github.com/glebarez/go-sqlite v1.21.2 + github.com/go-gormigrate/gormigrate/v2 v2.1.1 + github.com/go-redis/redis/v8 v8.11.5 + github.com/goccy/go-json v0.10.3 + github.com/golang-jwt/jwt/v5 v5.0.0 + github.com/google/uuid v1.6.0 + github.com/google/wire v0.5.0 + github.com/gorilla/websocket v1.5.0 + github.com/hashicorp/go-hclog v1.2.0 + github.com/hashicorp/go-plugin v1.6.1 + github.com/hashicorp/go-version v1.7.0 + github.com/imroc/req/v2 v2.1.0 + github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible + github.com/pkg/errors v0.9.1 + github.com/sony/sonyflake v1.2.0 + github.com/spf13/cast v1.7.0 + github.com/spf13/viper v1.16.0 + github.com/stretchr/testify v1.9.0 + github.com/swaggo/files v1.0.1 + github.com/swaggo/gin-swagger v1.6.0 + github.com/swaggo/swag v1.16.2 + github.com/teris-io/shortid v0.0.0-20220617161101-71ec9f2aa569 + github.com/tidwall/gjson v1.17.3 + github.com/xwb1989/sqlparser v0.0.0-20180606152119-120387863bf2 + go.mongodb.org/mongo-driver v1.11.4 + go.uber.org/zap v1.26.0 + golang.org/x/crypto v0.27.0 + golang.org/x/oauth2 v0.17.0 + golang.org/x/sync v0.8.0 + golang.org/x/text v0.18.0 + google.golang.org/grpc v1.63.2 + google.golang.org/protobuf v1.34.1 + gorm.io/driver/clickhouse v0.6.0 + gorm.io/driver/mysql v1.5.4 + gorm.io/driver/postgres v1.5.0 + gorm.io/gorm v1.25.7 + modernc.org/sqlite v1.23.1 +) + +require ( + filippo.io/edwards25519 v1.1.0 // indirect + github.com/ClickHouse/ch-go v0.58.2 // indirect + github.com/ClickHouse/clickhouse-go/v2 v2.15.0 // indirect + github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible // indirect + github.com/KyleBanks/depth v1.2.1 // indirect + github.com/andybalholm/brotli v1.1.0 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/bytedance/sonic v1.11.6 // indirect + github.com/bytedance/sonic/loader v0.1.1 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/cloudwego/base64x v0.1.4 // indirect + github.com/cloudwego/iasm v0.2.0 // indirect + github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect + github.com/dustin/go-humanize v1.0.1 // indirect + github.com/fatih/color v1.13.0 // indirect + github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/gabriel-vasile/mimetype v1.4.3 // indirect + github.com/gin-contrib/sse v0.1.0 // indirect + github.com/glebarez/sqlite v1.9.0 // indirect + github.com/go-faster/city v1.0.1 // indirect + github.com/go-faster/errors v0.6.1 // indirect + github.com/go-openapi/jsonpointer v0.19.5 // indirect + github.com/go-openapi/jsonreference v0.20.0 // indirect + github.com/go-openapi/spec v0.20.4 // indirect + github.com/go-openapi/swag v0.19.15 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-playground/validator/v10 v10.20.0 // indirect + github.com/go-sql-driver/mysql v1.8.0 // indirect + github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 // indirect + github.com/golang-sql/sqlexp v0.1.0 // indirect + github.com/golang/protobuf v1.5.4 // indirect + github.com/golang/snappy v0.0.4 // indirect + github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect + github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect + github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hashicorp/yamux v0.1.1 // indirect + github.com/jackc/pgpassfile v1.0.0 // indirect + github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect + github.com/jackc/pgx/v5 v5.3.0 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect + github.com/jonboulle/clockwork v0.4.0 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/compress v1.17.9 // indirect + github.com/klauspost/cpuid/v2 v2.2.7 // indirect + github.com/leodido/go-urn v1.4.0 // indirect + github.com/lestrrat-go/strftime v1.0.6 // indirect + github.com/lib/pq v1.10.9 // indirect + github.com/magiconair/properties v1.8.7 // indirect + github.com/mailru/easyjson v0.7.7 // indirect + github.com/mattn/go-colorable v0.1.12 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/microsoft/go-mssqldb v1.0.0 // indirect + github.com/mitchellh/go-testing-interface v1.0.0 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect + github.com/montanaflynn/stats v0.6.6 // indirect + github.com/oklog/run v1.0.0 // indirect + github.com/paulmach/orb v0.10.0 // indirect + github.com/pelletier/go-toml/v2 v2.2.2 // indirect + github.com/pierrec/lz4/v4 v4.1.18 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/prometheus/client_golang v1.14.0 // indirect + github.com/prometheus/client_model v0.3.0 // indirect + github.com/prometheus/common v0.37.0 // indirect + github.com/prometheus/procfs v0.8.0 // indirect + github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect + github.com/segmentio/asm v1.2.0 // indirect + github.com/shopspring/decimal v1.3.1 // indirect + github.com/spf13/afero v1.9.5 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/subosito/gotenv v1.4.2 // indirect + github.com/tidwall/match v1.1.1 // indirect + github.com/tidwall/pretty v1.2.0 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect + github.com/ugorji/go/codec v1.2.12 // indirect + github.com/valyala/bytebufferpool v1.0.0 // indirect + github.com/valyala/fasthttp v1.56.0 // indirect + github.com/xdg-go/pbkdf2 v1.0.0 // indirect + github.com/xdg-go/scram v1.1.1 // indirect + github.com/xdg-go/stringprep v1.0.3 // indirect + github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect + go.opentelemetry.io/otel v1.19.0 // indirect + go.opentelemetry.io/otel/trace v1.19.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + golang.org/x/arch v0.8.0 // indirect + golang.org/x/net v0.29.0 // indirect + golang.org/x/sys v0.25.0 // indirect + golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect + google.golang.org/appengine v1.6.8 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de // indirect + gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + gorm.io/driver/sqlserver v1.4.1 // indirect + gorm.io/plugin/dbresolver v1.5.1 // indirect + modernc.org/libc v1.22.5 // indirect + modernc.org/mathutil v1.5.0 // indirect + modernc.org/memory v1.5.0 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..cae24de --- /dev/null +++ b/go.sum @@ -0,0 +1,3187 @@ +bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= +bazil.org/fuse v0.0.0-20200407214033-5883e5a4b512/go.mod h1:FbcW6z/2VytnFDhZfumh8Ss8zxHE6qpMP5sHTRe0EaM= +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= +cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= +cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= +cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= +cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I= +cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= +cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= +cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= +cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E= +cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= +cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE= +cloud.google.com/go/accesscontextmanager v1.6.0/go.mod h1:8XCvZWfYw3K/ji0iVnp+6pu7huxoQTLmxAbVjbloTtM= +cloud.google.com/go/accesscontextmanager v1.7.0/go.mod h1:CEGLewx8dwa33aDAZQujl7Dx+uYhS0eay198wB/VumQ= +cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= +cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= +cloud.google.com/go/aiplatform v1.27.0/go.mod h1:Bvxqtl40l0WImSb04d0hXFU7gDOiq9jQmorivIiWcKg= +cloud.google.com/go/aiplatform v1.35.0/go.mod h1:7MFT/vCaOyZT/4IIFfxH4ErVg/4ku6lKv3w0+tFTgXQ= +cloud.google.com/go/aiplatform v1.36.1/go.mod h1:WTm12vJRPARNvJ+v6P52RDHCNe4AhvjcIZ/9/RRHy/k= +cloud.google.com/go/aiplatform v1.37.0/go.mod h1:IU2Cv29Lv9oCn/9LkFiiuKfwrRTq+QQMbW+hPCxJGZw= +cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= +cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= +cloud.google.com/go/analytics v0.17.0/go.mod h1:WXFa3WSym4IZ+JiKmavYdJwGG/CvpqiqczmL59bTD9M= +cloud.google.com/go/analytics v0.18.0/go.mod h1:ZkeHGQlcIPkw0R/GW+boWHhCOR43xz9RN/jn7WcqfIE= +cloud.google.com/go/analytics v0.19.0/go.mod h1:k8liqf5/HCnOUkbawNtrWWc+UAzyDlW89doe8TtoDsE= +cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk= +cloud.google.com/go/apigateway v1.4.0/go.mod h1:pHVY9MKGaH9PQ3pJ4YLzoj6U5FUDeDFBllIz7WmzJoc= +cloud.google.com/go/apigateway v1.5.0/go.mod h1:GpnZR3Q4rR7LVu5951qfXPJCHquZt02jf7xQx7kpqN8= +cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc= +cloud.google.com/go/apigeeconnect v1.4.0/go.mod h1:kV4NwOKqjvt2JYR0AoIWo2QGfoRtn/pkS3QlHp0Ni04= +cloud.google.com/go/apigeeconnect v1.5.0/go.mod h1:KFaCqvBRU6idyhSNyn3vlHXc8VMDJdRmwDF6JyFRqZ8= +cloud.google.com/go/apigeeregistry v0.4.0/go.mod h1:EUG4PGcsZvxOXAdyEghIdXwAEi/4MEaoqLMLDMIwKXY= +cloud.google.com/go/apigeeregistry v0.5.0/go.mod h1:YR5+s0BVNZfVOUkMa5pAR2xGd0A473vA5M7j247o1wM= +cloud.google.com/go/apigeeregistry v0.6.0/go.mod h1:BFNzW7yQVLZ3yj0TKcwzb8n25CFBri51GVGOEUcgQsc= +cloud.google.com/go/apikeys v0.4.0/go.mod h1:XATS/yqZbaBK0HOssf+ALHp8jAlNHUgyfprvNcBIszU= +cloud.google.com/go/apikeys v0.5.0/go.mod h1:5aQfwY4D+ewMMWScd3hm2en3hCj+BROlyrt3ytS7KLI= +cloud.google.com/go/apikeys v0.6.0/go.mod h1:kbpXu5upyiAlGkKrJgQl8A0rKNNJ7dQ377pdroRSSi8= +cloud.google.com/go/appengine v1.4.0/go.mod h1:CS2NhuBuDXM9f+qscZ6V86m1MIIqPj3WC/UoEuR1Sno= +cloud.google.com/go/appengine v1.5.0/go.mod h1:TfasSozdkFI0zeoxW3PTBLiNqRmzraodCWatWI9Dmak= +cloud.google.com/go/appengine v1.6.0/go.mod h1:hg6i0J/BD2cKmDJbaFSYHFyZkgBEfQrDg/X0V5fJn84= +cloud.google.com/go/appengine v1.7.0/go.mod h1:eZqpbHFCqRGa2aCdope7eC0SWLV1j0neb/QnMJVWx6A= +cloud.google.com/go/appengine v1.7.1/go.mod h1:IHLToyb/3fKutRysUlFO0BPt5j7RiQ45nrzEJmKTo6E= +cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= +cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= +cloud.google.com/go/area120 v0.7.0/go.mod h1:a3+8EUD1SX5RUcCs3MY5YasiO1z6yLiNLRiFrykbynY= +cloud.google.com/go/area120 v0.7.1/go.mod h1:j84i4E1RboTWjKtZVWXPqvK5VHQFJRF2c1Nm69pWm9k= +cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= +cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= +cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0= +cloud.google.com/go/artifactregistry v1.9.0/go.mod h1:2K2RqvA2CYvAeARHRkLDhMDJ3OXy26h3XW+3/Jh2uYc= +cloud.google.com/go/artifactregistry v1.11.1/go.mod h1:lLYghw+Itq9SONbCa1YWBoWs1nOucMH0pwXN1rOBZFI= +cloud.google.com/go/artifactregistry v1.11.2/go.mod h1:nLZns771ZGAwVLzTX/7Al6R9ehma4WUEhZGWV6CeQNQ= +cloud.google.com/go/artifactregistry v1.12.0/go.mod h1:o6P3MIvtzTOnmvGagO9v/rOjjA0HmhJ+/6KAXrmYDCI= +cloud.google.com/go/artifactregistry v1.13.0/go.mod h1:uy/LNfoOIivepGhooAUpL1i30Hgee3Cu0l4VTWHUC08= +cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= +cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= +cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= +cloud.google.com/go/asset v1.9.0/go.mod h1:83MOE6jEJBMqFKadM9NLRcs80Gdw76qGuHn8m3h8oHQ= +cloud.google.com/go/asset v1.10.0/go.mod h1:pLz7uokL80qKhzKr4xXGvBQXnzHn5evJAEAtZiIb0wY= +cloud.google.com/go/asset v1.11.1/go.mod h1:fSwLhbRvC9p9CXQHJ3BgFeQNM4c9x10lqlrdEUYXlJo= +cloud.google.com/go/asset v1.12.0/go.mod h1:h9/sFOa4eDIyKmH6QMpm4eUK3pDojWnUhTgJlk762Hg= +cloud.google.com/go/asset v1.13.0/go.mod h1:WQAMyYek/b7NBpYq/K4KJWcRqzoalEsxz/t/dTk4THw= +cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= +cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= +cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= +cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= +cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= +cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E= +cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= +cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= +cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= +cloud.google.com/go/automl v1.8.0/go.mod h1:xWx7G/aPEe/NP+qzYXktoBSDfjO+vnKMGgsApGJJquM= +cloud.google.com/go/automl v1.12.0/go.mod h1:tWDcHDp86aMIuHmyvjuKeeHEGq76lD7ZqfGLN6B0NuU= +cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc= +cloud.google.com/go/baremetalsolution v0.4.0/go.mod h1:BymplhAadOO/eBa7KewQ0Ppg4A4Wplbn+PsFKRLo0uI= +cloud.google.com/go/baremetalsolution v0.5.0/go.mod h1:dXGxEkmR9BMwxhzBhV0AioD0ULBmuLZI8CdwalUxuss= +cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE= +cloud.google.com/go/batch v0.4.0/go.mod h1:WZkHnP43R/QCGQsZ+0JyG4i79ranE2u8xvjq/9+STPE= +cloud.google.com/go/batch v0.7.0/go.mod h1:vLZN95s6teRUqRQ4s3RLDsH8PvboqBK+rn1oevL159g= +cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4= +cloud.google.com/go/beyondcorp v0.3.0/go.mod h1:E5U5lcrcXMsCuoDNyGrpyTm/hn7ne941Jz2vmksAxW8= +cloud.google.com/go/beyondcorp v0.4.0/go.mod h1:3ApA0mbhHx6YImmuubf5pyW8srKnCEPON32/5hj+RmM= +cloud.google.com/go/beyondcorp v0.5.0/go.mod h1:uFqj9X+dSfrheVp7ssLTaRHd2EHqSL4QZmH4e8WXGGU= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= +cloud.google.com/go/bigquery v1.43.0/go.mod h1:ZMQcXHsl+xmU1z36G2jNGZmKp9zNY5BUua5wDgmNCfw= +cloud.google.com/go/bigquery v1.44.0/go.mod h1:0Y33VqXTEsbamHJvJHdFmtqHvMIY28aK1+dFsvaChGc= +cloud.google.com/go/bigquery v1.47.0/go.mod h1:sA9XOgy0A8vQK9+MWhEQTY6Tix87M/ZurWFIxmF9I/E= +cloud.google.com/go/bigquery v1.48.0/go.mod h1:QAwSz+ipNgfL5jxiaK7weyOhzdoAy1zFm0Nf1fysJac= +cloud.google.com/go/bigquery v1.49.0/go.mod h1:Sv8hMmTFFYBlt/ftw2uN6dFdQPzBlREY9yBh7Oy7/4Q= +cloud.google.com/go/bigquery v1.50.0/go.mod h1:YrleYEh2pSEbgTBZYMJ5SuSr0ML3ypjRB1zgf7pvQLU= +cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= +cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= +cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI= +cloud.google.com/go/billing v1.7.0/go.mod h1:q457N3Hbj9lYwwRbnlD7vUpyjq6u5U1RAOArInEiD5Y= +cloud.google.com/go/billing v1.12.0/go.mod h1:yKrZio/eu+okO/2McZEbch17O5CB5NpZhhXG6Z766ss= +cloud.google.com/go/billing v1.13.0/go.mod h1:7kB2W9Xf98hP9Sr12KfECgfGclsH3CQR0R08tnRlRbc= +cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= +cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= +cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0= +cloud.google.com/go/binaryauthorization v1.4.0/go.mod h1:tsSPQrBd77VLplV70GUhBf/Zm3FsKmgSqgm4UmiDItk= +cloud.google.com/go/binaryauthorization v1.5.0/go.mod h1:OSe4OU1nN/VswXKRBmciKpo9LulY41gch5c68htf3/Q= +cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg= +cloud.google.com/go/certificatemanager v1.4.0/go.mod h1:vowpercVFyqs8ABSmrdV+GiFf2H/ch3KyudYQEMM590= +cloud.google.com/go/certificatemanager v1.6.0/go.mod h1:3Hh64rCKjRAX8dXgRAyOcY5vQ/fE1sh8o+Mdd6KPgY8= +cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk= +cloud.google.com/go/channel v1.9.0/go.mod h1:jcu05W0my9Vx4mt3/rEHpfxc9eKi9XwsdDL8yBMbKUk= +cloud.google.com/go/channel v1.11.0/go.mod h1:IdtI0uWGqhEeatSB62VOoJ8FSUhJ9/+iGkJVqp74CGE= +cloud.google.com/go/channel v1.12.0/go.mod h1:VkxCGKASi4Cq7TbXxlaBezonAYpp1GCnKMY6tnMQnLU= +cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U= +cloud.google.com/go/cloudbuild v1.4.0/go.mod h1:5Qwa40LHiOXmz3386FrjrYM93rM/hdRr7b53sySrTqA= +cloud.google.com/go/cloudbuild v1.6.0/go.mod h1:UIbc/w9QCbH12xX+ezUsgblrWv+Cv4Tw83GiSMHOn9M= +cloud.google.com/go/cloudbuild v1.7.0/go.mod h1:zb5tWh2XI6lR9zQmsm1VRA+7OCuve5d8S+zJUul8KTg= +cloud.google.com/go/cloudbuild v1.9.0/go.mod h1:qK1d7s4QlO0VwfYn5YuClDGg2hfmLZEb4wQGAbIgL1s= +cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM= +cloud.google.com/go/clouddms v1.4.0/go.mod h1:Eh7sUGCC+aKry14O1NRljhjyrr0NFC0G2cjwX0cByRk= +cloud.google.com/go/clouddms v1.5.0/go.mod h1:QSxQnhikCLUw13iAbffF2CZxAER3xDGNHjsTAkQJcQA= +cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= +cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= +cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4= +cloud.google.com/go/cloudtasks v1.8.0/go.mod h1:gQXUIwCSOI4yPVK7DgTVFiiP0ZW/eQkydWzwVMdHxrI= +cloud.google.com/go/cloudtasks v1.9.0/go.mod h1:w+EyLsVkLWHcOaqNEyvcKAsWp9p29dL6uL9Nst1cI7Y= +cloud.google.com/go/cloudtasks v1.10.0/go.mod h1:NDSoTLkZ3+vExFEWu2UJV1arUyzVDAiZtdWcsUyNwBs= +cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= +cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= +cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= +cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= +cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= +cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= +cloud.google.com/go/compute v1.12.0/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute v1.13.0/go.mod h1:5aPTS0cUNMIc1CE546K+Th6weJUNQErARyZtRXDJ8GE= +cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo= +cloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63rR+SXhcpA= +cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= +cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= +cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE= +cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= +cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= +cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= +cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w= +cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg= +cloud.google.com/go/container v1.7.0/go.mod h1:Dp5AHtmothHGX3DwwIHPgq45Y8KmNsgN3amoYfxVkLo= +cloud.google.com/go/container v1.13.1/go.mod h1:6wgbMPeQRw9rSnKBCAJXnds3Pzj03C4JHamr8asWKy4= +cloud.google.com/go/container v1.14.0/go.mod h1:3AoJMPhHfLDxLvrlVWaK57IXzaPnLaZq63WX59aQBfM= +cloud.google.com/go/container v1.15.0/go.mod h1:ft+9S0WGjAyjDggg5S06DXj+fHJICWg8L7isCQe9pQA= +cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= +cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= +cloud.google.com/go/containeranalysis v0.7.0/go.mod h1:9aUL+/vZ55P2CXfuZjS4UjQ9AgXoSw8Ts6lemfmxBxI= +cloud.google.com/go/containeranalysis v0.9.0/go.mod h1:orbOANbwk5Ejoom+s+DUCTTJ7IBdBQJDcSylAx/on9s= +cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= +cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= +cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= +cloud.google.com/go/datacatalog v1.7.0/go.mod h1:9mEl4AuDYWw81UGc41HonIHH7/sn52H0/tc8f8ZbZIE= +cloud.google.com/go/datacatalog v1.8.0/go.mod h1:KYuoVOv9BM8EYz/4eMFxrr4DUKhGIOXxZoKYF5wdISM= +cloud.google.com/go/datacatalog v1.8.1/go.mod h1:RJ58z4rMp3gvETA465Vg+ag8BGgBdnRPEMMSTr5Uv+M= +cloud.google.com/go/datacatalog v1.12.0/go.mod h1:CWae8rFkfp6LzLumKOnmVh4+Zle4A3NXLzVJ1d1mRm0= +cloud.google.com/go/datacatalog v1.13.0/go.mod h1:E4Rj9a5ZtAxcQJlEBTLgMTphfP11/lNaAshpoBgemX8= +cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= +cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= +cloud.google.com/go/dataflow v0.8.0/go.mod h1:Rcf5YgTKPtQyYz8bLYhFoIV/vP39eL7fWNcSOyFfLJE= +cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= +cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= +cloud.google.com/go/dataform v0.5.0/go.mod h1:GFUYRe8IBa2hcomWplodVmUx/iTL0FrsauObOM3Ipr0= +cloud.google.com/go/dataform v0.6.0/go.mod h1:QPflImQy33e29VuapFdf19oPbE4aYTJxr31OAPV+ulA= +cloud.google.com/go/dataform v0.7.0/go.mod h1:7NulqnVozfHvWUBpMDfKMUESr+85aJsC/2O0o3jWPDE= +cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38= +cloud.google.com/go/datafusion v1.5.0/go.mod h1:Kz+l1FGHB0J+4XF2fud96WMmRiq/wj8N9u007vyXZ2w= +cloud.google.com/go/datafusion v1.6.0/go.mod h1:WBsMF8F1RhSXvVM8rCV3AeyWVxcC2xY6vith3iw3S+8= +cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= +cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= +cloud.google.com/go/datalabeling v0.7.0/go.mod h1:WPQb1y08RJbmpM3ww0CSUAGweL0SxByuW2E+FU+wXcM= +cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA= +cloud.google.com/go/dataplex v1.4.0/go.mod h1:X51GfLXEMVJ6UN47ESVqvlsRplbLhcsAt0kZCCKsU0A= +cloud.google.com/go/dataplex v1.5.2/go.mod h1:cVMgQHsmfRoI5KFYq4JtIBEUbYwc3c7tXmIDhRmNNVQ= +cloud.google.com/go/dataplex v1.6.0/go.mod h1:bMsomC/aEJOSpHXdFKFGQ1b0TDPIeL28nJObeO1ppRs= +cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s= +cloud.google.com/go/dataproc v1.8.0/go.mod h1:5OW+zNAH0pMpw14JVrPONsxMQYMBqJuzORhIBfBn9uI= +cloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4= +cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= +cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= +cloud.google.com/go/dataqna v0.7.0/go.mod h1:Lx9OcIIeqCrw1a6KdO3/5KMP1wAmTc0slZWwP12Qq3c= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/datastore v1.10.0/go.mod h1:PC5UzAmDEkAmkfaknstTYbNpgE49HAgW2J1gcgUfmdM= +cloud.google.com/go/datastore v1.11.0/go.mod h1:TvGxBIHCS50u8jzG+AW/ppf87v1of8nwzFNgEZU1D3c= +cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= +cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= +cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g= +cloud.google.com/go/datastream v1.5.0/go.mod h1:6TZMMNPwjUqZHBKPQ1wwXpb0d5VDVPl2/XoS5yi88q4= +cloud.google.com/go/datastream v1.6.0/go.mod h1:6LQSuswqLa7S4rPAOZFVjHIG3wJIjZcZrw8JDEDJuIs= +cloud.google.com/go/datastream v1.7.0/go.mod h1:uxVRMm2elUSPuh65IbZpzJNMbuzkcvu5CjMqVIUHrww= +cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c= +cloud.google.com/go/deploy v1.5.0/go.mod h1:ffgdD0B89tToyW/U/D2eL0jN2+IEV/3EMuXHA0l4r+s= +cloud.google.com/go/deploy v1.6.0/go.mod h1:f9PTHehG/DjCom3QH0cntOVRm93uGBDt2vKzAPwpXQI= +cloud.google.com/go/deploy v1.8.0/go.mod h1:z3myEJnA/2wnB4sgjqdMfgxCA0EqC3RBTNcVPs93mtQ= +cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= +cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= +cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= +cloud.google.com/go/dialogflow v1.18.0/go.mod h1:trO7Zu5YdyEuR+BhSNOqJezyFQ3aUzz0njv7sMx/iek= +cloud.google.com/go/dialogflow v1.19.0/go.mod h1:JVmlG1TwykZDtxtTXujec4tQ+D8SBFMoosgy+6Gn0s0= +cloud.google.com/go/dialogflow v1.29.0/go.mod h1:b+2bzMe+k1s9V+F2jbJwpHPzrnIyHihAdRFMtn2WXuM= +cloud.google.com/go/dialogflow v1.31.0/go.mod h1:cuoUccuL1Z+HADhyIA7dci3N5zUssgpBJmCzI6fNRB4= +cloud.google.com/go/dialogflow v1.32.0/go.mod h1:jG9TRJl8CKrDhMEcvfcfFkkpp8ZhgPz3sBGmAUYJ2qE= +cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM= +cloud.google.com/go/dlp v1.7.0/go.mod h1:68ak9vCiMBjbasxeVD17hVPxDEck+ExiHavX8kiHG+Q= +cloud.google.com/go/dlp v1.9.0/go.mod h1:qdgmqgTyReTz5/YNSSuueR8pl7hO0o9bQ39ZhtgkWp4= +cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= +cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= +cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k= +cloud.google.com/go/documentai v1.10.0/go.mod h1:vod47hKQIPeCfN2QS/jULIvQTugbmdc0ZvxxfQY1bg4= +cloud.google.com/go/documentai v1.16.0/go.mod h1:o0o0DLTEZ+YnJZ+J4wNfTxmDVyrkzFvttBXXtYRMHkM= +cloud.google.com/go/documentai v1.18.0/go.mod h1:F6CK6iUH8J81FehpskRmhLq/3VlwQvb7TvwOceQ2tbs= +cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= +cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= +cloud.google.com/go/domains v0.8.0/go.mod h1:M9i3MMDzGFXsydri9/vW+EWz9sWb4I6WyHqdlAk0idE= +cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= +cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= +cloud.google.com/go/edgecontainer v0.3.0/go.mod h1:FLDpP4nykgwwIfcLt6zInhprzw0lEi2P1fjO6Ie0qbc= +cloud.google.com/go/edgecontainer v1.0.0/go.mod h1:cttArqZpBB2q58W/upSG++ooo6EsblxDIolxa3jSjbY= +cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= +cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI= +cloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8= +cloud.google.com/go/essentialcontacts v1.5.0/go.mod h1:ay29Z4zODTuwliK7SnX8E86aUF2CTzdNtvv42niCX0M= +cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc= +cloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw= +cloud.google.com/go/eventarc v1.10.0/go.mod h1:u3R35tmZ9HvswGRBnF48IlYgYeBcPUCjkr4BTdem2Kw= +cloud.google.com/go/eventarc v1.11.0/go.mod h1:PyUjsUKPWoRBCHeOxZd/lbOOjahV41icXyUY5kSTvVY= +cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w= +cloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI= +cloud.google.com/go/filestore v1.5.0/go.mod h1:FqBXDWBp4YLHqRnVGveOkHDf8svj9r5+mUDLupOWEDs= +cloud.google.com/go/filestore v1.6.0/go.mod h1:di5unNuss/qfZTw2U9nhFqo8/ZDSc466dre85Kydllg= +cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= +cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE= +cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= +cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= +cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY= +cloud.google.com/go/functions v1.9.0/go.mod h1:Y+Dz8yGguzO3PpIjhLTbnqV1CWmgQ5UwtlpzoyquQ08= +cloud.google.com/go/functions v1.10.0/go.mod h1:0D3hEOe3DbEvCXtYOZHQZmD+SzYsi1YbI7dGvHfldXw= +cloud.google.com/go/functions v1.12.0/go.mod h1:AXWGrF3e2C/5ehvwYo/GH6O5s09tOPksiKhz+hH8WkA= +cloud.google.com/go/functions v1.13.0/go.mod h1:EU4O007sQm6Ef/PwRsI8N2umygGqPBS/IZQKBQBcJ3c= +cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= +cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= +cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w= +cloud.google.com/go/gaming v1.8.0/go.mod h1:xAqjS8b7jAVW0KFYeRUxngo9My3f33kFmua++Pi+ggM= +cloud.google.com/go/gaming v1.9.0/go.mod h1:Fc7kEmCObylSWLO334NcO+O9QMDyz+TKC4v1D7X+Bc0= +cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60= +cloud.google.com/go/gkebackup v0.3.0/go.mod h1:n/E671i1aOQvUxT541aTkCwExO/bTer2HDlj4TsBRAo= +cloud.google.com/go/gkebackup v0.4.0/go.mod h1:byAyBGUwYGEEww7xsbnUTBHIYcOPy/PgUWUtOeRm9Vg= +cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= +cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= +cloud.google.com/go/gkeconnect v0.7.0/go.mod h1:SNfmVqPkaEi3bF/B3CNZOAYPYdg7sU+obZ+QTky2Myw= +cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= +cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= +cloud.google.com/go/gkehub v0.11.0/go.mod h1:JOWHlmN+GHyIbuWQPl47/C2RFhnFKH38jH9Ascu3n0E= +cloud.google.com/go/gkehub v0.12.0/go.mod h1:djiIwwzTTBrF5NaXCGv3mf7klpEMcST17VBTVVDcuaw= +cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA= +cloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZTyIgLKSalC7tuI= +cloud.google.com/go/gkemulticloud v0.5.0/go.mod h1:W0JDkiyi3Tqh0TJr//y19wyb1yf8llHVto2Htf2Ja3Y= +cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= +cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM= +cloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o= +cloud.google.com/go/gsuiteaddons v1.5.0/go.mod h1:TFCClYLd64Eaa12sFVmUyG62tk4mdIsI7pAnSXRkcFo= +cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= +cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= +cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= +cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc= +cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= +cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGESjkE= +cloud.google.com/go/iam v0.11.0/go.mod h1:9PiLDanza5D+oWFZiH1uG+RnRCfEGKoyl6yo4cgWZGY= +cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= +cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= +cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= +cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A= +cloud.google.com/go/iap v1.6.0/go.mod h1:NSuvI9C/j7UdjGjIde7t7HBz+QTwBcapPE07+sSRcLk= +cloud.google.com/go/iap v1.7.0/go.mod h1:beqQx56T9O1G1yNPph+spKpNibDlYIiIixiqsQXxLIo= +cloud.google.com/go/iap v1.7.1/go.mod h1:WapEwPc7ZxGt2jFGB/C/bm+hP0Y6NXzOYGjpPnmMS74= +cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= +cloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY= +cloud.google.com/go/ids v1.3.0/go.mod h1:JBdTYwANikFKaDP6LtW5JAi4gubs57SVNQjemdt6xV4= +cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs= +cloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g= +cloud.google.com/go/iot v1.5.0/go.mod h1:mpz5259PDl3XJthEmh9+ap0affn/MqNSP4My77Qql9o= +cloud.google.com/go/iot v1.6.0/go.mod h1:IqdAsmE2cTYYNO1Fvjfzo9po179rAtJeVGUvkLN3rLE= +cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= +cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg= +cloud.google.com/go/kms v1.6.0/go.mod h1:Jjy850yySiasBUDi6KFUwUv2n1+o7QZFyuUJg6OgjA0= +cloud.google.com/go/kms v1.8.0/go.mod h1:4xFEhYFqvW+4VMELtZyxomGSYtSQKzM178ylFW4jMAg= +cloud.google.com/go/kms v1.9.0/go.mod h1:qb1tPTgfF9RQP8e1wq4cLFErVuTJv7UsSC915J8dh3w= +cloud.google.com/go/kms v1.10.0/go.mod h1:ng3KTUtQQU9bPX3+QGLsflZIHlkbn8amFAMY63m8d24= +cloud.google.com/go/kms v1.10.1/go.mod h1:rIWk/TryCkR59GMC3YtHtXeLzd634lBbKenvyySAyYI= +cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= +cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= +cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE= +cloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8= +cloud.google.com/go/language v1.9.0/go.mod h1:Ns15WooPM5Ad/5no/0n81yUetis74g3zrbeJBE+ptUY= +cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= +cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= +cloud.google.com/go/lifesciences v0.8.0/go.mod h1:lFxiEOMqII6XggGbOnKiyZ7IBwoIqA84ClvoezaA/bo= +cloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw= +cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M= +cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= +cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= +cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo= +cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= +cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM= +cloud.google.com/go/managedidentities v1.5.0/go.mod h1:+dWcZ0JlUmpuxpIDfyP5pP5y0bLdRwOS4Lp7gMni/LA= +cloud.google.com/go/maps v0.1.0/go.mod h1:BQM97WGyfw9FWEmQMpZ5T6cpovXXSd1cGmFma94eubI= +cloud.google.com/go/maps v0.6.0/go.mod h1:o6DAMMfb+aINHz/p/jbcY+mYeXBoZoxTfdSQ8VAJaCw= +cloud.google.com/go/maps v0.7.0/go.mod h1:3GnvVl3cqeSvgMcpRlQidXsPYuDGQ8naBis7MVzpXsY= +cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= +cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= +cloud.google.com/go/mediatranslation v0.7.0/go.mod h1:LCnB/gZr90ONOIQLgSXagp8XUW1ODs2UmUMvcgMfI2I= +cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= +cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= +cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA= +cloud.google.com/go/memcache v1.7.0/go.mod h1:ywMKfjWhNtkQTxrWxCkCFkoPjLHPW6A7WOTVI8xy3LY= +cloud.google.com/go/memcache v1.9.0/go.mod h1:8oEyzXCu+zo9RzlEaEjHl4KkgjlNDaXbCQeQWlzNFJM= +cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= +cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= +cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8= +cloud.google.com/go/metastore v1.8.0/go.mod h1:zHiMc4ZUpBiM7twCIFQmJ9JMEkDSyZS9U12uf7wHqSI= +cloud.google.com/go/metastore v1.10.0/go.mod h1:fPEnH3g4JJAk+gMRnrAnoqyv2lpUCqJPWOodSaf45Eo= +cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk= +cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4= +cloud.google.com/go/monitoring v1.12.0/go.mod h1:yx8Jj2fZNEkL/GYZyTLS4ZtZEZN8WtDEiEqG4kLK50w= +cloud.google.com/go/monitoring v1.13.0/go.mod h1:k2yMBAB1H9JT/QETjNkgdCGD9bPF712XiLTVr+cBrpw= +cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= +cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= +cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= +cloud.google.com/go/networkconnectivity v1.7.0/go.mod h1:RMuSbkdbPwNMQjB5HBWD5MpTBnNm39iAVpC3TmsExt8= +cloud.google.com/go/networkconnectivity v1.10.0/go.mod h1:UP4O4sWXJG13AqrTdQCD9TnLGEbtNRqjuaaA7bNjF5E= +cloud.google.com/go/networkconnectivity v1.11.0/go.mod h1:iWmDD4QF16VCDLXUqvyspJjIEtBR/4zq5hwnY2X3scM= +cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8= +cloud.google.com/go/networkmanagement v1.5.0/go.mod h1:ZnOeZ/evzUdUsnvRt792H0uYEnHQEMaz+REhhzJRcf4= +cloud.google.com/go/networkmanagement v1.6.0/go.mod h1:5pKPqyXjB/sgtvB5xqOemumoQNB7y95Q7S+4rjSOPYY= +cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= +cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= +cloud.google.com/go/networksecurity v0.7.0/go.mod h1:mAnzoxx/8TBSyXEeESMy9OOYwo1v+gZ5eMRnsT5bC8k= +cloud.google.com/go/networksecurity v0.8.0/go.mod h1:B78DkqsxFG5zRSVuwYFRZ9Xz8IcQ5iECsNrPn74hKHU= +cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= +cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= +cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA= +cloud.google.com/go/notebooks v1.5.0/go.mod h1:q8mwhnP9aR8Hpfnrc5iN5IBhrXUy8S2vuYs+kBJ/gu0= +cloud.google.com/go/notebooks v1.7.0/go.mod h1:PVlaDGfJgj1fl1S3dUwhFMXFgfYGhYQt2164xOMONmE= +cloud.google.com/go/notebooks v1.8.0/go.mod h1:Lq6dYKOYOWUCTvw5t2q1gp1lAp0zxAxRycayS0iJcqQ= +cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4= +cloud.google.com/go/optimization v1.2.0/go.mod h1:Lr7SOHdRDENsh+WXVmQhQTrzdu9ybg0NecjHidBq6xs= +cloud.google.com/go/optimization v1.3.1/go.mod h1:IvUSefKiwd1a5p0RgHDbWCIbDFgKuEdB+fPPuP0IDLI= +cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA= +cloud.google.com/go/orchestration v1.4.0/go.mod h1:6W5NLFWs2TlniBphAViZEVhrXRSMgUGDfW7vrWKvsBk= +cloud.google.com/go/orchestration v1.6.0/go.mod h1:M62Bevp7pkxStDfFfTuCOaXgaaqRAga1yKyoMtEoWPQ= +cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE= +cloud.google.com/go/orgpolicy v1.5.0/go.mod h1:hZEc5q3wzwXJaKrsx5+Ewg0u1LxJ51nNFlext7Tanwc= +cloud.google.com/go/orgpolicy v1.10.0/go.mod h1:w1fo8b7rRqlXlIJbVhOMPrwVljyuW5mqssvBtU18ONc= +cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= +cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= +cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo= +cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh+l4WK6GnWw= +cloud.google.com/go/osconfig v1.11.0/go.mod h1:aDICxrur2ogRd9zY5ytBLV89KEgT2MKB2L/n6x1ooPw= +cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= +cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= +cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70= +cloud.google.com/go/oslogin v1.7.0/go.mod h1:e04SN0xO1UNJ1M5GP0vzVBFicIe4O53FOfcixIqTyXo= +cloud.google.com/go/oslogin v1.9.0/go.mod h1:HNavntnH8nzrn8JCTT5fj18FuJLFJc4NaZJtBnQtKFs= +cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= +cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= +cloud.google.com/go/phishingprotection v0.7.0/go.mod h1:8qJI4QKHoda/sb/7/YmMQ2omRLSLYSu9bU0EKCNI+Lk= +cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg= +cloud.google.com/go/policytroubleshooter v1.4.0/go.mod h1:DZT4BcRw3QoO8ota9xw/LKtPa8lKeCByYeKTIf/vxdE= +cloud.google.com/go/policytroubleshooter v1.5.0/go.mod h1:Rz1WfV+1oIpPdN2VvvuboLVRsB1Hclg3CKQ53j9l8vw= +cloud.google.com/go/policytroubleshooter v1.6.0/go.mod h1:zYqaPTsmfvpjm5ULxAyD/lINQxJ0DDsnWOP/GZ7xzBc= +cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= +cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= +cloud.google.com/go/privatecatalog v0.7.0/go.mod h1:2s5ssIFO69F5csTXcwBP7NPFTZvps26xGzvQ2PQaBYg= +cloud.google.com/go/privatecatalog v0.8.0/go.mod h1:nQ6pfaegeDAq/Q5lrfCQzQLhubPiZhSaNhIgfJlnIXs= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/pubsub v1.26.0/go.mod h1:QgBH3U/jdJy/ftjPhTkyXNj543Tin1pRYcdcPRnFIRI= +cloud.google.com/go/pubsub v1.27.1/go.mod h1:hQN39ymbV9geqBnfQq6Xf63yNhUAhv9CZhzp5O6qsW0= +cloud.google.com/go/pubsub v1.28.0/go.mod h1:vuXFpwaVoIPQMGXqRyUQigu/AX1S3IWugR9xznmcXX8= +cloud.google.com/go/pubsub v1.30.0/go.mod h1:qWi1OPS0B+b5L+Sg6Gmc9zD1Y+HaM0MdUr7LsupY1P4= +cloud.google.com/go/pubsublite v1.5.0/go.mod h1:xapqNQ1CuLfGi23Yda/9l4bBCKz/wC3KIJ5gKcxveZg= +cloud.google.com/go/pubsublite v1.6.0/go.mod h1:1eFCS0U11xlOuMFV/0iBqw3zP12kddMeCbj/F3FSj9k= +cloud.google.com/go/pubsublite v1.7.0/go.mod h1:8hVMwRXfDfvGm3fahVbtDbiLePT3gpoiJYJY+vxWxVM= +cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= +cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= +cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= +cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= +cloud.google.com/go/recaptchaenterprise/v2 v2.4.0/go.mod h1:Am3LHfOuBstrLrNCBrlI5sbwx9LBg3te2N6hGvHn2mE= +cloud.google.com/go/recaptchaenterprise/v2 v2.5.0/go.mod h1:O8LzcHXN3rz0j+LBC91jrwI3R+1ZSZEWrfL7XHgNo9U= +cloud.google.com/go/recaptchaenterprise/v2 v2.6.0/go.mod h1:RPauz9jeLtB3JVzg6nCbe12qNoaa8pXc4d/YukAmcnA= +cloud.google.com/go/recaptchaenterprise/v2 v2.7.0/go.mod h1:19wVj/fs5RtYtynAPJdDTb69oW0vNHYDBTbB4NvMD9c= +cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= +cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= +cloud.google.com/go/recommendationengine v0.7.0/go.mod h1:1reUcE3GIu6MeBz/h5xZJqNLuuVjNg1lmWMPyjatzac= +cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= +cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= +cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs= +cloud.google.com/go/recommender v1.8.0/go.mod h1:PkjXrTT05BFKwxaUxQmtIlrtj0kph108r02ZZQ5FE70= +cloud.google.com/go/recommender v1.9.0/go.mod h1:PnSsnZY7q+VL1uax2JWkt/UegHssxjUVVCrX52CuEmQ= +cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= +cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= +cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA= +cloud.google.com/go/redis v1.10.0/go.mod h1:ThJf3mMBQtW18JzGgh41/Wld6vnDDc/F/F35UolRZPM= +cloud.google.com/go/redis v1.11.0/go.mod h1:/X6eicana+BWcUda5PpwZC48o37SiFVTFSs0fWAJ7uQ= +cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA= +cloud.google.com/go/resourcemanager v1.4.0/go.mod h1:MwxuzkumyTX7/a3n37gmsT3py7LIXwrShilPh3P1tR0= +cloud.google.com/go/resourcemanager v1.5.0/go.mod h1:eQoXNAiAvCf5PXxWxXjhKQoTMaUSNrEfg+6qdf/wots= +cloud.google.com/go/resourcemanager v1.6.0/go.mod h1:YcpXGRs8fDzcUl1Xw8uOVmI8JEadvhRIkoXXUNVYcVo= +cloud.google.com/go/resourcemanager v1.7.0/go.mod h1:HlD3m6+bwhzj9XCouqmeiGuni95NTrExfhoSrkC/3EI= +cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU= +cloud.google.com/go/resourcesettings v1.4.0/go.mod h1:ldiH9IJpcrlC3VSuCGvjR5of/ezRrOxFtpJoJo5SmXg= +cloud.google.com/go/resourcesettings v1.5.0/go.mod h1:+xJF7QSG6undsQDfsCJyqWXyBwUoJLhetkRMDRnIoXA= +cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= +cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= +cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc= +cloud.google.com/go/retail v1.11.0/go.mod h1:MBLk1NaWPmh6iVFSz9MeKG/Psyd7TAgm6y/9L2B4x9Y= +cloud.google.com/go/retail v1.12.0/go.mod h1:UMkelN/0Z8XvKymXFbD4EhFJlYKRx1FGhQkVPU5kF14= +cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do= +cloud.google.com/go/run v0.3.0/go.mod h1:TuyY1+taHxTjrD0ZFk2iAR+xyOXEA0ztb7U3UNA0zBo= +cloud.google.com/go/run v0.8.0/go.mod h1:VniEnuBwqjigv0A7ONfQUaEItaiCRVujlMqerPPiktM= +cloud.google.com/go/run v0.9.0/go.mod h1:Wwu+/vvg8Y+JUApMwEDfVfhetv30hCG4ZwDR/IXl2Qg= +cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= +cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk= +cloud.google.com/go/scheduler v1.7.0/go.mod h1:jyCiBqWW956uBjjPMMuX09n3x37mtyPJegEWKxRsn44= +cloud.google.com/go/scheduler v1.8.0/go.mod h1:TCET+Y5Gp1YgHT8py4nlg2Sew8nUHMqcpousDgXJVQc= +cloud.google.com/go/scheduler v1.9.0/go.mod h1:yexg5t+KSmqu+njTIh3b7oYPheFtBWGcbVUYF1GGMIc= +cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= +cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4= +cloud.google.com/go/secretmanager v1.9.0/go.mod h1:b71qH2l1yHmWQHt9LC80akm86mX8AL6X1MA01dW8ht4= +cloud.google.com/go/secretmanager v1.10.0/go.mod h1:MfnrdvKMPNra9aZtQFvBcvRU54hbPD8/HayQdlUgJpU= +cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= +cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= +cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= +cloud.google.com/go/security v1.9.0/go.mod h1:6Ta1bO8LXI89nZnmnsZGp9lVoVWXqsVbIq/t9dzI+2Q= +cloud.google.com/go/security v1.10.0/go.mod h1:QtOMZByJVlibUT2h9afNDWRZ1G96gVywH8T5GUSb9IA= +cloud.google.com/go/security v1.12.0/go.mod h1:rV6EhrpbNHrrxqlvW0BWAIawFWq3X90SduMJdFwtLB8= +cloud.google.com/go/security v1.13.0/go.mod h1:Q1Nvxl1PAgmeW0y3HTt54JYIvUdtcpYKVfIB8AOMZ+0= +cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= +cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk= +cloud.google.com/go/securitycenter v1.16.0/go.mod h1:Q9GMaLQFUD+5ZTabrbujNWLtSLZIZF7SAR0wWECrjdk= +cloud.google.com/go/securitycenter v1.18.1/go.mod h1:0/25gAzCM/9OL9vVx4ChPeM/+DlfGQJDwBy/UC8AKK0= +cloud.google.com/go/securitycenter v1.19.0/go.mod h1:LVLmSg8ZkkyaNy4u7HCIshAngSQ8EcIRREP3xBnyfag= +cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU= +cloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s= +cloud.google.com/go/servicecontrol v1.10.0/go.mod h1:pQvyvSRh7YzUF2efw7H87V92mxU8FnFDawMClGCNuAA= +cloud.google.com/go/servicecontrol v1.11.0/go.mod h1:kFmTzYzTUIuZs0ycVqRHNaNhgR+UMUpw9n02l/pY+mc= +cloud.google.com/go/servicecontrol v1.11.1/go.mod h1:aSnNNlwEFBY+PWGQ2DoM0JJ/QUXqV5/ZD9DOLB7SnUk= +cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= +cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= +cloud.google.com/go/servicedirectory v1.6.0/go.mod h1:pUlbnWsLH9c13yGkxCmfumWEPjsRs1RlmJ4pqiNjVL4= +cloud.google.com/go/servicedirectory v1.7.0/go.mod h1:5p/U5oyvgYGYejufvxhgwjL8UVXjkuw7q5XcG10wx1U= +cloud.google.com/go/servicedirectory v1.8.0/go.mod h1:srXodfhY1GFIPvltunswqXpVxFPpZjf8nkKQT7XcXaY= +cloud.google.com/go/servicedirectory v1.9.0/go.mod h1:29je5JjiygNYlmsGz8k6o+OZ8vd4f//bQLtvzkPPT/s= +cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco= +cloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo= +cloud.google.com/go/servicemanagement v1.6.0/go.mod h1:aWns7EeeCOtGEX4OvZUWCCJONRZeFKiptqKf1D0l/Jc= +cloud.google.com/go/servicemanagement v1.8.0/go.mod h1:MSS2TDlIEQD/fzsSGfCdJItQveu9NXnUniTrq/L8LK4= +cloud.google.com/go/serviceusage v1.3.0/go.mod h1:Hya1cozXM4SeSKTAgGXgj97GlqUvF5JaoXacR1JTP/E= +cloud.google.com/go/serviceusage v1.4.0/go.mod h1:SB4yxXSaYVuUBYUml6qklyONXNLt83U0Rb+CXyhjEeU= +cloud.google.com/go/serviceusage v1.5.0/go.mod h1:w8U1JvqUqwJNPEOTQjrMHkw3IaIFLoLsPLvsE3xueec= +cloud.google.com/go/serviceusage v1.6.0/go.mod h1:R5wwQcbOWsyuOfbP9tGdAnCAc6B9DRwPG1xtWMDeuPA= +cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4= +cloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw= +cloud.google.com/go/shell v1.6.0/go.mod h1:oHO8QACS90luWgxP3N9iZVuEiSF84zNyLytb+qE2f9A= +cloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos= +cloud.google.com/go/spanner v1.44.0/go.mod h1:G8XIgYdOK+Fbcpbs7p2fiprDw4CaZX63whnSMLVBxjk= +cloud.google.com/go/spanner v1.45.0/go.mod h1:FIws5LowYz8YAE1J8fOS7DJup8ff7xJeetWEo5REA2M= +cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= +cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= +cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= +cloud.google.com/go/speech v1.9.0/go.mod h1:xQ0jTcmnRFFM2RfX/U+rk6FQNUF6DQlydUSyoooSpco= +cloud.google.com/go/speech v1.14.1/go.mod h1:gEosVRPJ9waG7zqqnsHpYTOoAS4KouMRLDFMekpJ0J0= +cloud.google.com/go/speech v1.15.0/go.mod h1:y6oH7GhqCaZANH7+Oe0BhgIogsNInLlz542tg3VqeYI= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= +cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= +cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y= +cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4= +cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w= +cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I= +cloud.google.com/go/storagetransfer v1.7.0/go.mod h1:8Giuj1QNb1kfLAiWM1bN6dHzfdlDAVC9rv9abHot2W4= +cloud.google.com/go/storagetransfer v1.8.0/go.mod h1:JpegsHHU1eXg7lMHkvf+KE5XDJ7EQu0GwNJbbVGanEw= +cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= +cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= +cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM= +cloud.google.com/go/talent v1.4.0/go.mod h1:ezFtAgVuRf8jRsvyE6EwmbTK5LKciD4KVnHuDEFmOOA= +cloud.google.com/go/talent v1.5.0/go.mod h1:G+ODMj9bsasAEJkQSzO2uHQWXHHXUomArjWQQYkqK6c= +cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8= +cloud.google.com/go/texttospeech v1.5.0/go.mod h1:oKPLhR4n4ZdQqWKURdwxMy0uiTS1xU161C8W57Wkea4= +cloud.google.com/go/texttospeech v1.6.0/go.mod h1:YmwmFT8pj1aBblQOI3TfKmwibnsfvhIBzPXcW4EBovc= +cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ= +cloud.google.com/go/tpu v1.4.0/go.mod h1:mjZaX8p0VBgllCzF6wcU2ovUXN9TONFLd7iz227X2Xg= +cloud.google.com/go/tpu v1.5.0/go.mod h1:8zVo1rYDFuW2l4yZVY0R0fb/v44xLh3llq7RuV61fPM= +cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28= +cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y= +cloud.google.com/go/trace v1.8.0/go.mod h1:zH7vcsbAhklH8hWFig58HvxcxyQbaIqMarMg9hn5ECA= +cloud.google.com/go/trace v1.9.0/go.mod h1:lOQqpE5IaWY0Ixg7/r2SjixMuc6lfTFeO4QGM4dQWOk= +cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= +cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg= +cloud.google.com/go/translate v1.5.0/go.mod h1:29YDSYveqqpA1CQFD7NQuP49xymq17RXNaUDdc0mNu0= +cloud.google.com/go/translate v1.6.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= +cloud.google.com/go/translate v1.7.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= +cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk= +cloud.google.com/go/video v1.9.0/go.mod h1:0RhNKFRF5v92f8dQt0yhaHrEuH95m068JYOvLZYnJSw= +cloud.google.com/go/video v1.12.0/go.mod h1:MLQew95eTuaNDEGriQdcYn0dTwf9oWiA4uYebxM5kdg= +cloud.google.com/go/video v1.13.0/go.mod h1:ulzkYlYgCp15N2AokzKjy7MQ9ejuynOJdf1tR5lGthk= +cloud.google.com/go/video v1.14.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= +cloud.google.com/go/video v1.15.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= +cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= +cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= +cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M= +cloud.google.com/go/videointelligence v1.9.0/go.mod h1:29lVRMPDYHikk3v8EdPSaL8Ku+eMzDljjuvRs105XoU= +cloud.google.com/go/videointelligence v1.10.0/go.mod h1:LHZngX1liVtUhZvi2uNS0VQuOzNi2TkY1OakiuoUOjU= +cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= +cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= +cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= +cloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb+MhPqRbPsY= +cloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98zhqFFZaaH2E= +cloud.google.com/go/vision/v2 v2.6.0/go.mod h1:158Hes0MvOS9Z/bDMSFpjwsUrZ5fPrdwuyyvKSGAGMY= +cloud.google.com/go/vision/v2 v2.7.0/go.mod h1:H89VysHy21avemp6xcf9b9JvZHVehWbET0uT/bcuY/0= +cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE= +cloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g= +cloud.google.com/go/vmmigration v1.5.0/go.mod h1:E4YQ8q7/4W9gobHjQg4JJSgXXSgY21nA5r8swQV+Xxc= +cloud.google.com/go/vmmigration v1.6.0/go.mod h1:bopQ/g4z+8qXzichC7GW1w2MjbErL54rk3/C843CjfY= +cloud.google.com/go/vmwareengine v0.1.0/go.mod h1:RsdNEf/8UDvKllXhMz5J40XxDrNJNN4sagiox+OI208= +cloud.google.com/go/vmwareengine v0.2.2/go.mod h1:sKdctNJxb3KLZkE/6Oui94iw/xs9PRNC2wnNLXsHvH8= +cloud.google.com/go/vmwareengine v0.3.0/go.mod h1:wvoyMvNWdIzxMYSpH/R7y2h5h3WFkx6d+1TIsP39WGY= +cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w= +cloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8= +cloud.google.com/go/vpcaccess v1.6.0/go.mod h1:wX2ILaNhe7TlVa4vC5xce1bCnqE3AeH27RV31lnmZes= +cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= +cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= +cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc= +cloud.google.com/go/webrisk v1.7.0/go.mod h1:mVMHgEYH0r337nmt1JyLthzMr6YxwN1aAIEc2fTcq7A= +cloud.google.com/go/webrisk v1.8.0/go.mod h1:oJPDuamzHXgUc+b8SiHRcVInZQuybnvEW72PqTc7sSg= +cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo= +cloud.google.com/go/websecurityscanner v1.4.0/go.mod h1:ebit/Fp0a+FWu5j4JOmJEV8S8CzdTkAS77oDsiSqYWQ= +cloud.google.com/go/websecurityscanner v1.5.0/go.mod h1:Y6xdCPy81yi0SQnDY1xdNTNpfY1oAgXUlcfN3B3eSng= +cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= +cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= +cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= +cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw= +dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= +filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= +gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= +git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= +github.com/1340691923/eve-plugin-sdk-go v0.0.6 h1:RTIgJDcuEJIYBXpov0zniDAMdbiMkX9Ot7Rz3qMjBH4= +github.com/1340691923/eve-plugin-sdk-go v0.0.6/go.mod h1:w6tronKSbYkXC4WYjQzlDiQl7VjZOQ5bIIryVJvyPjg= +github.com/360EntSecGroup-Skylar/excelize v1.4.1 h1:l55mJb6rkkaUzOpSsgEeKYtS6/0gHwBYyfo5Jcjv/Ks= +github.com/360EntSecGroup-Skylar/excelize v1.4.1/go.mod h1:vnax29X2usfl7HHkBrX5EvSCJcmH3dT9luvxzu8iGAE= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8/go.mod h1:CzsSbkDixRphAF5hS6wbMKq0eI6ccJRb7/A0M6JBnwg= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20221206110420-d395f97c4830/go.mod h1:VzwV+t+dZ9j/H867F1M2ziD+yLHtB46oM35FxxMJ4d0= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= +github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0/go.mod h1:OahwfttHWG6eJ0clwcfBAHoDI6X/LV/15hx/wlMZSrU= +github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v56.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.0.0/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.2/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.0.0/go.mod h1:+6sju8gk8FRmSajX3Oz4G5Gm7P+mbqE9FVaXXFYTkCM= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.1/go.mod h1:gLa1CL2RNE4s7M3yopJ/p0iq5DdY6Yv5ZUt9MTRZOQM= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= +github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= +github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= +github.com/Azure/go-autorest/autorest v0.11.24/go.mod h1:G6kyRlFnTuSbEYkQGawPfsCswgme4iYf6rfSKUDzbCc= +github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= +github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= +github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= +github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= +github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= +github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= +github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= +github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= +github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= +github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0/go.mod h1:Vt9sXTKwMyGcOxSmLDMnGPgqsUg7m8pe215qMLrDXw4= +github.com/AzureAD/microsoft-authentication-library-for-go v0.8.1/go.mod h1:4qFor3D/HDsvBME35Xy9rwW9DecL+M2sNw1ybjPtwA0= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/ClickHouse/ch-go v0.58.2 h1:jSm2szHbT9MCAB1rJ3WuCJqmGLi5UTjlNu+f530UTS0= +github.com/ClickHouse/ch-go v0.58.2/go.mod h1:Ap/0bEmiLa14gYjCiRkYGbXvbe8vwdrfTYWhsuQ99aw= +github.com/ClickHouse/clickhouse-go v1.5.4/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI= +github.com/ClickHouse/clickhouse-go/v2 v2.15.0 h1:G0hTKyO8fXXR1bGnZ0DY3vTG01xYfOGW76zgjg5tmC4= +github.com/ClickHouse/clickhouse-go/v2 v2.15.0/go.mod h1:kXt1SRq0PIRa6aKZD7TnFnY9PQKmc2b13sHtOYcK6cQ= +github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc= +github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE= +github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= +github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= +github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= +github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= +github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= +github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.4.17-0.20210324224401-5516f17a5958/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.5.1/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= +github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= +github.com/Microsoft/hcsshim v0.8.7-0.20190325164909-8abdbb8205e4/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= +github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= +github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8= +github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= +github.com/Microsoft/hcsshim v0.8.15/go.mod h1:x38A4YbHbdxJtc0sF6oIz+RG0npwSCAvn69iY6URG00= +github.com/Microsoft/hcsshim v0.8.16/go.mod h1:o5/SZqmR7x9JNKsW3pu+nqHm0MF8vbA+VxGOoXdC600= +github.com/Microsoft/hcsshim v0.8.20/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4= +github.com/Microsoft/hcsshim v0.8.21/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4= +github.com/Microsoft/hcsshim v0.8.23/go.mod h1:4zegtUJth7lAvFyc6cH2gGQ5B3OFQim01nnU2M8jKDg= +github.com/Microsoft/hcsshim v0.9.2/go.mod h1:7pLA8lDk46WKDWlVsENo92gC0XFa8rbKfyFRBqxEbCc= +github.com/Microsoft/hcsshim v0.9.3/go.mod h1:7pLA8lDk46WKDWlVsENo92gC0XFa8rbKfyFRBqxEbCc= +github.com/Microsoft/hcsshim v0.9.4/go.mod h1:7pLA8lDk46WKDWlVsENo92gC0XFa8rbKfyFRBqxEbCc= +github.com/Microsoft/hcsshim v0.9.6/go.mod h1:7pLA8lDk46WKDWlVsENo92gC0XFa8rbKfyFRBqxEbCc= +github.com/Microsoft/hcsshim v0.11.0/go.mod h1:OEthFdQv/AD2RAdzR6Mm1N1KPCztGKDurW1Z8b8VGMM= +github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5hlzMzRKMLyo42nCZ9oml8AdTlq/0cvIaBv6tK1RehU= +github.com/Microsoft/hcsshim/test v0.0.0-20210227013316-43a75bb4edd3/go.mod h1:mw7qgWloBUl75W/gVH3cQszUg1+gUITj7D6NY7ywVnY= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= +github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= +github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= +github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= +github.com/agiledragon/gomonkey/v2 v2.2.0 h1:QJWqpdEhGV/JJy70sZ/LDnhbSlMrqHAWHcNOjz1kyuI= +github.com/agiledragon/gomonkey/v2 v2.2.0/go.mod h1:ap1AmDzcVOAz1YpeJ3TCzIgstoaWLA6jbbgxfB4w2iY= +github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= +github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= +github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= +github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= +github.com/alexflint/go-filemutex v1.1.0/go.mod h1:7P4iRhttt/nUvUOrYIhcpMzv2G6CY9UnI16Z+UJqRyk= +github.com/alexflint/go-filemutex v1.2.0/go.mod h1:mYyQSWvw9Tx2/H2n9qXPb52tTYfE0pZAWcBq5mK025c= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= +github.com/andybalholm/brotli v1.0.6/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= +github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= +github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220418222510-f25a4f6275ed/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= +github.com/antlr/antlr4/runtime/Go/antlr v1.4.10/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= +github.com/apache/arrow/go/v10 v10.0.1/go.mod h1:YvhnlEePVnBS4+0z3fhPfUy7W1Ikj0Ih0vcRo/gZ1M0= +github.com/apache/arrow/go/v11 v11.0.0/go.mod h1:Eg5OsL5H+e299f7u5ssuXsuHQVEGC4xei5aX110hRiI= +github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= +github.com/aws/aws-sdk-go v1.43.16/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= +github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= +github.com/bkaradzic/go-lz4 v1.0.0/go.mod h1:0YdlkowM3VswSROI7qDxhRvJ3sLhlFrRRwjwegp5jy4= +github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= +github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= +github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= +github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= +github.com/bshuster-repo/logrus-logstash-hook v1.0.0/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= +github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA= +github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8= +github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= +github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= +github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= +github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= +github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= +github.com/bytecodealliance/wasmtime-go v0.36.0/go.mod h1:q320gUxqyI8yB+ZqRuaJOEnGkAnHh6WtJjMaT2CW4wI= +github.com/bytedance/sonic v1.11.6 h1:oUp34TzMlL+OY1OUWxHqsdkgC/Zfc85zGqw9siXjrc0= +github.com/bytedance/sonic v1.11.6/go.mod h1:LysEHSvpvDySVdC2f87zGWf6CIKJcAvqab1ZaiQtds4= +github.com/bytedance/sonic/loader v0.1.1 h1:c+e5Pt1k/cy5wMveRDyk2X4B9hF4g7an8N3zCYjJFNM= +github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/casbin/casbin/v2 v2.77.2 h1:yQinn/w9x8AswiwqwtrXz93VU48R1aYTXdHEx4RI3jM= +github.com/casbin/casbin/v2 v2.77.2/go.mod h1:mzGx0hYW9/ksOSpw3wNjk3NRAroq5VMFYUQ6G43iGPk= +github.com/casbin/gorm-adapter/v3 v3.20.0 h1:VpGKTlL56xIkhNUOC07bnzwjA/xqfVOAbkt6sniVxMo= +github.com/casbin/gorm-adapter/v3 v3.20.0/go.mod h1:pvTTuyP2Es8VPHLyUssGtvOb3ETYD2tG7TfT5K8X2Sg= +github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= +github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= +github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/checkpoint-restore/go-criu/v4 v4.1.0/go.mod h1:xUQBLp4RLc5zJtWY++yjOoMoB5lihDt7fai+75m+rGw= +github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= +github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= +github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLIdUjrmSXlK9pkrsDlLHbO8jiB8X8JnOc= +github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= +github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= +github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= +github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= +github.com/cilium/ebpf v0.9.1/go.mod h1:+OhNOIXx/Fnu1IE8bJz2dzOA+VSfyTfdNUVdlQnxUFY= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58/go.mod h1:EOBUe0h4xcZ5GoxqC5SDxFQ8gwyZPKQoEzownBlhI80= +github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y= +github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= +github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg= +github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= +github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= +github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= +github.com/container-orchestrated-devices/container-device-interface v0.5.4/go.mod h1:DjE95rfPiiSmG7uVXtg0z6MnPm/Lx4wxKCIts0ZE0vg= +github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= +github.com/containerd/aufs v0.0.0-20201003224125-76a6863f2989/go.mod h1:AkGGQs9NM2vtYHaUen+NljV0/baGCAPELGm2q9ZXpWU= +github.com/containerd/aufs v0.0.0-20210316121734-20793ff83c97/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= +github.com/containerd/aufs v1.0.0/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= +github.com/containerd/btrfs v0.0.0-20201111183144-404b9149801e/go.mod h1:jg2QkJcsabfHugurUvvPhS3E08Oxiuh5W/g1ybB4e0E= +github.com/containerd/btrfs v0.0.0-20210316141732-918d888fb676/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= +github.com/containerd/btrfs v1.0.0/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= +github.com/containerd/btrfs/v2 v2.0.0/go.mod h1:swkD/7j9HApWpzl8OHfrHNxppPd9l44DFZdF94BUj9k= +github.com/containerd/cgroups v0.0.0-20190717030353-c4b9ac5c7601/go.mod h1:X9rLEHIqSf/wfK8NsPqxJmeZgW4pcfzdXITDrUSJ6uI= +github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= +github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= +github.com/containerd/cgroups v0.0.0-20200710171044-318312a37340/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= +github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= +github.com/containerd/cgroups v0.0.0-20210114181951-8a68de567b68/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= +github.com/containerd/cgroups v1.0.1/go.mod h1:0SJrPIenamHDcZhEcJMNBB85rHcUsw4f25ZfBiPYRkU= +github.com/containerd/cgroups v1.0.3/go.mod h1:/ofk34relqNjSGyqPrmEULrO4Sc8LJhvJmWbUCUKqj8= +github.com/containerd/cgroups v1.0.4/go.mod h1:nLNQtsF7Sl2HxNebu77i1R0oDlhiTG+kO4JTrUzo6IA= +github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= +github.com/containerd/cgroups/v3 v3.0.2/go.mod h1:JUgITrzdFqp42uI2ryGA+ge0ap/nxzYgkGmIcetmErE= +github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= +github.com/containerd/console v0.0.0-20181022165439-0650fd9eeb50/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= +github.com/containerd/console v0.0.0-20191206165004-02ecf6a7291e/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= +github.com/containerd/console v1.0.1/go.mod h1:XUsP6YE/mKtz6bxc+I8UiKKTP04qjQL4qcS3XoQ5xkw= +github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= +github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= +github.com/containerd/containerd v1.2.10/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.1-0.20191213020239-082f7e3aed57/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.0-beta.2.0.20200729163537-40b22ef07410/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.3/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.9/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.5.0-beta.1/go.mod h1:5HfvG1V2FsKesEGQ17k5/T7V960Tmcumvqn8Mc+pCYQ= +github.com/containerd/containerd v1.5.0-beta.3/go.mod h1:/wr9AVtEM7x9c+n0+stptlo/uBBoBORwEx6ardVcmKU= +github.com/containerd/containerd v1.5.0-beta.4/go.mod h1:GmdgZd2zA2GYIBZ0w09ZvgqEq8EfBp/m3lcVZIvPHhI= +github.com/containerd/containerd v1.5.0-rc.0/go.mod h1:V/IXoMqNGgBlabz3tHD2TWDoTJseu1FGOKuoA4nNb2s= +github.com/containerd/containerd v1.5.1/go.mod h1:0DOxVqwDy2iZvrZp2JUx/E+hS0UNTVn7dJnIOwtYR4g= +github.com/containerd/containerd v1.5.7/go.mod h1:gyvv6+ugqY25TiXxcZC3L5yOeYgEw0QMhscqVp1AR9c= +github.com/containerd/containerd v1.5.8/go.mod h1:YdFSv5bTFLpG2HIYmfqDpSYYTDX+mc5qtSuYx1YUb/s= +github.com/containerd/containerd v1.6.1/go.mod h1:1nJz5xCZPusx6jJU8Frfct988y0NpumIq9ODB0kLtoE= +github.com/containerd/containerd v1.6.6/go.mod h1:ZoP1geJldzCVY3Tonoz7b1IXk8rIX0Nltt5QE4OMNk0= +github.com/containerd/containerd v1.6.8/go.mod h1:By6p5KqPK0/7/CgO/A6t/Gz+CUYUu2zf1hUaaymVXB0= +github.com/containerd/containerd v1.6.9/go.mod h1:XVicUvkxOrftE2Q1YWUXgZwkkAxwQYNOFzYWvfVfEfQ= +github.com/containerd/containerd v1.6.18/go.mod h1:1RdCUu95+gc2v9t3IL+zIlpClSmew7/0YS8O5eQZrOw= +github.com/containerd/containerd v1.7.6/go.mod h1:SY6lrkkuJT40BVNO37tlYTSnKJnP5AXBc0fhx0q+TJ4= +github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20190815185530-f2a389ac0a02/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20191127005431-f65d91d395eb/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe/go.mod h1:cECdGN1O8G9bgKTlLhuPJimka6Xb/Gg7vYzCTNVxhvo= +github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7/go.mod h1:kR3BEg7bDFaEddKm54WSmrol1fKWDU1nKYkgrcgZT7Y= +github.com/containerd/continuity v0.0.0-20210208174643-50096c924a4e/go.mod h1:EXlVlkqNba9rJe3j7w3Xa924itAMLgZH4UD/Q4PExuQ= +github.com/containerd/continuity v0.1.0/go.mod h1:ICJu0PwR54nI0yPEnJ6jcS+J7CZAUXrLh8lPo2knzsM= +github.com/containerd/continuity v0.2.2/go.mod h1:pWygW9u7LtS1o4N/Tn0FoCFDIXZ7rxcMX7HX1Dmibvk= +github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= +github.com/containerd/continuity v0.4.2/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= +github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= +github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= +github.com/containerd/fifo v0.0.0-20200410184934-f15a3290365b/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= +github.com/containerd/fifo v0.0.0-20201026212402-0724c46b320c/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= +github.com/containerd/fifo v0.0.0-20210316144830-115abcc95a1d/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= +github.com/containerd/fifo v1.0.0/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= +github.com/containerd/fifo v1.1.0/go.mod h1:bmC4NWMbXlt2EZ0Hc7Fx7QzTFxgPID13eH0Qu+MAb2o= +github.com/containerd/go-cni v1.0.1/go.mod h1:+vUpYxKvAF72G9i1WoDOiPGRtQpqsNW/ZHtSlv++smU= +github.com/containerd/go-cni v1.0.2/go.mod h1:nrNABBHzu0ZwCug9Ije8hL2xBCYh/pjfMb1aZGrrohk= +github.com/containerd/go-cni v1.1.0/go.mod h1:Rflh2EJ/++BA2/vY5ao3K6WJRR/bZKsX123aPk+kUtA= +github.com/containerd/go-cni v1.1.3/go.mod h1:Rflh2EJ/++BA2/vY5ao3K6WJRR/bZKsX123aPk+kUtA= +github.com/containerd/go-cni v1.1.6/go.mod h1:BWtoWl5ghVymxu6MBjg79W9NZrCRyHIdUtk4cauMe34= +github.com/containerd/go-cni v1.1.9/go.mod h1:XYrZJ1d5W6E2VOvjffL3IZq0Dz6bsVlERHbekNK90PM= +github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= +github.com/containerd/go-runc v0.0.0-20190911050354-e029b79d8cda/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= +github.com/containerd/go-runc v0.0.0-20200220073739-7016d3ce2328/go.mod h1:PpyHrqVs8FTi9vpyHwPwiNEGaACDxT/N/pLcvMSRA9g= +github.com/containerd/go-runc v0.0.0-20201020171139-16b287bc67d0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= +github.com/containerd/go-runc v1.0.0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= +github.com/containerd/imgcrypt v1.0.1/go.mod h1:mdd8cEPW7TPgNG4FpuP3sGBiQ7Yi/zak9TYCG3juvb0= +github.com/containerd/imgcrypt v1.0.4-0.20210301171431-0ae5c75f59ba/go.mod h1:6TNsg0ctmizkrOgXRNQjAPFWpMYRWuiB6dSF4Pfa5SA= +github.com/containerd/imgcrypt v1.1.1-0.20210312161619-7ed62a527887/go.mod h1:5AZJNI6sLHJljKuI9IHnw1pWqo/F0nGDOuR9zgTs7ow= +github.com/containerd/imgcrypt v1.1.1/go.mod h1:xpLnwiQmEUJPvQoAapeb2SNCxz7Xr6PJrXQb0Dpc4ms= +github.com/containerd/imgcrypt v1.1.3/go.mod h1:/TPA1GIDXMzbj01yd8pIbQiLdQxed5ue1wb8bP7PQu4= +github.com/containerd/imgcrypt v1.1.4/go.mod h1:LorQnPtzL/T0IyCeftcsMEO7AqxUDbdO8j/tSUpgxvo= +github.com/containerd/imgcrypt v1.1.7/go.mod h1:FD8gqIcX5aTotCtOmjeCsi3A1dHmTZpnMISGKSczt4k= +github.com/containerd/nri v0.0.0-20201007170849-eb1350a75164/go.mod h1:+2wGSDGFYfE5+So4M5syatU0N0f0LbWpuqyMi4/BE8c= +github.com/containerd/nri v0.0.0-20210316161719-dbaa18c31c14/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= +github.com/containerd/nri v0.1.0/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= +github.com/containerd/nri v0.3.0/go.mod h1:Zw9q2lP16sdg0zYybemZ9yTDy8g7fPCIB3KXOGlggXI= +github.com/containerd/stargz-snapshotter/estargz v0.4.1/go.mod h1:x7Q9dg9QYb4+ELgxmo4gBUeJB0tl5dqH1Sdz0nJU1QM= +github.com/containerd/stargz-snapshotter/estargz v0.14.3/go.mod h1:KY//uOCIkSuNAHhJogcZtrNHdKrA99/FCCRjE3HD36o= +github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= +github.com/containerd/ttrpc v0.0.0-20190828172938-92c8520ef9f8/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= +github.com/containerd/ttrpc v0.0.0-20191028202541-4f1b8fe65a5c/go.mod h1:LPm1u0xBw8r8NOKoOdNMeVHSawSsltak+Ihv+etqsE8= +github.com/containerd/ttrpc v1.0.1/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= +github.com/containerd/ttrpc v1.0.2/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= +github.com/containerd/ttrpc v1.1.0/go.mod h1:XX4ZTnoOId4HklF4edwc4DcqskFZuvXB1Evzy5KFQpQ= +github.com/containerd/ttrpc v1.1.1-0.20220420014843-944ef4a40df3/go.mod h1:YYyNVhZrTMiaf51Vj6WhAJqJw+vl/nzABhj8pWrzle4= +github.com/containerd/ttrpc v1.2.2/go.mod h1:sIT6l32Ph/H9cvnJsfXM5drIVzTr5A2flTf1G5tYZak= +github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= +github.com/containerd/typeurl v0.0.0-20190911142611-5eb25027c9fd/go.mod h1:GeKYzf2pQcqv7tJ0AoCuuhtnqhva5LNU3U+OyKxxJpk= +github.com/containerd/typeurl v1.0.1/go.mod h1:TB1hUtrpaiO88KEK56ijojHS1+NeF0izUACaJW2mdXg= +github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= +github.com/containerd/typeurl/v2 v2.1.1/go.mod h1:IDp2JFvbwZ31H8dQbEIY7sDl2L3o3HZj1hsSQlywkQ0= +github.com/containerd/zfs v0.0.0-20200918131355-0a33824f23a2/go.mod h1:8IgZOBdv8fAgXddBT4dBXJPtxyRsejFIpXoklgxgEjw= +github.com/containerd/zfs v0.0.0-20210301145711-11e8f1707f62/go.mod h1:A9zfAbMlQwE+/is6hi0Xw8ktpL+6glmqZYtevJgaB8Y= +github.com/containerd/zfs v0.0.0-20210315114300-dde8f0fda960/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containerd/zfs v0.0.0-20210324211415-d5c4544f0433/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containerd/zfs v1.0.0/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containerd/zfs v1.1.0/go.mod h1:oZF9wBnrnQjpWLaPKEinrx3TQ9a+W/RJO7Zb41d8YLE= +github.com/containernetworking/cni v0.7.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/containernetworking/cni v0.8.0/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/containernetworking/cni v0.8.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/containernetworking/cni v1.0.1/go.mod h1:AKuhXbN5EzmD4yTNtfSsX3tPcmtrBI6QcRV0NiNt15Y= +github.com/containernetworking/cni v1.1.1/go.mod h1:sDpYKmGVENF3s6uvMvGgldDWeG8dMxakj/u+i9ht9vw= +github.com/containernetworking/cni v1.1.2/go.mod h1:sDpYKmGVENF3s6uvMvGgldDWeG8dMxakj/u+i9ht9vw= +github.com/containernetworking/plugins v0.8.6/go.mod h1:qnw5mN19D8fIwkqW7oHHYDHVlzhJpcY6TQxn/fUyDDM= +github.com/containernetworking/plugins v0.9.1/go.mod h1:xP/idU2ldlzN6m4p5LmGiwRDjeJr6FLK6vuiUwoH7P8= +github.com/containernetworking/plugins v1.0.1/go.mod h1:QHCfGpaTwYTbbH+nZXKVTxNBDZcxSOplJT5ico8/FLE= +github.com/containernetworking/plugins v1.1.1/go.mod h1:Sr5TH/eBsGLXK/h71HeLfX19sZPp3ry5uHSkI4LPxV8= +github.com/containernetworking/plugins v1.2.0/go.mod h1:/VjX4uHecW5vVimFa1wkG4s+r/s9qIfPdqlLF4TW8c4= +github.com/containers/ocicrypt v1.0.1/go.mod h1:MeJDzk1RJHv89LjsH0Sp5KTY3ZYkjXO/C+bKAeWFIrc= +github.com/containers/ocicrypt v1.1.0/go.mod h1:b8AOe0YR67uU8OqfVNcznfFpAzu3rdgUV4GP9qXPfu4= +github.com/containers/ocicrypt v1.1.1/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY= +github.com/containers/ocicrypt v1.1.2/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY= +github.com/containers/ocicrypt v1.1.3/go.mod h1:xpdkbVAuaH3WzbEabUd5yDsl9SwJA5pABH85425Es2g= +github.com/containers/ocicrypt v1.1.6/go.mod h1:WgjxPWdTJMqYMjf3M6cuIFFA1/MpyyhIM99YInA+Rvc= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-iptables v0.4.5/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= +github.com/coreos/go-iptables v0.5.0/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= +github.com/coreos/go-iptables v0.6.0/go.mod h1:Qe8Bv2Xik5FyTXwgIbLAnv2sWSBmvWdFETJConOQ//Q= +github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20161114122254-48702e0da86b/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= +github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/dockercfg v0.3.1/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= +github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= +github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1SMSibvLzxjeJLnrYEVLULFNiHY9YfQ= +github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s= +github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8= +github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjIciD2oAxI7DmWRx6gbeqrkoLqv3MV0vzNad+I= +github.com/danieljoos/wincred v1.1.0/go.mod h1:XYlo+eRTsVA9aHGp7NGjFkPla4m+DCL7hqDjlFjiygg= +github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE= +github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= +github.com/dgraph-io/badger/v3 v3.2103.2/go.mod h1:RHo4/GmYcKKh5Lxu63wLEMHJ70Pac2JqZRYGhlyAo2M= +github.com/dgraph-io/ristretto v0.1.0/go.mod h1:fux0lOrBhrVCJd3lcTHsIJhq1T2rokOu6v9Vcb3Q9ug= +github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/distribution/distribution/v3 v3.0.0-20220526142353-ffbd94cbe269/go.mod h1:28YO/VJk9/64+sTGNuYaBjWxrXTPrj0C0XmgTIOjxX4= +github.com/dmarkham/enumer v1.5.8/go.mod h1:d10o8R3t/gROm2p3BXqTkMt2+HMuxEmWCXzorAruYak= +github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= +github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= +github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= +github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v20.10.17+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v23.0.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v23.0.3+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= +github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.17+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v23.0.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v23.0.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v24.0.6+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= +github.com/docker/docker-credential-helpers v0.6.4/go.mod h1:ofX3UI0Gz1TteYBjtgs07O36Pyasyp66D2uKT7H8W1c= +github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0= +github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-events v0.0.0-20170721190031-9461782956ad/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= +github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= +github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916/go.mod h1:/u0gXw0Gay3ceNrsHubL3BtdOL2fHf93USgMTe0W5dI= +github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= +github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/elastic/elastic-transport-go/v8 v8.0.0-20230329154755-1a3c63de0db6/go.mod h1:87Tcz8IVNe6rVSLdBux1o/PEItLtyabHU3naC7IoqKI= +github.com/elastic/elastic-transport-go/v8 v8.3.0 h1:DJGxovyQLXGr62e9nDMPSxRyWION0Bh6d9eCFBriiHo= +github.com/elastic/elastic-transport-go/v8 v8.3.0/go.mod h1:87Tcz8IVNe6rVSLdBux1o/PEItLtyabHU3naC7IoqKI= +github.com/elastic/go-elasticsearch/v6 v6.8.10 h1:2lN0gJ93gMBXvkhwih5xquldszpm8FlUwqG5sPzr6a8= +github.com/elastic/go-elasticsearch/v6 v6.8.10/go.mod h1:UwaDJsD3rWLM5rKNFzv9hgox93HoX8utj1kxD9aFUcI= +github.com/elastic/go-elasticsearch/v7 v7.13.1 h1:PaM3V69wPlnwR+ne50rSKKn0RNDYnnOFQcuGEI0ce80= +github.com/elastic/go-elasticsearch/v7 v7.13.1/go.mod h1:OJ4wdbtDNk5g503kvlHLyErCgQwwzmDtaFC4XyOxXA4= +github.com/elastic/go-elasticsearch/v8 v8.10.0 h1:ALg3DMxSrx07YmeMNcfPf7cFh1Ep2+Qa19EOXTbwr2k= +github.com/elastic/go-elasticsearch/v8 v8.10.0/go.mod h1:NGmpvohKiRHXI0Sw4fuUGn6hYOmAXlyCphKpzVBiqDE= +github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emicklei/go-restful/v3 v3.8.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/emicklei/go-restful/v3 v3.9.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/emicklei/go-restful/v3 v3.10.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= +github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= +github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f/go.mod h1:sfYdkwUW4BA3PbKjySwjJy+O4Pu0h62rlqCMHNk+K+Q= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= +github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= +github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= +github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/foxcpp/go-mockdns v0.0.0-20210729171921-fb145fc6f897/go.mod h1:lgRN6+KxQBawyIghpnl5CezHFGS9VLzvtVlwxvzXTQ4= +github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= +github.com/frankban/quicktest v1.14.0/go.mod h1:NeW+ay9A/U67EYXNFA1nPE8e/tnQv/09mUdL/ijj8og= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= +github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= +github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= +github.com/fxamacker/cbor/v2 v2.4.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= +github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= +github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= +github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= +github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= +github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= +github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gin-contrib/cors v1.4.0 h1:oJ6gwtUl3lqV0WEIwM/LxPF1QZ5qe2lGWdY2+bz7y0g= +github.com/gin-contrib/cors v1.4.0/go.mod h1:bs9pNM0x/UsmHPBWT2xZz9ROh8xYjYkiURUfmBoMlcs= +github.com/gin-contrib/gzip v0.0.6 h1:NjcunTcGAj5CO1gn4N8jHOSIeRFHIbn51z6K+xaN4d4= +github.com/gin-contrib/gzip v0.0.6/go.mod h1:QOJlmV2xmayAjkNS2Y8NQsMneuRShOU/kjovCXNuzzk= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= +github.com/gin-gonic/gin v1.10.0 h1:nTuyha1TYqgedzytsKYqna+DfLos46nTv2ygFy86HFU= +github.com/gin-gonic/gin v1.10.0/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= +github.com/glebarez/go-sqlite v1.21.2 h1:3a6LFC4sKahUunAmynQKLZceZCOzUthkRkEAl9gAXWo= +github.com/glebarez/go-sqlite v1.21.2/go.mod h1:sfxdZyhQjTM2Wry3gVYWaW072Ri1WMdWJi0k6+3382k= +github.com/glebarez/sqlite v1.9.0 h1:Aj6bPA12ZEx5GbSF6XADmCkYXlljPNUY+Zf1EQxynXs= +github.com/glebarez/sqlite v1.9.0/go.mod h1:YBYCoyupOao60lzp1MVBLEjZfgkq0tdB1voAQ09K9zw= +github.com/go-faster/city v1.0.1 h1:4WAxSZ3V2Ws4QRDrscLEDcibJY8uf41H6AhXDrNDcGw= +github.com/go-faster/city v1.0.1/go.mod h1:jKcUJId49qdW3L1qKHH/3wPeUstCVpVSXTM6vO3VcTw= +github.com/go-faster/errors v0.6.1 h1:nNIPOBkprlKzkThvS/0YaX8Zs9KewLCOSFQS5BU06FI= +github.com/go-faster/errors v0.6.1/go.mod h1:5MGV2/2T9yvlrbhe9pD9LO5Z/2zCSq2T8j+Jpi2LAyY= +github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= +github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks= +github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gormigrate/gormigrate/v2 v2.1.1 h1:eGS0WTFRV30r103lU8JNXY27KbviRnqqIDobW3EV3iY= +github.com/go-gormigrate/gormigrate/v2 v2.1.1/go.mod h1:L7nJ620PFDKei9QOhJzqA8kRCk+E3UbV2f5gv+1ndLc= +github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= +github.com/go-ini/ini v1.66.6/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= +github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.1/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/stdr v1.2.0/go.mod h1:YkVgnZu1ZjjL7xTxrfm/LLZBfkhTqSR1ydtm6jTKKwI= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4= +github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= +github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= +github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= +github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= +github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= +github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= +github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= +github.com/go-openapi/jsonreference v0.20.0 h1:MYlu0sBgChmCfJxxUKZ8g1cPWFOB37YSZqewK7OKeyA= +github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= +github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= +github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= +github.com/go-openapi/spec v0.20.4 h1:O8hJrt0UMnhHcluhIdUgCLRWyM2x7QkBXRvOs7m+O1M= +github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= +github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= +github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-openapi/swag v0.19.15 h1:D2NRCBzS9/pEY3gP9Nl8aDqGUcPFrwG2p+CNFrLyrCM= +github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= +github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos= +github.com/go-playground/validator/v10 v10.20.0 h1:K9ISHbSaI0lyB2eWMPJo+kOS/FBExVwjEviJTixqxL8= +github.com/go-playground/validator/v10 v10.20.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= +github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= +github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= +github.com/go-sql-driver/mysql v1.8.0 h1:UtktXaU2Nb64z/pLiGIxY4431SJ4/dR5cjMmlVHgnT4= +github.com/go-sql-driver/mysql v1.8.0/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA= +github.com/goccy/go-json v0.10.3/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= +github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= +github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= +github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU= +github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= +github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= +github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE= +github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= +github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA= +github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= +github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A= +github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= +github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= +github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/gomodule/redigo v1.8.2/go.mod h1:P9dn9mFrCBvWhGE1wpxx6fgq7BAeLBk+UUUzlpkBYO0= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= +github.com/google/cel-go v0.12.6/go.mod h1:Jk7ljRzLBhkmiAwBoUxB1sZSCVBAzkqPF25olK/iRDw= +github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= +github.com/google/go-containerregistry v0.14.0/go.mod h1:aiJ2fp/SXvkWgmYHioXnbMdlgB8eXiiYOY55gfN91Wk= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ= +github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/wire v0.5.0 h1:I7ELFeVBr3yfPIcc8+MWvrjk+3VjbcSzoXm3JVa+jD8= +github.com/google/wire v0.5.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU= +github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= +github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= +github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= +github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= +github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= +github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= +github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= +github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= +github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= +github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= +github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= +github.com/gorilla/handlers v1.4.2/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= +github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= +github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= +github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= +github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= +github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-hclog v1.2.0 h1:La19f8d7WIlm4ogzNHB0JGqs5AUDAZ2UfCY4sJXcJdM= +github.com/hashicorp/go-hclog v1.2.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/go-plugin v1.6.1 h1:P7MR2UP6gNKGPp+y7EZw2kOiq4IR9WiqLvp0XOsVdwI= +github.com/hashicorp/go-plugin v1.6.1/go.mod h1:XPHFku2tFo3o3QKFgSYo+cghcUhw1NA1hZyMK0PWAw0= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= +github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= +github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= +github.com/imroc/req/v2 v2.1.0 h1:zs14o2Pv/3RwAF11HBmjzJJ5ZItOgLk9yABTypbl8nk= +github.com/imroc/req/v2 v2.1.0/go.mod h1:3POMCRC7mUbCcscEp9wpihSyZLUVYWqvmHnwTdL6kJY= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/intel/goresctrl v0.2.0/go.mod h1:+CZdzouYFn5EsxgqAQTEzMfwKwuc0fVdMrT9FCCAVRQ= +github.com/intel/goresctrl v0.3.0/go.mod h1:fdz3mD85cmP9sHD8JUlrNWAxvwM86CrbmVXltEKd7zk= +github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= +github.com/j-keck/arping v1.0.2/go.mod h1:aJbELhR92bSk7tp79AWM/ftfc90EfEi2bQJrbBFOsPw= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgx/v5 v5.3.0 h1:/NQi8KHMpKWHInxXesC8yD4DhkXPrVhmnwYkjp9AmBA= +github.com/jackc/pgx/v5 v5.3.0/go.mod h1:t3JDKnCBlYIc0ewLF0Q7B8MXmoIaBOZj/ic7iHozM/8= +github.com/jackc/puddle/v2 v2.2.0/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= +github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= +github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs= +github.com/jcmturner/dnsutils/v2 v2.0.0/go.mod h1:b0TnjGOvI/n42bZa+hmXL+kFJZsFT7G4t3HTlQ184QM= +github.com/jcmturner/gofork v1.0.0/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= +github.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg= +github.com/jcmturner/gokrb5/v8 v8.4.2/go.mod h1:sb+Xq/fTY5yktf/VxLsE3wlfPqQjp0aWNYyvBVK62bc= +github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= +github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= +github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.4/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= +github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= +github.com/jonboulle/clockwork v0.4.0 h1:p4Cf1aMWXnXAUh8lVfewRBx1zaTSYKrKMF2g3ST4RZ4= +github.com/jonboulle/clockwork v0.4.0/go.mod h1:xgRqUGwRcjKCO1vbZUEtSLrqKoPSsUpK7fnezOII0kc= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= +github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= +github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= +github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= +github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= +github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= +github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= +github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= +github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y= +github.com/lestrrat-go/blackmagic v1.0.0/go.mod h1:TNgH//0vYSs8VXDCfkZLgIrVTTXQELZffUV0tz3MtdQ= +github.com/lestrrat-go/envload v0.0.0-20180220234015-a3eb8ddeffcc h1:RKf14vYWi2ttpEmkA4aQ3j4u9dStX2t4M8UM6qqNsG8= +github.com/lestrrat-go/envload v0.0.0-20180220234015-a3eb8ddeffcc/go.mod h1:kopuH9ugFRkIXf3YoqHKyrJ9YfUFsckUU9S7B+XP+is= +github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible h1:Y6sqxHMyB1D2YSzWkLibYKgg+SwmyFU9dF2hn6MdTj4= +github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible/go.mod h1:ZQnN8lSECaebrkQytbHj4xNgtg8CR7RYXnPok8e0EHA= +github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E= +github.com/lestrrat-go/iter v1.0.1/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc= +github.com/lestrrat-go/jwx v1.2.25/go.mod h1:zoNuZymNl5lgdcu6P7K6ie2QRll5HVfF4xwxBBK1NxY= +github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= +github.com/lestrrat-go/strftime v1.0.6 h1:CFGsDEt1pOpFNU+TJB0nhz9jl+K0hZSLE205AhTIGQQ= +github.com/lestrrat-go/strftime v1.0.6/go.mod h1:f7jQKgV5nnJpYgdEasS+/y7EsTb8ykN2z68n3TtcTaw= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/linuxkit/virtsock v0.0.0-20201010232012-f8cee7dfc7a3/go.mod h1:3r6x7q95whyfWQpmGZTu3gk3v2YkMi05HEzl7Tf7YEo= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= +github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= +github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= +github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= +github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= +github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= +github.com/mattn/go-shellwords v1.0.6/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= +github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= +github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/matttproud/golang_protobuf_extensions v1.0.2/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= +github.com/microsoft/go-mssqldb v0.17.0/go.mod h1:OkoNGhGEs8EZqchVTtochlXruEhEOaO4S0d2sB5aeGQ= +github.com/microsoft/go-mssqldb v1.0.0 h1:k2p2uuG8T5T/7Hp7/e3vMGTnnR0sU4h8d1CcC71iLHU= +github.com/microsoft/go-mssqldb v1.0.0/go.mod h1:+4wZTUnz/SV6nffv+RRRB/ss8jPng5Sho2SmM1l2ts4= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/miekg/dns v1.1.25/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= +github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4= +github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= +github.com/miekg/pkcs11 v1.1.1/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= +github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= +github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= +github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM= +github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= +github.com/mistifyio/go-zfs/v3 v3.0.1/go.mod h1:CzVgeB0RvF2EGzQnytKVvVSDwmKJXxkOTUGbNrTja/k= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= +github.com/mkevac/debugcharts v0.0.0-20191222103121-ae1c48aa8615/go.mod h1:Ad7oeElCZqA1Ufj0U9/liOF4BtVepxRcTvr2ey7zTvM= +github.com/mndrix/tap-go v0.0.0-20171203230836-629fa407e90b/go.mod h1:pzzDgJWZ34fGzaAZGFW22KVZDfyrYW+QABMrWnJBnSs= +github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= +github.com/moby/patternmatcher v0.5.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= +github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= +github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= +github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= +github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= +github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= +github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo= +github.com/moby/sys/signal v0.6.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg= +github.com/moby/sys/signal v0.7.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg= +github.com/moby/sys/symlink v0.1.0/go.mod h1:GGDODQmbFOjFsXvfLVn3+ZRxkch54RkSiGqsZeMYowQ= +github.com/moby/sys/symlink v0.2.0/go.mod h1:7uZVF2dqJjG/NsClqul95CqKOBRQyYSNnJ6BMgR/gFs= +github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= +github.com/moby/term v0.0.0-20210610120745-9d4ed1856297/go.mod h1:vgPCkQMyxTZ7IDy8SXRufE172gr8+K/JE/7hHFxHW3A= +github.com/moby/term v0.0.0-20220808134915-39b0c02b01ae/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= +github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= +github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= +github.com/montanaflynn/stats v0.6.6 h1:Duep6KMIDpY4Yo11iFsvyqJDyfzLF9+sndUKT+v64GQ= +github.com/montanaflynn/stats v0.6.6/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= +github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= +github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= +github.com/networkplumbing/go-nft v0.2.0/go.mod h1:HnnM+tYvlGAsMU7yoYwXEVLLiDW9gdMmb5HoGcwpuQs= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0= +github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= +github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU= +github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk= +github.com/onsi/ginkgo/v2 v2.3.0/go.mod h1:Eew0uilEqZmIEZr8JrvYlvOM7Rr6xzTmMV8AyFNU9d0= +github.com/onsi/ginkgo/v2 v2.4.0/go.mod h1:iHkDK1fKGcBoEHT5W7YBq4RFWaQulw+caOMkAt4OrFo= +github.com/onsi/ginkgo/v2 v2.5.0/go.mod h1:Luc4sArBICYCS8THh8v3i3i5CuSZO+RaQRaJoeNwomw= +github.com/onsi/ginkgo/v2 v2.6.1/go.mod h1:yjiuMwPokqY1XauOgju45q3sJt6VzQ/Fict1LFVcsAo= +github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= +github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= +github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo= +github.com/onsi/gomega v1.21.1/go.mod h1:iYAIXgPSaDHak0LCMA+AWBpIKBr8WZicMxnE8luStNc= +github.com/onsi/gomega v1.22.1/go.mod h1:x6n7VNe4hw0vkyYUM4mjIXx3JbLiPaBPNgB7PRQ1tuM= +github.com/onsi/gomega v1.23.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg= +github.com/onsi/gomega v1.24.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg= +github.com/onsi/gomega v1.24.1/go.mod h1:3AOiACssS3/MajrniINInwbfOOtfZvplPzuRSmvt1jM= +github.com/onsi/gomega v1.24.2 h1:J/tulyYK6JwBldPViHJReihxxZ+22FHs0piGjQAvoUE= +github.com/onsi/gomega v1.24.2/go.mod h1:gs3J10IS7Z7r7eXRoNJIrNqU4ToQukCJhFtKrWgHWnk= +github.com/open-policy-agent/opa v0.42.2/go.mod h1:MrmoTi/BsKWT58kXlVayBb+rYVeaMwuBm3nYAN3923s= +github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v1.0.0-rc1.0.20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.0.0/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.0.2-0.20211117181255-693428a734f5/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= +github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= +github.com/opencontainers/image-spec v1.1.0-rc4/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8= +github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc93/go.mod h1:3NOsor4w32B2tC0Zbl8Knk4Wg84SM2ImC1fxBuqJ/H0= +github.com/opencontainers/runc v1.0.2/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= +github.com/opencontainers/runc v1.1.0/go.mod h1:Tj1hFw6eFWp/o33uxGf5yF2BX5yz2Z6iptFpuvbbKqc= +github.com/opencontainers/runc v1.1.2/go.mod h1:Tj1hFw6eFWp/o33uxGf5yF2BX5yz2Z6iptFpuvbbKqc= +github.com/opencontainers/runc v1.1.5/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= +github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.2-0.20190207185410-29686dbc5559/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.3-0.20220825212826-86290f6a00fb/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.1.0-rc.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= +github.com/opencontainers/runtime-tools v0.9.0/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= +github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626/go.mod h1:BRHJJd0E+cx42OybVYSgUvZmU0B8P9gZuRXlZUP7TKI= +github.com/opencontainers/selinux v1.6.0/go.mod h1:VVGKuOLlE7v4PJyT6h7mNWvq1rzqiriPsEqVhc+svHE= +github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3ogry1nUQF8Evvo= +github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= +github.com/opencontainers/selinux v1.9.1/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= +github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= +github.com/opencontainers/selinux v1.10.1/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= +github.com/opencontainers/selinux v1.11.0/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pascaldekloe/name v1.0.0/go.mod h1:Z//MfYJnH4jVpQ9wkclwu2I2MkHmXTlT9wR5UZScttM= +github.com/pascaldekloe/name v1.0.1/go.mod h1:Z//MfYJnH4jVpQ9wkclwu2I2MkHmXTlT9wR5UZScttM= +github.com/paulmach/orb v0.10.0 h1:guVYVqzxHE/CQ1KpfGO077TR0ATHSNjp4s6XGLn3W9s= +github.com/paulmach/orb v0.10.0/go.mod h1:5mULz1xQfs3bmQm63QEJA6lNGujuRafwA5S/EnuLaLU= +github.com/paulmach/protoscan v0.2.1/go.mod h1:SpcSwydNLrxUGSDvXvO0P7g7AuhJ7lcKfDlhJCDw2gY= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= +github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= +github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= +github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= +github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= +github.com/peterh/liner v0.0.0-20170211195444-bf27d3ba8e1d/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= +github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= +github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= +github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= +github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= +github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ= +github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= +github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= +github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI= +github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= +github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_golang v1.13.0/go.mod h1:vTeo+zgvILHsnnj/39Ou/1fPN5nJFOEMgftOUOmlvYQ= +github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= +github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= +github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= +github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.37.0 h1:ccBbHCgIiT9uSoFY0vX8H3zsNR5eLt17/RQLUvn8pXE= +github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= +github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.0-20190522114515-bc1a522cf7b1/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= +github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= +github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday v1.6.0/go.mod h1:ti0ldHuxg49ri4ksnFxlkCfN+hvslNlmVHqNRXXJNAY= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= +github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= +github.com/safchain/ethtool v0.0.0-20210803160452-9aa261dae9b1/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= +github.com/safchain/ethtool v0.2.0/go.mod h1:WkKB1DnNtvsMlDmQ50sgwowDJV/hGbJSOvJoEXs1AJQ= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= +github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= +github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= +github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= +github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= +github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs= +github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/shirou/gopsutil v2.19.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shirou/gopsutil/v3 v3.23.8/go.mod h1:7hmCaBn+2ZwaZOr6jmPBZDfawwMGuo1id3C6aM8EDqQ= +github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= +github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= +github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= +github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8= +github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= +github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= +github.com/sony/sonyflake v1.2.0 h1:Pfr3A+ejSg+0SPqpoAmQgEtNDAhc2G1SUYk205qVMLQ= +github.com/sony/sonyflake v1.2.0/go.mod h1:LORtCywH/cq10ZbyfhKrHYgAUGH7mOBa76enV9txy/Y= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= +github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= +github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= +github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w= +github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= +github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= +github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= +github.com/spf13/cobra v1.5.0/go.mod h1:dWXEIy2H428czQCjInthrTRUg7yKbok+2Qi/yBIJoUM= +github.com/spf13/cobra v1.6.0/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= +github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= +github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= +github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= +github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= +github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= +github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= +github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.3-0.20181224173747-660f15d67dbb/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= +github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/swaggo/files v1.0.1 h1:J1bVJ4XHZNq0I46UU90611i9/YzdrF7x92oX1ig5IdE= +github.com/swaggo/files v1.0.1/go.mod h1:0qXmMNH6sXNf+73t65aKeB+ApmgxdnkQzVTAj2uaMUg= +github.com/swaggo/gin-swagger v1.6.0 h1:y8sxvQ3E20/RCyrXeFfg60r6H0Z+SwpTjMYsMm+zy8M= +github.com/swaggo/gin-swagger v1.6.0/go.mod h1:BG00cCEy294xtVpyIAHG6+e2Qzj/xKlRdOqDkvq0uzo= +github.com/swaggo/swag v1.16.2 h1:28Pp+8DkQoV+HLzLx8RGJZXNGKbFqnuvSbAAtoxiY04= +github.com/swaggo/swag v1.16.2/go.mod h1:6YzXnDcpr0767iOejs318CwYkCQqyGer6BizOg03f+E= +github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/tchap/go-patricia v2.2.6+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I= +github.com/tchap/go-patricia/v2 v2.3.1/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwDlLElMsnSHD4k= +github.com/teris-io/shortid v0.0.0-20220617161101-71ec9f2aa569 h1:xzABM9let0HLLqFypcxvLmlvEciCHL7+Lv+4vwZqecI= +github.com/teris-io/shortid v0.0.0-20220617161101-71ec9f2aa569/go.mod h1:2Ly+NIftZN4de9zRmENdYbvPQeaVIYKWpLFStLFEBgI= +github.com/testcontainers/testcontainers-go v0.25.0/go.mod h1:4sC9SiJyzD1XFi59q8umTQYWxnkweEc5OjVtTUlJzqQ= +github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.17.3 h1:bwWLZU7icoKRG+C+0PNwIKC6FCJO/Q3p2pZvuP0jN94= +github.com/tidwall/gjson v1.17.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= +github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= +github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= +github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.19.1/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli v1.22.4/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli v1.22.12/go.mod h1:sSBEIC79qR6OvcmsD4U3KABeOTxDqQtdDnaFuUN30b8= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.56.0 h1:bEZdJev/6LCBlpdORfrLu/WOZXXxvrUQSiyniuaoW8U= +github.com/valyala/fasthttp v1.56.0/go.mod h1:sReBt3XZVnudxuLOx4J/fMrJVorWRiWY2koQKgABiVI= +github.com/vbatts/tar-split v0.11.2/go.mod h1:vV3ZuO2yWSVsz+pfFzDG/upWH1JhjOiEaWq6kXyQ3VI= +github.com/vektah/gqlparser/v2 v2.4.5/go.mod h1:flJWIR04IMQPGz+BXLrORkrARBxv/rtyIAFvd/MceW0= +github.com/veraison/go-cose v1.0.0-rc.1/go.mod h1:7ziE85vSq4ScFTg6wyoMXjucIGOf4JkFEZi/an96Ct4= +github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= +github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= +github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= +github.com/vishvananda/netlink v1.1.1-0.20210330154013-f5de75959ad5/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= +github.com/vishvananda/netlink v1.2.1-beta.2/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= +github.com/vishvananda/netns v0.0.0-20180720170159-13995c7128cc/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI= +github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= +github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= +github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= +github.com/willf/bitset v1.1.11-0.20200630133818-d5bec3311243/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= +github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr3+MjI= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= +github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= +github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= +github.com/xdg-go/scram v1.1.1 h1:VOMT+81stJgXW3CpHyqHN3AXDYIMsx56mEFrB37Mb/E= +github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g= +github.com/xdg-go/stringprep v1.0.3 h1:kdwGpVNwPFtjs98xCGkHjQtGKh86rDcRZN17QEMCOIs= +github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/xwb1989/sqlparser v0.0.0-20180606152119-120387863bf2 h1:zzrxE1FKn5ryBNl9eKOeqQ58Y/Qpo3Q9QNxKHX5uzzQ= +github.com/xwb1989/sqlparser v0.0.0-20180606152119-120387863bf2/go.mod h1:hzfGeIUDq/j97IG+FhNqkowIyEcD88LrW6fyU3K3WqY= +github.com/yashtewari/glob-intersection v0.1.0/go.mod h1:LK7pIC3piUjovexikBbJ26Yml7g8xa5bsjfx2v1fwok= +github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA= +github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= +github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= +github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= +go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= +go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= +go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= +go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= +go.etcd.io/etcd/api/v3 v3.5.5/go.mod h1:KFtNaxGDw4Yx/BA4iPPwevUTAuqcsPxzyX8PHydchN8= +go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/pkg/v3 v3.5.5/go.mod h1:ggrwbk069qxpKPq8/FKkQ3Xq9y39kbFR4LnKszpRXeQ= +go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= +go.etcd.io/etcd/client/v2 v2.305.5/go.mod h1:zQjKllfqfBVyVStbt4FaosoX2iYd8fV/GRy/PbowgP4= +go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= +go.etcd.io/etcd/client/v3 v3.5.5/go.mod h1:aApjR4WGlSumpnJ2kloS75h6aHUmAyaPLjHMxpc7E7c= +go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE= +go.etcd.io/etcd/pkg/v3 v3.5.5/go.mod h1:6ksYFxttiUGzC2uxyqiyOEvhAiD0tuIqSZkX3TyPdaE= +go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= +go.etcd.io/etcd/raft/v3 v3.5.5/go.mod h1:76TA48q03g1y1VpTue92jZLr9lIHKUNcYdZOOGyx8rI= +go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= +go.etcd.io/etcd/server/v3 v3.5.5/go.mod h1:rZ95vDw/jrvsbj9XpTqPrTAB9/kzchVdhRirySPkUBc= +go.etcd.io/gofail v0.1.0/go.mod h1:VZBCXYGZhHAinaBiiqYvuDynvahNsAyLFwB3kEHKz1M= +go.mongodb.org/mongo-driver v1.11.4 h1:4ayjakA013OdpGyL2K3ZqylTac/rMjrJOMZ1EHizXas= +go.mongodb.org/mongo-driver v1.11.4/go.mod h1:PTSz5yu21bkT/wXpkS7WR5f0ddqw5quethTUn9WM+2g= +go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.25.0/go.mod h1:E5NNboN0UqSAki0Atn9kVwaN7I+l25gGxDqBueo/74E= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.28.0/go.mod h1:vEhqr0m4eTc+DWxfsXoXue2GBgV2uUwVznkGIHW/e5w= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.35.0/go.mod h1:h8TWwRAhQpOd0aM5nYsRD8+flnkj+526GEIVlarH7eY= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0/go.mod h1:UMklln0+MRhZC4e3PwmN3pCtq4DyIadWw4yikh6bNrw= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.32.0/go.mod h1:5eCOqeGphOyz6TsY3ZDNjE33SM/TFAK3RGuCL2naTgY= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.35.0/go.mod h1:9NiG9I2aHTKkcxqCILhjtyNA1QEiCjdBACv4IvrFQ+c= +go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= +go.opentelemetry.io/otel v1.0.1/go.mod h1:OPEOD4jIT2SlZPMmwT6FqZz2C0ZNdQqiWcoK6M0SNFU= +go.opentelemetry.io/otel v1.3.0/go.mod h1:PWIKzi6JCp7sM0k9yZ43VX+T345uNbAkDKwHVjb2PTs= +go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk= +go.opentelemetry.io/otel v1.8.0/go.mod h1:2pkj+iMj0o03Y+cW6/m8Y4WkRdYN3AvCXCnzRMp9yvM= +go.opentelemetry.io/otel v1.10.0/go.mod h1:NbvWjCthWHKBEUMpf0/v8ZRZlni86PpGFEMA9pnQSnQ= +go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU= +go.opentelemetry.io/otel v1.16.0/go.mod h1:vl0h9NUa1D5s1nv3A5vZOYWn8av4K8Ml6JDeHrT/bx4= +go.opentelemetry.io/otel v1.19.0 h1:MuS/TNf4/j4IXsZuJegVzI1cwut7Qc00344rgH7p8bs= +go.opentelemetry.io/otel v1.19.0/go.mod h1:i0QyjOq3UPoTzff0PJB2N66fb4S0+rSbSB15/oyH9fY= +go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.3.0/go.mod h1:VpP4/RMn8bv8gNo9uK7/IMY4mtWLELsS+JIP0inH0h4= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.7.0/go.mod h1:M1hVZHNxcbkAlcvrOMlpQ4YOO3Awf+4N2dxkZL3xm04= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.10.0/go.mod h1:78XhIg8Ht9vR4tbLNUhXsiOnE2HOuSeKAiAcoVQEpOY= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0/go.mod h1:UFG7EBMRdXyFstOwH028U0sVf+AvukSGhF0g8+dmNG8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.0.1/go.mod h1:Kv8liBeVNFkkkbilbgWRpV+wWuu+H5xdOT6HAgd30iw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.3.0/go.mod h1:hO1KLR7jcKaDDKDkvI9dP/FIhpmna5lkqPUQdEjFAM8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.7.0/go.mod h1:ceUgdyfNv4h4gLxHR0WNfDiiVmZFodZhZSbOLhpxqXE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.10.0/go.mod h1:Krqnjl22jUJ0HgMzw5eveuCvFDXY4nSYb4F8t5gdrag= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0/go.mod h1:HrbCVv40OOLTABmOn1ZWty6CHXkU8DK/Urc43tHug70= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.0.1/go.mod h1:xOvWoTOrQjxjW61xtOmD/WKGRYb/P4NzRo3bs65U6Rk= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.3.0/go.mod h1:keUU7UfnwWTWpJ+FWnyqmogPa82nuU5VUANFq49hlMY= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.7.0/go.mod h1:E+/KKhwOSw8yoPxSSuUHG6vKppkvhN+S1Jc7Nib3k3o= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.10.0/go.mod h1:OfUCyyIiDvNXHWpcWgbF+MWvqPZiNa3YDEnivcnYsV0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0/go.mod h1:5w41DY6S9gZrbjuq6Y+753e96WfPha5IcsOSZTtullM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.3.0/go.mod h1:QNX1aly8ehqqX1LEa6YniTU7VY9I6R3X/oPxhGdTceE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.14.0/go.mod h1:+N7zNjIJv4K+DeX67XXET0P+eIciESgaFDBqh+ZJFS4= +go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= +go.opentelemetry.io/otel/metric v0.30.0/go.mod h1:/ShZ7+TS4dHzDFmfi1kSXMhMVubNoP0oIaBp70J6UXU= +go.opentelemetry.io/otel/metric v0.31.0/go.mod h1:ohmwj9KTSIeBnDBm/ZwH2PSZxZzoOaG2xZeekTRzL5A= +go.opentelemetry.io/otel/metric v0.37.0/go.mod h1:DmdaHfGt54iV6UKxsV9slj2bBRJcKC1B1uvDLIioc1s= +go.opentelemetry.io/otel/metric v1.16.0/go.mod h1:QE47cpOmkwipPiefDwo2wDzwJrlfxxNYodqc4xnGCo4= +go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319EUrDVLrt7jqt8= +go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= +go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= +go.opentelemetry.io/otel/sdk v1.0.1/go.mod h1:HrdXne+BiwsOHYYkBE5ysIcv2bvdZstxzmCQhxTcZkI= +go.opentelemetry.io/otel/sdk v1.3.0/go.mod h1:rIo4suHNhQwBIPg9axF8V9CA72Wz2mKF1teNrup8yzs= +go.opentelemetry.io/otel/sdk v1.7.0/go.mod h1:uTEOTwaqIVuTGiJN7ii13Ibp75wJmYUDe374q6cZwUU= +go.opentelemetry.io/otel/sdk v1.10.0/go.mod h1:vO06iKzD5baltJz1zarxMCNHFpUlUiOy4s65ECtn6kE= +go.opentelemetry.io/otel/sdk v1.14.0/go.mod h1:bwIC5TjrNG6QDCHNWvW4HLHtUQ4I+VQDsnjhvyZCALM= +go.opentelemetry.io/otel/sdk v1.16.0/go.mod h1:tMsIuKXuuIWPBAOrH+eHtvhTL+SntFtXF9QD68aP6p4= +go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= +go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= +go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= +go.opentelemetry.io/otel/trace v1.0.1/go.mod h1:5g4i4fKLaX2BQpSBsxw8YYcgKpMMSW3x7ZTuYBr3sUk= +go.opentelemetry.io/otel/trace v1.3.0/go.mod h1:c/VDhno8888bvQYmbYLqe41/Ldmr/KKunbvWM4/fEjk= +go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU= +go.opentelemetry.io/otel/trace v1.8.0/go.mod h1:0Bt3PXY8w+3pheS3hQUt+wow8b1ojPaTBoTCh2zIFI4= +go.opentelemetry.io/otel/trace v1.10.0/go.mod h1:Sij3YYczqAdz+EhmGhE6TpTxUO5/F/AzrK+kxfGqySM= +go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8= +go.opentelemetry.io/otel/trace v1.16.0/go.mod h1:Yt9vYq1SdNz3xdjZZK7wcXv1qv2pwLkqr2QVwea0ef0= +go.opentelemetry.io/otel/trace v1.19.0 h1:DFVQmlVbfVeOuBRrwdtaehRrWiL1JoVs9CPIQ1Dzxpg= +go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.opentelemetry.io/proto/otlp v0.9.0/go.mod h1:1vKfU9rv61e9EVGthD1zNvUbiwPcimSsOPU9brfSHJg= +go.opentelemetry.io/proto/otlp v0.11.0/go.mod h1:QpEjXPrNQzrFDZgoTo49dgHR9RYRSrg3NAKnUGl9YpQ= +go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.opentelemetry.io/proto/otlp v0.16.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/automaxprocs v1.5.1/go.mod h1:BF4eumQw0P9GtnuxxovUd06vwm1o18oMzFtK66vU6XU= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= +go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= +go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= +go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +go.uber.org/zap v1.25.0/go.mod h1:JIAUzQIH94IC4fOJQm7gMmBJP5k7wQfdcnYdPoEXJYk= +go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= +go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= +golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= +golang.org/x/arch v0.8.0 h1:3wRIsP3pM4yUptoR96otTUOXI367OS0+c9eeRi9doIc= +golang.org/x/arch v0.8.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys= +golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20221005025214-4161e89ecf1b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= +golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= +golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= +golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w= +golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210216034530-4410531fe030/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= +golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190619014844-b5b0513f8c1b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220111093109-d55c255bac03/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= +golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= +golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= +golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= +golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= +golang.org/x/oauth2 v0.17.0 h1:6m3ZPmLEFdVxKKWnKq4VqZ60gutO35zm+zrAHVmHyDQ= +golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190522044717-8097e1b27ff5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190602015325-4c4f7f33c9ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190812073006-9eafafc0a87e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191210023423-ac6580df4449/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191220220014-0732a990476f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200120151820-655fe14d7479/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200217220822-9197077df867/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200817155316-9781c653f443/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200922070232-aee5d888a860/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201117170446-d9b008d0a637/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201202213521-69691e467435/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210903071746-97244b99971b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220224120231-95c6836cb0e7/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220405210540-1e041c57c461/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= +golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= +golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190422233926-fe54fb35175b/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20200916195026-c9a70fc28ce3/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= +golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= +golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= +gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= +gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= +gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= +gonum.org/v1/plot v0.10.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo= +google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= +google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= +google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= +google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= +google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= +google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= +google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= +google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.99.0/go.mod h1:1YOf74vkVndF7pG6hIHuINsM7eWwpVTAfNMNiL91A08= +google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= +google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo= +google.golang.org/api v0.103.0/go.mod h1:hGtW6nK1AC+d9si/UBhw8Xli+QMOf6xyNAyJw4qU9w0= +google.golang.org/api v0.106.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.107.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= +google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0= +google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= +google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= +google.golang.org/cloud v0.0.0-20151119220103-975617b05ea8/go.mod h1:0H1ncTHf11KCFhTc/+EFRbzSCOZx+VUbRMk55Yv5MYk= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190522204451-c2c4e71fbf69/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200117163144-32f20d992d24/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220329172620-7be39ac1afc7/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= +google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= +google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= +google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= +google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221024153911-1573dae28c9c/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo= +google.golang.org/genproto v0.0.0-20221109142239-94d6d90a7d66/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221117204609-8f9c96812029/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221201164419-0e50fba7f41c/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221201204527-e3fa12d562f3/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221202195650-67e5cbc046fd/go.mod h1:cTsE614GARnxrLsqKREzmNYJACSWWpAWdNMwnD7c2BE= +google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230112194545-e10362b5ecf9/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230113154510-dbe35b8444a5/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230123190316-2c411cf9d197/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230124163310-31e0e69b6fc2/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230127162408-596548ed4efa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230216225411-c8e22ba71e44/go.mod h1:8B0gmkoRebU8ukX6HP+4wrVQUY1+6PkQ44BSyIlflHA= +google.golang.org/genproto v0.0.0-20230222225845-10f96fb3dbec/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= +google.golang.org/genproto v0.0.0-20230223222841-637eb2293923/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= +google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488/go.mod h1:TvhZT5f700eVlTNwND1xoEZQeWTB2RY/65kplwl/bFA= +google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= +google.golang.org/genproto v0.0.0-20230320184635-7606e756e683/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= +google.golang.org/genproto v0.0.0-20230323212658-478b75c54725/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230330154414-c0448cd141ea/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230525234025-438c736192d0/go.mod h1:9ExIQyXL5hZrHzQceCwuSYwZZ5QZBazOcprJ5rgs3lY= +google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54/go.mod h1:zqTuNwFlFRsw5zIts5VnzLQxSRqh+CGOTVMlYbY0Eyk= +google.golang.org/genproto/googleapis/api v0.0.0-20230525234020-1aefcd67740a/go.mod h1:ts19tUU+Z0ZShN1y3aPyq2+O3d5FUNNgT6FtOzmrNn8= +google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234015-3fc162c6f38a/go.mod h1:xURIpW9ES5+/GZhnV6beoEtxQrnkRGIfP5VQG2tCBLc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de h1:cZGRis4/ot9uVm639a+rHCUaG0JJHEsdyzSQTMX+suY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:H4O17MA/PE9BsGx3w+a+W2VOLLD1Qf7oJneAoU6WktY= +google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= +google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.43.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww= +google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= +google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= +google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= +google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= +google.golang.org/grpc v1.57.1/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= +google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= +google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.29.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= +google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= +gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7GC73Ei8pv4MzjDUNPHgQWJdtMAaDU= +gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorm.io/driver/clickhouse v0.6.0 h1:nyhaeQ92qFEqf47B5N/vwPnnqV2DAuSHPC0QmlZrVZI= +gorm.io/driver/clickhouse v0.6.0/go.mod h1:UtkbKNA4ibWTCzVkuFY80hBsb82nTH335JUVUKvT9YY= +gorm.io/driver/mysql v1.4.3/go.mod h1:sSIebwZAVPiT+27jK9HIwvsqOGKx3YMPmrA3mBJR10c= +gorm.io/driver/mysql v1.5.4 h1:igQmHfKcbaTVyAIHNhhB888vvxh8EdQ2uSUT0LPcBso= +gorm.io/driver/mysql v1.5.4/go.mod h1:9rYxJph/u9SWkWc9yY4XJ1F/+xO0S/ChOmbk3+Z5Tvs= +gorm.io/driver/postgres v1.5.0 h1:u2FXTy14l45qc3UeCJ7QaAXZmZfDDv0YrthvmRq1l0U= +gorm.io/driver/postgres v1.5.0/go.mod h1:FUZXzO+5Uqg5zzwzv4KK49R8lvGIyscBOqYrtI1Ce9A= +gorm.io/driver/sqlserver v1.4.1 h1:t4r4r6Jam5E6ejqP7N82qAJIJAht27EGT41HyPfXRw0= +gorm.io/driver/sqlserver v1.4.1/go.mod h1:DJ4P+MeZbc5rvY58PnmN1Lnyvb5gw5NPzGshHDnJLig= +gorm.io/gorm v1.23.8/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk= +gorm.io/gorm v1.24.0/go.mod h1:DVrVomtaYTbqs7gB/x2uVvqnXzv0nqjB396B8cG4dBA= +gorm.io/gorm v1.24.6/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= +gorm.io/gorm v1.24.7-0.20230306060331-85eaf9eeda11/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= +gorm.io/gorm v1.25.2/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= +gorm.io/gorm v1.25.7-0.20240204074919-46816ad31dde/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= +gorm.io/gorm v1.25.7 h1:VsD6acwRjz2zFxGO50gPO6AkNs7KKnvfzUjHQhZDz/A= +gorm.io/gorm v1.25.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= +gorm.io/plugin/dbresolver v1.5.1 h1:s9Dj9f7r+1rE3nx/Ywzc85nXptUEaeOO0pt27xdopM8= +gorm.io/plugin/dbresolver v1.5.1/go.mod h1:l4Cn87EHLEYuqUncpEeTC2tTJQkjngPSD+lo8hIvcT0= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= +gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= +gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g= +gotest.tools/v3 v3.5.0/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= +k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo= +k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= +k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= +k8s.io/api v0.22.5/go.mod h1:mEhXyLaSD1qTOf40rRiKXkc+2iCem09rWLlFwhCEiAs= +k8s.io/api v0.26.2/go.mod h1:1kjMQsFE+QHPfskEcVNgL3+Hp88B80uj0QtSOlj8itU= +k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= +k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= +k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc= +k8s.io/apimachinery v0.22.1/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= +k8s.io/apimachinery v0.22.5/go.mod h1:xziclGKwuuJ2RM5/rSFQSYAj0zdbci3DH8kj+WvyN0U= +k8s.io/apimachinery v0.25.0/go.mod h1:qMx9eAk0sZQGsXGu86fab8tZdffHbwUfsvzqKn4mfB0= +k8s.io/apimachinery v0.26.2/go.mod h1:ats7nN1LExKHvJ9TmwootT00Yz05MuYqPXEXaVeOy5I= +k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= +k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM= +k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q= +k8s.io/apiserver v0.22.5/go.mod h1:s2WbtgZAkTKt679sYtSudEQrTGWUSQAPe6MupLnlmaQ= +k8s.io/apiserver v0.26.2/go.mod h1:GHcozwXgXsPuOJ28EnQ/jXEM9QeG6HT22YxSNmpYNh8= +k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= +k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= +k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= +k8s.io/client-go v0.22.5/go.mod h1:cs6yf/61q2T1SdQL5Rdcjg9J1ElXSwbjSrW2vFImM4Y= +k8s.io/client-go v0.26.2/go.mod h1:u5EjOuSyBa09yqqyY7m3abZeovO/7D/WehVVlZ2qcqU= +k8s.io/code-generator v0.19.7/go.mod h1:lwEq3YnLYb/7uVXLorOJfxg+cUu2oihFhHZ0n9NIla0= +k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= +k8s.io/component-base v0.20.4/go.mod h1:t4p9EdiagbVCJKrQ1RsA5/V4rFQNDfRlevJajlGwgjI= +k8s.io/component-base v0.20.6/go.mod h1:6f1MPBAeI+mvuts3sIdtpjljHWBQ2cIy38oBIWMYnrM= +k8s.io/component-base v0.22.5/go.mod h1:VK3I+TjuF9eaa+Ln67dKxhGar5ynVbwnGrUiNF4MqCI= +k8s.io/component-base v0.26.2/go.mod h1:DxbuIe9M3IZPRxPIzhch2m1eT7uFrSBJUBuVCQEBivs= +k8s.io/cri-api v0.17.3/go.mod h1:X1sbHmuXhwaHs9xxYffLqJogVsnI+f6cPRcgPel7ywM= +k8s.io/cri-api v0.20.1/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= +k8s.io/cri-api v0.20.4/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= +k8s.io/cri-api v0.20.6/go.mod h1:ew44AjNXwyn1s0U4xCKGodU7J1HzBeZ1MpGrpa5r8Yc= +k8s.io/cri-api v0.23.1/go.mod h1:REJE3PSU0h/LOV1APBrupxrEJqnoxZC8KWzkBUHwrK4= +k8s.io/cri-api v0.25.0/go.mod h1:J1rAyQkSJ2Q6I+aBMOVgg2/cbbebso6FNa0UagiR0kc= +k8s.io/cri-api v0.25.3/go.mod h1:riC/P0yOGUf2K1735wW+CXs1aY2ctBgePtnnoFLd0dU= +k8s.io/cri-api v0.27.1/go.mod h1:+Ts/AVYbIo04S86XbTD73UPp/DkTiYxtsFeOFEu32L0= +k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= +k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/klog/v2 v2.70.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/klog/v2 v2.90.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/kms v0.26.2/go.mod h1:69qGnf1NsFOQP07fBYqNLZklqEHSJF024JqYCaeVxHg= +k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= +k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= +k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= +k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= +k8s.io/kube-openapi v0.0.0-20220803162953-67bda5d908f1/go.mod h1:C/N6wCaBHeBHkHUesQOQy2/MZqGgMAFPqGsGQLdbZBU= +k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280/go.mod h1:+Axhij7bCpeqhklhUTe3xmOn6bWxolyZEeyaFpjGtl4= +k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= +k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20221107191617-1a15be271d1d/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/utils v0.0.0-20230220204549-a5ecb0141aa5/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +modernc.org/cc/v3 v3.36.0/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/cc/v3 v3.36.2/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/cc/v3 v3.36.3/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/ccgo/v3 v3.0.0-20220428102840-41399a37e894/go.mod h1:eI31LL8EwEBKPpNpA4bU1/i+sKOwOrQy8D87zWUcRZc= +modernc.org/ccgo/v3 v3.0.0-20220430103911-bc99d88307be/go.mod h1:bwdAnOoaIt8Ax9YdWGjxWsdkPcZyRPHqrOvJxaKAKGw= +modernc.org/ccgo/v3 v3.16.4/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= +modernc.org/ccgo/v3 v3.16.6/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= +modernc.org/ccgo/v3 v3.16.8/go.mod h1:zNjwkizS+fIFDrDjIAgBSCLkWbJuHF+ar3QRn+Z9aws= +modernc.org/ccgo/v3 v3.16.9/go.mod h1:zNMzC9A9xeNUepy6KuZBbugn3c0Mc9TeiJO4lgvkJDo= +modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ= +modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM= +modernc.org/libc v0.0.0-20220428101251-2d5f3daf273b/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= +modernc.org/libc v1.16.0/go.mod h1:N4LD6DBE9cf+Dzf9buBlzVJndKr/iJHG97vGLHYnb5A= +modernc.org/libc v1.16.1/go.mod h1:JjJE0eu4yeK7tab2n4S1w8tlWd9MxXLRzheaRnAKymU= +modernc.org/libc v1.16.17/go.mod h1:hYIV5VZczAmGZAnG15Vdngn5HSF5cSkbvfz2B7GRuVU= +modernc.org/libc v1.16.19/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= +modernc.org/libc v1.17.0/go.mod h1:XsgLldpP4aWlPlsjqKRdHPqCxCjISdHfM/yeWC5GyW0= +modernc.org/libc v1.17.1/go.mod h1:FZ23b+8LjxZs7XtFMbSzL/EhPxNbfZbErxEHc7cbD9s= +modernc.org/libc v1.22.5 h1:91BNch/e5B0uPbJFgqbxXuOnxBQjlS//icfQEGmvyjE= +modernc.org/libc v1.22.5/go.mod h1:jj+Z7dTNX8fBScMVNRAYZ/jF91K8fdT2hYMThc3YjBY= +modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/mathutil v1.4.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/mathutil v1.5.0 h1:rV0Ko/6SfM+8G+yKiyI830l3Wuz1zRutdslNoQ0kfiQ= +modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/memory v1.1.1/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= +modernc.org/memory v1.2.0/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= +modernc.org/memory v1.2.1/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/memory v1.5.0 h1:N+/8c5rE6EqugZwHii4IFsaJ7MUhoWX07J5tC/iI5Ds= +modernc.org/memory v1.5.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/sqlite v1.18.1/go.mod h1:6ho+Gow7oX5V+OiOQ6Tr4xeqbx13UZ6t+Fw9IRUG4d4= +modernc.org/sqlite v1.23.1 h1:nrSBg4aRQQwq59JpvGEQ15tNxoO5pX/kUjcRNwSAGQM= +modernc.org/sqlite v1.23.1/go.mod h1:OrDj17Mggn6MhE+iPbBNf7RGKODDE9NFT0f3EwDzJqk= +modernc.org/strutil v1.1.1/go.mod h1:DE+MQQ/hjKBZS2zNInV5hhcipt5rLPWkmpbGeW5mmdw= +modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= +modernc.org/tcl v1.13.1/go.mod h1:XOLfOwzhkljL4itZkK6T72ckMgvj0BDsnKNdZVUOecw= +modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= +modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8= +nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= +oras.land/oras-go v1.2.0/go.mod h1:pFNs7oHp2dYsYMSS82HaX5l4mpnGO7hbpPN6EWH2ltc= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.35/go.mod h1:WxjusMwXlKzfAs4p9km6XJRndVt2FROgMVCE4cdohFo= +sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= +sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.0.3/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= +sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/go.work b/go.work new file mode 100644 index 0000000..cc17f65 --- /dev/null +++ b/go.work @@ -0,0 +1,6 @@ +go 1.23 + +use ( + . + ../eve-plugin-sdk-go +) diff --git a/go.work.sum b/go.work.sum new file mode 100644 index 0000000..3ba7231 --- /dev/null +++ b/go.work.sum @@ -0,0 +1,908 @@ +bazil.org/fuse v0.0.0-20200407214033-5883e5a4b512 h1:SRsZGA7aFnCZETmov57jwPrWuTmaZK6+4R4v5FUe1/c= +cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM= +cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= +cloud.google.com/go/accessapproval v1.7.5 h1:uzmAMSgYcnlHa9X9YSQZ4Q1wlfl4NNkZyQgho1Z6p04= +cloud.google.com/go/accessapproval v1.7.5/go.mod h1:g88i1ok5dvQ9XJsxpUInWWvUBrIZhyPDPbk4T01OoJ0= +cloud.google.com/go/accesscontextmanager v1.8.5 h1:2GLNaNu9KRJhJBFTIVRoPwk6xE5mUDgD47abBq4Zp/I= +cloud.google.com/go/accesscontextmanager v1.8.5/go.mod h1:TInEhcZ7V9jptGNqN3EzZ5XMhT6ijWxTGjzyETwmL0Q= +cloud.google.com/go/aiplatform v1.60.0 h1:0cSrii1ZeLr16MbBoocyy5KVnrSdiQ3KN/vtrTe7RqE= +cloud.google.com/go/aiplatform v1.60.0/go.mod h1:eTlGuHOahHprZw3Hio5VKmtThIOak5/qy6pzdsqcQnM= +cloud.google.com/go/analytics v0.23.0 h1:Q+y94XH84jM8SK8O7qiY/PJRexb6n7dRbQ6PiUa4YGM= +cloud.google.com/go/analytics v0.23.0/go.mod h1:YPd7Bvik3WS95KBok2gPXDqQPHy08TsCQG6CdUCb+u0= +cloud.google.com/go/apigateway v1.6.5 h1:sPXnpk+6TneKIrjCjcpX5YGsAKy3PTdpIchoj8/74OE= +cloud.google.com/go/apigateway v1.6.5/go.mod h1:6wCwvYRckRQogyDDltpANi3zsCDl6kWi0b4Je+w2UiI= +cloud.google.com/go/apigeeconnect v1.6.5 h1:CrfIKv9Go3fh/QfQgisU3MeP90Ww7l/sVGmr3TpECo8= +cloud.google.com/go/apigeeconnect v1.6.5/go.mod h1:MEKm3AiT7s11PqTfKE3KZluZA9O91FNysvd3E6SJ6Ow= +cloud.google.com/go/apigeeregistry v0.8.3 h1:C+QU2K+DzDjk4g074ouwHQGkoff1h5OMQp6sblCVreQ= +cloud.google.com/go/apigeeregistry v0.8.3/go.mod h1:aInOWnqF4yMQx8kTjDqHNXjZGh/mxeNlAf52YqtASUs= +cloud.google.com/go/apikeys v0.6.0 h1:B9CdHFZTFjVti89tmyXXrO+7vSNo2jvZuHG8zD5trdQ= +cloud.google.com/go/appengine v1.8.5 h1:l2SviT44zWQiOv8bPoMBzW0vOcMO22iO0s+nVtVhdts= +cloud.google.com/go/appengine v1.8.5/go.mod h1:uHBgNoGLTS5di7BvU25NFDuKa82v0qQLjyMJLuPQrVo= +cloud.google.com/go/area120 v0.8.5 h1:vTs08KPLN/iMzTbxpu5ciL06KcsrVPMjz4IwcQyZ4uY= +cloud.google.com/go/area120 v0.8.5/go.mod h1:BcoFCbDLZjsfe4EkCnEq1LKvHSK0Ew/zk5UFu6GMyA0= +cloud.google.com/go/artifactregistry v1.14.7 h1:W9sVlyb1VRcUf83w7aM3yMsnp4HS4PoyGqYQNG0O5lI= +cloud.google.com/go/artifactregistry v1.14.7/go.mod h1:0AUKhzWQzfmeTvT4SjfI4zjot72EMfrkvL9g9aRjnnM= +cloud.google.com/go/asset v1.17.2 h1:xgFnBP3luSbUcC9RWJvb3Zkt+y/wW6PKwPHr3ssnIP8= +cloud.google.com/go/asset v1.17.2/go.mod h1:SVbzde67ehddSoKf5uebOD1sYw8Ab/jD/9EIeWg99q4= +cloud.google.com/go/assuredworkloads v1.11.5 h1:gCrN3IyvqY3cP0wh2h43d99CgH3G+WYs9CeuFVKChR8= +cloud.google.com/go/assuredworkloads v1.11.5/go.mod h1:FKJ3g3ZvkL2D7qtqIGnDufFkHxwIpNM9vtmhvt+6wqk= +cloud.google.com/go/automl v1.13.5 h1:ijiJy9sYWh75WrqImXsfWc1e3HR3iO+ef9fvW03Ig/4= +cloud.google.com/go/automl v1.13.5/go.mod h1:MDw3vLem3yh+SvmSgeYUmUKqyls6NzSumDm9OJ3xJ1Y= +cloud.google.com/go/baremetalsolution v1.2.4 h1:LFydisRmS7hQk9P/YhekwuZGqb45TW4QavcrMToWo5A= +cloud.google.com/go/baremetalsolution v1.2.4/go.mod h1:BHCmxgpevw9IEryE99HbYEfxXkAEA3hkMJbYYsHtIuY= +cloud.google.com/go/batch v1.8.0 h1:2HK4JerwVaIcCh/lJiHwh6+uswPthiMMWhiSWLELayk= +cloud.google.com/go/batch v1.8.0/go.mod h1:k8V7f6VE2Suc0zUM4WtoibNrA6D3dqBpB+++e3vSGYc= +cloud.google.com/go/beyondcorp v1.0.4 h1:qs0J0O9Ol2h1yA0AU+r7l3hOCPzs2MjE1d6d/kaHIKo= +cloud.google.com/go/beyondcorp v1.0.4/go.mod h1:Gx8/Rk2MxrvWfn4WIhHIG1NV7IBfg14pTKv1+EArVcc= +cloud.google.com/go/bigquery v1.59.1 h1:CpT+/njKuKT3CEmswm6IbhNu9u35zt5dO4yPDLW+nG4= +cloud.google.com/go/bigquery v1.59.1/go.mod h1:VP1UJYgevyTwsV7desjzNzDND5p6hZB+Z8gZJN1GQUc= +cloud.google.com/go/billing v1.18.2 h1:oWUEQvuC4JvtnqLZ35zgzdbuHt4Itbftvzbe6aEyFdE= +cloud.google.com/go/billing v1.18.2/go.mod h1:PPIwVsOOQ7xzbADCwNe8nvK776QpfrOAUkvKjCUcpSE= +cloud.google.com/go/binaryauthorization v1.8.1 h1:1jcyh2uIUwSZkJ/JmL8kd5SUkL/Krbv8zmYLEbAz6kY= +cloud.google.com/go/binaryauthorization v1.8.1/go.mod h1:1HVRyBerREA/nhI7yLang4Zn7vfNVA3okoAR9qYQJAQ= +cloud.google.com/go/certificatemanager v1.7.5 h1:UMBr/twXvH3jcT5J5/YjRxf2tvwTYIfrpemTebe0txc= +cloud.google.com/go/certificatemanager v1.7.5/go.mod h1:uX+v7kWqy0Y3NG/ZhNvffh0kuqkKZIXdvlZRO7z0VtM= +cloud.google.com/go/channel v1.17.5 h1:/omiBnyFjm4S1ETHoOmJbL7LH7Ljcei4rYG6Sj3hc80= +cloud.google.com/go/channel v1.17.5/go.mod h1:FlpaOSINDAXgEext0KMaBq/vwpLMkkPAw9b2mApQeHc= +cloud.google.com/go/cloudbuild v1.15.1 h1:ZB6oOmJo+MTov9n629fiCrO9YZPOg25FZvQ7gIHu5ng= +cloud.google.com/go/cloudbuild v1.15.1/go.mod h1:gIofXZSu+XD2Uy+qkOrGKEx45zd7s28u/k8f99qKals= +cloud.google.com/go/clouddms v1.7.4 h1:Sr0Zo5EAcPQiCBgHWICg3VGkcdS/LLP1d9SR7qQBM/s= +cloud.google.com/go/clouddms v1.7.4/go.mod h1:RdrVqoFG9RWI5AvZ81SxJ/xvxPdtcRhFotwdE79DieY= +cloud.google.com/go/cloudtasks v1.12.6 h1:EUt1hIZ9bLv8Iz9yWaCrqgMnIU+Tdh0yXM1MMVGhjfE= +cloud.google.com/go/cloudtasks v1.12.6/go.mod h1:b7c7fe4+TJsFZfDyzO51F7cjq7HLUlRi/KZQLQjDsaY= +cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= +cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= +cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40= +cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= +cloud.google.com/go/contactcenterinsights v1.13.0 h1:6Vs/YnDG5STGjlWMEjN/xtmft7MrOTOnOZYUZtGTx0w= +cloud.google.com/go/contactcenterinsights v1.13.0/go.mod h1:ieq5d5EtHsu8vhe2y3amtZ+BE+AQwX5qAy7cpo0POsI= +cloud.google.com/go/container v1.31.0 h1:MAaNH7VRNPWEhvqOypq2j+7ONJKrKzon4v9nS3nLZe0= +cloud.google.com/go/container v1.31.0/go.mod h1:7yABn5s3Iv3lmw7oMmyGbeV6tQj86njcTijkkGuvdZA= +cloud.google.com/go/containeranalysis v0.11.4 h1:doJ0M1ljS4hS0D2UbHywlHGwB7sQLNrt9vFk9Zyi7vY= +cloud.google.com/go/containeranalysis v0.11.4/go.mod h1:cVZT7rXYBS9NG1rhQbWL9pWbXCKHWJPYraE8/FTSYPE= +cloud.google.com/go/datacatalog v1.19.3 h1:A0vKYCQdxQuV4Pi0LL9p39Vwvg4jH5yYveMv50gU5Tw= +cloud.google.com/go/datacatalog v1.19.3/go.mod h1:ra8V3UAsciBpJKQ+z9Whkxzxv7jmQg1hfODr3N3YPJ4= +cloud.google.com/go/dataflow v0.9.5 h1:RYHtcPhmE664+F0Je46p+NvFbG8z//KCXp+uEqB4jZU= +cloud.google.com/go/dataflow v0.9.5/go.mod h1:udl6oi8pfUHnL0z6UN9Lf9chGqzDMVqcYTcZ1aPnCZQ= +cloud.google.com/go/dataform v0.9.2 h1:5e4eqGrd0iDTCg4Q+VlAao5j2naKAA7xRurNtwmUknU= +cloud.google.com/go/dataform v0.9.2/go.mod h1:S8cQUwPNWXo7m/g3DhWHsLBoufRNn9EgFrMgne2j7cI= +cloud.google.com/go/datafusion v1.7.5 h1:HQ/BUOP8OIGJxuztpYvNvlb+/U+/Bfs9SO8tQbh61fk= +cloud.google.com/go/datafusion v1.7.5/go.mod h1:bYH53Oa5UiqahfbNK9YuYKteeD4RbQSNMx7JF7peGHc= +cloud.google.com/go/datalabeling v0.8.5 h1:GpIFRdm0qIZNsxqURFJwHt0ZBJZ0nF/mUVEigR7PH/8= +cloud.google.com/go/datalabeling v0.8.5/go.mod h1:IABB2lxQnkdUbMnQaOl2prCOfms20mcPxDBm36lps+s= +cloud.google.com/go/dataplex v1.14.2 h1:fxIfdU8fxzR3clhOoNI7XFppvAmndxDu1AMH+qX9WKQ= +cloud.google.com/go/dataplex v1.14.2/go.mod h1:0oGOSFlEKef1cQeAHXy4GZPB/Ife0fz/PxBf+ZymA2U= +cloud.google.com/go/dataproc v1.12.0 h1:W47qHL3W4BPkAIbk4SWmIERwsWBaNnWm0P2sdx3YgGU= +cloud.google.com/go/dataproc/v2 v2.4.0 h1:/u81Fd+BvCLp+xjctI1DiWVJn6cn9/s3Akc8xPH02yk= +cloud.google.com/go/dataproc/v2 v2.4.0/go.mod h1:3B1Ht2aRB8VZIteGxQS/iNSJGzt9+CA0WGnDVMEm7Z4= +cloud.google.com/go/dataqna v0.8.5 h1:9ybXs3nr9BzxSGC04SsvtuXaHY0qmJSLIpIAbZo9GqQ= +cloud.google.com/go/dataqna v0.8.5/go.mod h1:vgihg1mz6n7pb5q2YJF7KlXve6tCglInd6XO0JGOlWM= +cloud.google.com/go/datastore v1.15.0 h1:0P9WcsQeTWjuD1H14JIY7XQscIPQ4Laje8ti96IC5vg= +cloud.google.com/go/datastore v1.15.0/go.mod h1:GAeStMBIt9bPS7jMJA85kgkpsMkvseWWXiaHya9Jes8= +cloud.google.com/go/datastream v1.10.4 h1:o1QDKMo/hk0FN7vhoUQURREuA0rgKmnYapB+1M+7Qz4= +cloud.google.com/go/datastream v1.10.4/go.mod h1:7kRxPdxZxhPg3MFeCSulmAJnil8NJGGvSNdn4p1sRZo= +cloud.google.com/go/deploy v1.17.1 h1:m27Ojwj03gvpJqCbodLYiVmE9x4/LrHGGMjzc0LBfM4= +cloud.google.com/go/deploy v1.17.1/go.mod h1:SXQyfsXrk0fBmgBHRzBjQbZhMfKZ3hMQBw5ym7MN/50= +cloud.google.com/go/dialogflow v1.49.0 h1:KqG0oxGE71qo0lRVyAoeBozefCvsMfcDzDjoLYSY0F4= +cloud.google.com/go/dialogflow v1.49.0/go.mod h1:dhVrXKETtdPlpPhE7+2/k4Z8FRNUp6kMV3EW3oz/fe0= +cloud.google.com/go/dlp v1.11.2 h1:lTipOuJaSjlYnnotPMbEhKURLC6GzCMDDzVbJAEbmYM= +cloud.google.com/go/dlp v1.11.2/go.mod h1:9Czi+8Y/FegpWzgSfkRlyz+jwW6Te9Rv26P3UfU/h/w= +cloud.google.com/go/documentai v1.25.0 h1:lI62GMEEPO6vXJI9hj+G9WjOvnR0hEjvjokrnex4cxA= +cloud.google.com/go/documentai v1.25.0/go.mod h1:ftLnzw5VcXkLItp6pw1mFic91tMRyfv6hHEY5br4KzY= +cloud.google.com/go/domains v0.9.5 h1:Mml/R6s3vQQvFPpi/9oX3O5dRirgjyJ8cksK8N19Y7g= +cloud.google.com/go/domains v0.9.5/go.mod h1:dBzlxgepazdFhvG7u23XMhmMKBjrkoUNaw0A8AQB55Y= +cloud.google.com/go/edgecontainer v1.1.5 h1:tBY32km78ScpK2aOP84JoW/+wtpx5WluyPUSEE3270U= +cloud.google.com/go/edgecontainer v1.1.5/go.mod h1:rgcjrba3DEDEQAidT4yuzaKWTbkTI5zAMu3yy6ZWS0M= +cloud.google.com/go/errorreporting v0.3.0 h1:kj1XEWMu8P0qlLhm3FwcaFsUvXChV/OraZwA70trRR0= +cloud.google.com/go/essentialcontacts v1.6.6 h1:13eHn5qBnsawxI7mIrv4jRIEmQ1xg0Ztqw5ZGqtUNfA= +cloud.google.com/go/essentialcontacts v1.6.6/go.mod h1:XbqHJGaiH0v2UvtuucfOzFXN+rpL/aU5BCZLn4DYl1Q= +cloud.google.com/go/eventarc v1.13.4 h1:ORkd6/UV5FIdA8KZQDLNZYKS7BBOrj0p01DXPmT4tE4= +cloud.google.com/go/eventarc v1.13.4/go.mod h1:zV5sFVoAa9orc/52Q+OuYUG9xL2IIZTbbuTHC6JSY8s= +cloud.google.com/go/filestore v1.8.1 h1:X5G4y/vrUo1B8Nsz93qSWTMAcM8LXbGUldq33OdcdCw= +cloud.google.com/go/filestore v1.8.1/go.mod h1:MbN9KcaM47DRTIuLfQhJEsjaocVebNtNQhSLhKCF5GM= +cloud.google.com/go/firestore v1.14.0 h1:8aLcKnMPoldYU3YHgu4t2exrKhLQkqaXAGqT0ljrFVw= +cloud.google.com/go/firestore v1.14.0/go.mod h1:96MVaHLsEhbvkBEdZgfN+AS/GIkco1LRpH9Xp9YZfzQ= +cloud.google.com/go/functions v1.16.0 h1:IWVylmK5F6hJ3R5zaRW7jI5PrWhCvtBVU4axQLmXSo4= +cloud.google.com/go/functions v1.16.0/go.mod h1:nbNpfAG7SG7Duw/o1iZ6ohvL7mc6MapWQVpqtM29n8k= +cloud.google.com/go/gaming v1.9.0 h1:7vEhFnZmd931Mo7sZ6pJy7uQPDxF7m7v8xtBheG08tc= +cloud.google.com/go/gkebackup v1.3.5 h1:iuE8KNtTsPOc79qeWoNS8zOWoXPD9SAdOmwgxtlCmh8= +cloud.google.com/go/gkebackup v1.3.5/go.mod h1:KJ77KkNN7Wm1LdMopOelV6OodM01pMuK2/5Zt1t4Tvc= +cloud.google.com/go/gkeconnect v0.8.5 h1:17d+ZSSXKqG/RwZCq3oFMIWLPI8Zw3b8+a9/BEVlwH0= +cloud.google.com/go/gkeconnect v0.8.5/go.mod h1:LC/rS7+CuJ5fgIbXv8tCD/mdfnlAadTaUufgOkmijuk= +cloud.google.com/go/gkehub v0.14.5 h1:RboLNFzf9wEMSo7DrKVBlf+YhK/A/jrLN454L5Tz99Q= +cloud.google.com/go/gkehub v0.14.5/go.mod h1:6bzqxM+a+vEH/h8W8ec4OJl4r36laxTs3A/fMNHJ0wA= +cloud.google.com/go/gkemulticloud v1.1.1 h1:rsSZAGLhyjyE/bE2ToT5fqo1qSW7S+Ubsc9jFOcbhSI= +cloud.google.com/go/gkemulticloud v1.1.1/go.mod h1:C+a4vcHlWeEIf45IB5FFR5XGjTeYhF83+AYIpTy4i2Q= +cloud.google.com/go/grafeas v0.3.4 h1:D4x32R/cHX3MTofKwirz015uEdVk4uAxvZkZCZkOrF4= +cloud.google.com/go/grafeas v0.3.4/go.mod h1:A5m316hcG+AulafjAbPKXBO/+I5itU4LOdKO2R/uDIc= +cloud.google.com/go/gsuiteaddons v1.6.5 h1:CZEbaBwmbYdhFw21Fwbo+C35HMe36fTE0FBSR4KSfWg= +cloud.google.com/go/gsuiteaddons v1.6.5/go.mod h1:Lo4P2IvO8uZ9W+RaC6s1JVxo42vgy+TX5a6hfBZ0ubs= +cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= +cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= +cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= +cloud.google.com/go/iap v1.9.4 h1:94zirc2r4t6KzhAMW0R6Dme005eTP6yf7g6vN4IhRrA= +cloud.google.com/go/iap v1.9.4/go.mod h1:vO4mSq0xNf/Pu6E5paORLASBwEmphXEjgCFg7aeNu1w= +cloud.google.com/go/ids v1.4.5 h1:xd4U7pgl3GHV+MABnv1BF4/Vy/zBF7CYC8XngkOLzag= +cloud.google.com/go/ids v1.4.5/go.mod h1:p0ZnyzjMWxww6d2DvMGnFwCsSxDJM666Iir1bK1UuBo= +cloud.google.com/go/iot v1.7.5 h1:munTeBlbqI33iuTYgXy7S8lW2TCgi5l1hA4roSIY+EE= +cloud.google.com/go/iot v1.7.5/go.mod h1:nq3/sqTz3HGaWJi1xNiX7F41ThOzpud67vwk0YsSsqs= +cloud.google.com/go/kms v1.15.7 h1:7caV9K3yIxvlQPAcaFffhlT7d1qpxjB1wHBtjWa13SM= +cloud.google.com/go/kms v1.15.7/go.mod h1:ub54lbsa6tDkUwnu4W7Yt1aAIFLnspgh0kPGToDukeI= +cloud.google.com/go/language v1.12.3 h1:iaJZg6K4j/2PvZZVcjeO/btcWWIllVRBhuTFjGO4LXs= +cloud.google.com/go/language v1.12.3/go.mod h1:evFX9wECX6mksEva8RbRnr/4wi/vKGYnAJrTRXU8+f8= +cloud.google.com/go/lifesciences v0.9.5 h1:gXvN70m2p+4zgJFzaz6gMKaxTuF9WJ0USYoMLWAOm8g= +cloud.google.com/go/lifesciences v0.9.5/go.mod h1:OdBm0n7C0Osh5yZB7j9BXyrMnTRGBJIZonUMxo5CzPw= +cloud.google.com/go/logging v1.9.0 h1:iEIOXFO9EmSiTjDmfpbRjOxECO7R8C7b8IXUGOj7xZw= +cloud.google.com/go/logging v1.9.0/go.mod h1:1Io0vnZv4onoUnsVUQY3HZ3Igb1nBchky0A0y7BBBhE= +cloud.google.com/go/longrunning v0.5.4/go.mod h1:zqNVncI0BOP8ST6XQD1+VcvuShMmq7+xFSzOL++V0dI= +cloud.google.com/go/longrunning v0.5.5 h1:GOE6pZFdSrTb4KAiKnXsJBtlE6mEyaW44oKyMILWnOg= +cloud.google.com/go/longrunning v0.5.5/go.mod h1:WV2LAxD8/rg5Z1cNW6FJ/ZpX4E4VnDnoTk0yawPBB7s= +cloud.google.com/go/managedidentities v1.6.5 h1:+bpih1piZVLxla/XBqeSUzJBp8gv9plGHIMAI7DLpDM= +cloud.google.com/go/managedidentities v1.6.5/go.mod h1:fkFI2PwwyRQbjLxlm5bQ8SjtObFMW3ChBGNqaMcgZjI= +cloud.google.com/go/maps v1.6.4 h1:EVCZAiDvog9So46460BGbCasPhi613exoaQbpilMVlk= +cloud.google.com/go/maps v1.6.4/go.mod h1:rhjqRy8NWmDJ53saCfsXQ0LKwBHfi6OSh5wkq6BaMhI= +cloud.google.com/go/mediatranslation v0.8.5 h1:c76KdIXljQHSCb/Cy47S8H4s05A4zbK3pAFGzwcczZo= +cloud.google.com/go/mediatranslation v0.8.5/go.mod h1:y7kTHYIPCIfgyLbKncgqouXJtLsU+26hZhHEEy80fSs= +cloud.google.com/go/memcache v1.10.5 h1:yeDv5qxRedFosvpMSEswrqUsJM5OdWvssPHFliNFTc4= +cloud.google.com/go/memcache v1.10.5/go.mod h1:/FcblbNd0FdMsx4natdj+2GWzTq+cjZvMa1I+9QsuMA= +cloud.google.com/go/metastore v1.13.4 h1:dR7vqWXlK6IYR8Wbu9mdFfwlVjodIBhd1JRrpZftTEg= +cloud.google.com/go/metastore v1.13.4/go.mod h1:FMv9bvPInEfX9Ac1cVcRXp8EBBQnBcqH6gz3KvJ9BAE= +cloud.google.com/go/monitoring v1.18.0 h1:NfkDLQDG2UR3WYZVQE8kwSbUIEyIqJUPl+aOQdFH1T4= +cloud.google.com/go/monitoring v1.18.0/go.mod h1:c92vVBCeq/OB4Ioyo+NbN2U7tlg5ZH41PZcdvfc+Lcg= +cloud.google.com/go/networkconnectivity v1.14.4 h1:GBfXFhLyPspnaBE3nI/BRjdhW8vcbpT9QjE/4kDCDdc= +cloud.google.com/go/networkconnectivity v1.14.4/go.mod h1:PU12q++/IMnDJAB+3r+tJtuCXCfwfN+C6Niyj6ji1Po= +cloud.google.com/go/networkmanagement v1.9.4 h1:aLV5GcosBNmd6M8+a0ekB0XlLRexv4fvnJJrYnqeBcg= +cloud.google.com/go/networkmanagement v1.9.4/go.mod h1:daWJAl0KTFytFL7ar33I6R/oNBH8eEOX/rBNHrC/8TA= +cloud.google.com/go/networksecurity v0.9.5 h1:+caSxBTj0E8OYVh/5wElFdjEMO1S/rZtE1152Cepchc= +cloud.google.com/go/networksecurity v0.9.5/go.mod h1:KNkjH/RsylSGyyZ8wXpue8xpCEK+bTtvof8SBfIhMG8= +cloud.google.com/go/notebooks v1.11.3 h1:FH48boYmrWVQ6k0Mx/WrnNafXncT5iSYxA8CNyWTgy0= +cloud.google.com/go/notebooks v1.11.3/go.mod h1:0wQyI2dQC3AZyQqWnRsp+yA+kY4gC7ZIVP4Qg3AQcgo= +cloud.google.com/go/optimization v1.6.3 h1:63NZaWyN+5rZEKHPX4ACpw3BjgyeuY8+rCehiCMaGPY= +cloud.google.com/go/optimization v1.6.3/go.mod h1:8ve3svp3W6NFcAEFr4SfJxrldzhUl4VMUJmhrqVKtYA= +cloud.google.com/go/orchestration v1.8.5 h1:YHgWMlrPttIVGItgGfuvO2KM7x+y9ivN/Yk92pMm1a4= +cloud.google.com/go/orchestration v1.8.5/go.mod h1:C1J7HesE96Ba8/hZ71ISTV2UAat0bwN+pi85ky38Yq8= +cloud.google.com/go/orgpolicy v1.12.1 h1:2JbXigqBJVp8Dx5dONUttFqewu4fP0p3pgOdIZAhpYU= +cloud.google.com/go/orgpolicy v1.12.1/go.mod h1:aibX78RDl5pcK3jA8ysDQCFkVxLj3aOQqrbBaUL2V5I= +cloud.google.com/go/osconfig v1.12.5 h1:Mo5jGAxOMKH/PmDY7fgY19yFcVbvwREb5D5zMPQjFfo= +cloud.google.com/go/osconfig v1.12.5/go.mod h1:D9QFdxzfjgw3h/+ZaAb5NypM8bhOMqBzgmbhzWViiW8= +cloud.google.com/go/oslogin v1.13.1 h1:1K4nOT5VEZNt7XkhaTXupBYos5HjzvJMfhvyD2wWdFs= +cloud.google.com/go/oslogin v1.13.1/go.mod h1:vS8Sr/jR7QvPWpCjNqy6LYZr5Zs1e8ZGW/KPn9gmhws= +cloud.google.com/go/phishingprotection v0.8.5 h1:DH3WFLzEoJdW/6xgsmoDqOwT1xddFi7gKu0QGZQhpGU= +cloud.google.com/go/phishingprotection v0.8.5/go.mod h1:g1smd68F7mF1hgQPuYn3z8HDbNre8L6Z0b7XMYFmX7I= +cloud.google.com/go/policytroubleshooter v1.10.3 h1:c0WOzC6hz964QWNBkyKfna8A2jOIx1zzZa43Gx/P09o= +cloud.google.com/go/policytroubleshooter v1.10.3/go.mod h1:+ZqG3agHT7WPb4EBIRqUv4OyIwRTZvsVDHZ8GlZaoxk= +cloud.google.com/go/privatecatalog v0.9.5 h1:UZ0assTnATXSggoxUIh61RjTQ4P9zCMk/kEMbn0nMYA= +cloud.google.com/go/privatecatalog v0.9.5/go.mod h1:fVWeBOVe7uj2n3kWRGlUQqR/pOd450J9yZoOECcQqJk= +cloud.google.com/go/pubsub v1.36.1 h1:dfEPuGCHGbWUhaMCTHUFjfroILEkx55iUmKBZTP5f+Y= +cloud.google.com/go/pubsub v1.36.1/go.mod h1:iYjCa9EzWOoBiTdd4ps7QoMtMln5NwaZQpK1hbRfBDE= +cloud.google.com/go/pubsublite v1.8.1 h1:pX+idpWMIH30/K7c0epN6V703xpIcMXWRjKJsz0tYGY= +cloud.google.com/go/pubsublite v1.8.1/go.mod h1:fOLdU4f5xldK4RGJrBMm+J7zMWNj/k4PxwEZXy39QS0= +cloud.google.com/go/recaptchaenterprise v1.3.1 h1:u6EznTGzIdsyOsvm+Xkw0aSuKFXQlyjGE9a4exk6iNQ= +cloud.google.com/go/recaptchaenterprise/v2 v2.9.2 h1:U3Wfq12X9cVMuTpsWDSURnXF0Z9hSPTHj+xsnXDRLsw= +cloud.google.com/go/recaptchaenterprise/v2 v2.9.2/go.mod h1:trwwGkfhCmp05Ll5MSJPXY7yvnO0p4v3orGANAFHAuU= +cloud.google.com/go/recommendationengine v0.8.5 h1:ineqLswaCSBY0csYv5/wuXJMBlxATK6Xc5jJkpiTEdM= +cloud.google.com/go/recommendationengine v0.8.5/go.mod h1:A38rIXHGFvoPvmy6pZLozr0g59NRNREz4cx7F58HAsQ= +cloud.google.com/go/recommender v1.12.1 h1:LVLYS3r3u0MSCxQSDUtLSkporEGi9OAE6hGvayrZNPs= +cloud.google.com/go/recommender v1.12.1/go.mod h1:gf95SInWNND5aPas3yjwl0I572dtudMhMIG4ni8nr+0= +cloud.google.com/go/redis v1.14.2 h1:QF0maEdVv0Fj/2roU8sX3NpiDBzP9ICYTO+5F32gQNo= +cloud.google.com/go/redis v1.14.2/go.mod h1:g0Lu7RRRz46ENdFKQ2EcQZBAJ2PtJHJLuiiRuEXwyQw= +cloud.google.com/go/resourcemanager v1.9.5 h1:AZWr1vWVDKGwfLsVhcN+vcwOz3xqqYxtmMa0aABCMms= +cloud.google.com/go/resourcemanager v1.9.5/go.mod h1:hep6KjelHA+ToEjOfO3garMKi/CLYwTqeAw7YiEI9x8= +cloud.google.com/go/resourcesettings v1.6.5 h1:BTr5MVykJwClASci/7Og4Qfx70aQ4n3epsNLj94ZYgw= +cloud.google.com/go/resourcesettings v1.6.5/go.mod h1:WBOIWZraXZOGAgoR4ukNj0o0HiSMO62H9RpFi9WjP9I= +cloud.google.com/go/retail v1.16.0 h1:Fn1GuAua1c6crCGqfJ1qMxG1Xh10Tg/x5EUODEHMqkw= +cloud.google.com/go/retail v1.16.0/go.mod h1:LW7tllVveZo4ReWt68VnldZFWJRzsh9np+01J9dYWzE= +cloud.google.com/go/run v1.3.4 h1:m9WDA7DzTpczhZggwYlZcBWgCRb+kgSIisWn1sbw2rQ= +cloud.google.com/go/run v1.3.4/go.mod h1:FGieuZvQ3tj1e9GnzXqrMABSuir38AJg5xhiYq+SF3o= +cloud.google.com/go/scheduler v1.10.6 h1:5U8iXLoQ03qOB+ZXlAecU7fiE33+u3QiM9nh4cd0eTE= +cloud.google.com/go/scheduler v1.10.6/go.mod h1:pe2pNCtJ+R01E06XCDOJs1XvAMbv28ZsQEbqknxGOuE= +cloud.google.com/go/secretmanager v1.11.5 h1:82fpF5vBBvu9XW4qj0FU2C6qVMtj1RM/XHwKXUEAfYY= +cloud.google.com/go/secretmanager v1.11.5/go.mod h1:eAGv+DaCHkeVyQi0BeXgAHOU0RdrMeZIASKc+S7VqH4= +cloud.google.com/go/security v1.15.5 h1:wTKJQ10j8EYgvE8Y+KhovxDRVDk2iv/OsxZ6GrLP3kE= +cloud.google.com/go/security v1.15.5/go.mod h1:KS6X2eG3ynWjqcIX976fuToN5juVkF6Ra6c7MPnldtc= +cloud.google.com/go/securitycenter v1.24.4 h1:/5jjkZ+uGe8hZ7pvd7pO30VW/a+pT2MrrdgOqjyucKQ= +cloud.google.com/go/securitycenter v1.24.4/go.mod h1:PSccin+o1EMYKcFQzz9HMMnZ2r9+7jbc+LvPjXhpwcU= +cloud.google.com/go/servicecontrol v1.11.1 h1:d0uV7Qegtfaa7Z2ClDzr9HJmnbJW7jn0WhZ7wOX6hLE= +cloud.google.com/go/servicedirectory v1.11.4 h1:da7HFI1229kyzIyuVEzHXip0cw0d+E0s8mjQby0WN+k= +cloud.google.com/go/servicedirectory v1.11.4/go.mod h1:Bz2T9t+/Ehg6x+Y7Ycq5xiShYLD96NfEsWNHyitj1qM= +cloud.google.com/go/servicemanagement v1.8.0 h1:fopAQI/IAzlxnVeiKn/8WiV6zKndjFkvi+gzu+NjywY= +cloud.google.com/go/serviceusage v1.6.0 h1:rXyq+0+RSIm3HFypctp7WoXxIA563rn206CfMWdqXX4= +cloud.google.com/go/shell v1.7.5 h1:3Fq2hzO0ZSyaqBboJrFkwwf/qMufDtqwwA6ep8EZxEI= +cloud.google.com/go/shell v1.7.5/go.mod h1:hL2++7F47/IfpfTO53KYf1EC+F56k3ThfNEXd4zcuiE= +cloud.google.com/go/spanner v1.57.0 h1:fJq+ZfQUDHE+cy1li0bJA8+sy2oiSGhuGqN5nqVaZdU= +cloud.google.com/go/spanner v1.57.0/go.mod h1:aXQ5QDdhPRIqVhYmnkAdwPYvj/DRN0FguclhEWw+jOo= +cloud.google.com/go/speech v1.21.1 h1:nuFc+Kj5B8de75nN4FdPyUbI2SiBoHZG6BLurXL56Q0= +cloud.google.com/go/speech v1.21.1/go.mod h1:E5GHZXYQlkqWQwY5xRSLHw2ci5NMQNG52FfMU1aZrIA= +cloud.google.com/go/storage v1.37.0 h1:WI8CsaFO8Q9KjPVtsZ5Cmi0dXV25zMoX0FklT7c3Jm4= +cloud.google.com/go/storage v1.37.0/go.mod h1:i34TiT2IhiNDmcj65PqwCjcoUX7Z5pLzS8DEmoiFq1k= +cloud.google.com/go/storagetransfer v1.10.4 h1:dy4fL3wO0VABvzM05ycMUPFHxTPbJz9Em8ikAJVqSbI= +cloud.google.com/go/storagetransfer v1.10.4/go.mod h1:vef30rZKu5HSEf/x1tK3WfWrL0XVoUQN/EPDRGPzjZs= +cloud.google.com/go/talent v1.6.6 h1:JssV0CE3FNujuSWn7SkosOzg7qrMxVnt6txOfGcMSa4= +cloud.google.com/go/talent v1.6.6/go.mod h1:y/WQDKrhVz12WagoarpAIyKKMeKGKHWPoReZ0g8tseQ= +cloud.google.com/go/texttospeech v1.7.5 h1:dxY2Q5mHCbrGa3oPR2O3PCicdnvKa1JmwGQK36EFLOw= +cloud.google.com/go/texttospeech v1.7.5/go.mod h1:tzpCuNWPwrNJnEa4Pu5taALuZL4QRRLcb+K9pbhXT6M= +cloud.google.com/go/tpu v1.6.5 h1:C8YyYda8WtNdBoCgFwwBzZd+S6+EScHOxM/z1h0NNp8= +cloud.google.com/go/tpu v1.6.5/go.mod h1:P9DFOEBIBhuEcZhXi+wPoVy/cji+0ICFi4TtTkMHSSs= +cloud.google.com/go/trace v1.10.5 h1:0pr4lIKJ5XZFYD9GtxXEWr0KkVeigc3wlGpZco0X1oA= +cloud.google.com/go/trace v1.10.5/go.mod h1:9hjCV1nGBCtXbAE4YK7OqJ8pmPYSxPA0I67JwRd5s3M= +cloud.google.com/go/translate v1.10.1 h1:upovZ0wRMdzZvXnu+RPam41B0mRJ+coRXFP2cYFJ7ew= +cloud.google.com/go/translate v1.10.1/go.mod h1:adGZcQNom/3ogU65N9UXHOnnSvjPwA/jKQUMnsYXOyk= +cloud.google.com/go/video v1.20.4 h1:TXwotxkShP1OqgKsbd+b8N5hrIHavSyLGvYnLGCZ7xc= +cloud.google.com/go/video v1.20.4/go.mod h1:LyUVjyW+Bwj7dh3UJnUGZfyqjEto9DnrvTe1f/+QrW0= +cloud.google.com/go/videointelligence v1.11.5 h1:mYaWH8uhUCXLJCN3gdXswKzRa2+lK0zN6/KsIubm6pE= +cloud.google.com/go/videointelligence v1.11.5/go.mod h1:/PkeQjpRponmOerPeJxNPuxvi12HlW7Em0lJO14FC3I= +cloud.google.com/go/vision v1.2.0 h1:/CsSTkbmO9HC8iQpxbK8ATms3OQaX3YQUeTMGCxlaK4= +cloud.google.com/go/vision/v2 v2.8.0 h1:W52z1b6LdGI66MVhE70g/NFty9zCYYcjdKuycqmlhtg= +cloud.google.com/go/vision/v2 v2.8.0/go.mod h1:ocqDiA2j97pvgogdyhoxiQp2ZkDCyr0HWpicywGGRhU= +cloud.google.com/go/vmmigration v1.7.5 h1:5v9RT2vWyuw3pK2ox0HQpkoftO7Q7/8591dTxxQc79g= +cloud.google.com/go/vmmigration v1.7.5/go.mod h1:pkvO6huVnVWzkFioxSghZxIGcsstDvYiVCxQ9ZH3eYI= +cloud.google.com/go/vmwareengine v1.1.1 h1:EGdDi9QbqThfZq3ILcDK5g+m9jTevc34AY5tACx5v7k= +cloud.google.com/go/vmwareengine v1.1.1/go.mod h1:nMpdsIVkUrSaX8UvmnBhzVzG7PPvNYc5BszcvIVudYs= +cloud.google.com/go/vpcaccess v1.7.5 h1:XyL6hTLtEM/eE4F1GEge8xUN9ZCkiVWn44K/YA7z1rQ= +cloud.google.com/go/vpcaccess v1.7.5/go.mod h1:slc5ZRvvjP78c2dnL7m4l4R9GwL3wDLcpIWz6P/ziig= +cloud.google.com/go/webrisk v1.9.5 h1:251MvGuC8wisNN7+jqu9DDDZAi38KiMXxOpA/EWy4dE= +cloud.google.com/go/webrisk v1.9.5/go.mod h1:aako0Fzep1Q714cPEM5E+mtYX8/jsfegAuS8aivxy3U= +cloud.google.com/go/websecurityscanner v1.6.5 h1:YqWZrZYabG88TZt7364XWRJGhxmxhony2ZUyZEYMF2k= +cloud.google.com/go/websecurityscanner v1.6.5/go.mod h1:QR+DWaxAz2pWooylsBF854/Ijvuoa3FCyS1zBa1rAVQ= +cloud.google.com/go/workflows v1.12.4 h1:uHNmUiatTbPQ4H1pabwfzpfEYD4BBnqDHqMm2IesOh4= +cloud.google.com/go/workflows v1.12.4/go.mod h1:yQ7HUqOkdJK4duVtMeBCAOPiN1ZF1E9pAMX51vpwB/w= +dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9 h1:VpgP7xuJadIUuKccphEpTJnWhS2jkQyMt6Y7pJCD7fY= +gioui.org v0.0.0-20210308172011-57750fc8a0a6 h1:K72hopUosKG3ntOPNG4OzzbuhxGuVf06fa2la1/H/Ho= +git.sr.ht/~sbinet/gg v0.3.1 h1:LNhjNn8DerC8f9DHLz6lS0YYul/b602DUxDgGkd/Aik= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= +github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0 h1:59MxjQVfjXsBpLy+dbd2/ELV5ofnUkUZBvWSC85sheA= +github.com/Azure/azure-sdk-for-go v56.3.0+incompatible h1:DmhwMrUIvpeoTDiWRDtNHqelNUd3Og8JCkrLHQK795c= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.2 h1:lneMk5qtUMulXa/eVxjVd+/bDYMEDIqYpLzLa2/EsNI= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.1 h1:T8quHYlUGyb/oqtSTwqlCr1ilJHrDv+ZtpSfo+hm1BU= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0 h1:jp0dGvZ7ZK0mgqnTSClMxa5xuRL7NZgHameVYF6BurY= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= +github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= +github.com/Azure/go-autorest/autorest v0.11.24 h1:1fIGgHKqVm54KIPT+q8Zmd1QlVsmHqeUGso5qm2BqqE= +github.com/Azure/go-autorest/autorest/adal v0.9.18 h1:kLnPsRjzZZUF3K5REu/Kc+qMQrvuza2bwSnNdhmzLfQ= +github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= +github.com/Azure/go-autorest/autorest/mocks v0.4.1 h1:K0laFcLE6VLTOwNgSxaGbUcLPuGXlNkbVvq4cW4nIHk= +github.com/Azure/go-autorest/autorest/to v0.4.0 h1:oXVqrxakqqV1UZdSazDOPOLvOIz+XA683u8EctwboHk= +github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg= +github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= +github.com/AzureAD/microsoft-authentication-library-for-go v0.8.1 h1:oPdPEZFSbl7oSPEAIPMPBMUmiL+mqgzBJwM/9qYcwNg= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802 h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc= +github.com/ClickHouse/clickhouse-go v1.5.4 h1:cKjXeYLNWVJIx2J1K6H2CqyRmfwVJVY1OV1coaaFcI0= +github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c h1:RGWPOewvKIROun94nF7v2cua9qP+thov/7M50KEoeSU= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/hcsshim v0.11.0 h1:7EFNIY4igHEXUdj1zXgAyU3fLc7QfOKHbkldRVTBdiM= +github.com/Microsoft/hcsshim/test v0.0.0-20210227013316-43a75bb4edd3 h1:4FA+QBaydEHlwxg0lMN3rhwoDaQy6LKhVWR4qvq4BuA= +github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I= +github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= +github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= +github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d h1:UrqY+r/OJnIp5u0s1SbQ8dVfLCZJsnvazdBP5hS4iRs= +github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d h1:G0m3OIz70MZUWq3EgK3CesDbo8upS2Vm9/P3FtgI+Jk= +github.com/agnivade/levenshtein v1.0.1 h1:3oJU7J3FGFmyhn8KHjmVaZCN5hxTr7GxgRue+sxIXdQ= +github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9 h1:7kQgkwGRoLzC9K0oyXdJo7nve/bynv/KwUsxbiTlzAM= +github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19 h1:iXUgAaqDcIUGbRoy2TdeofRG/j1zpGRSEmNK05T+bi8= +github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b h1:slYM766cy2nI3BwyRiyQj/Ud48djTMtMebDqepE95rw= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d h1:UQZhZ2O0vMHr2cI+DC1Mbh0TJxzA3RcLoMsFw+aXw7E= +github.com/alexflint/go-filemutex v1.2.0 h1:1v0TJPDtlhgpW4nJ+GvxCLSlUDC3+gW0CQQvlmfDR/s= +github.com/alibabacloud-go/darabonba-string v1.0.0 h1:y5tBmZJvvYKXFloQpC2kIODcm0mLG9NSsEz4P5UnYpI= +github.com/alibabacloud-go/endpoint-util v1.1.0 h1:r/4D3VSw888XGaeNpP994zDUaxdgTSHBbVfZlzf6b5Q= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ= +github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= +github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 h1:yL7+Jz0jTC6yykIK/Wh74gnTJnrGr5AyrNMXuA0gves= +github.com/apache/arrow/go/v10 v10.0.1 h1:n9dERvixoC/1JjDmBcs9FPaEryoANa2sCgVFo6ez9cI= +github.com/apache/arrow/go/v11 v11.0.0 h1:hqauxvFQxww+0mEU/2XHG6LT7eZternCZq+A5Yly2uM= +github.com/apache/arrow/go/v14 v14.0.2 h1:N8OkaJEOfI3mEZt07BIkvo4sC6XDbL+48MBPWO5IONw= +github.com/apache/arrow/go/v14 v14.0.2/go.mod h1:u3fgh3EdgN/YQ8cVQRguVW3R+seMybFg8QBQ5LU+eBY= +github.com/apache/thrift v0.16.0 h1:qEy6UW60iVOlUy+b9ZR0d5WzUWYGOo4HfopoyBaNmoY= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e h1:QEF07wC0T1rKkctt1RINW/+RMTVmiwxETico2l3gxJA= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6 h1:G1bPvciwNyF7IUmKXNt9Ak3m6u9DE1rF+RmtIkBpVdA= +github.com/armon/go-metrics v0.4.0 h1:yCQqn7dwca4ITXb+CbubHmedzaQYHhNhrEXLYUeEe8Q= +github.com/armon/go-metrics v0.4.0/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310 h1:BUAU3CGlLvorLI26FmByPp2eC2qla6E1Tw+scpcg/to= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= +github.com/aws/aws-sdk-go v1.43.16 h1:Y7wBby44f+tINqJjw5fLH3vA+gFq4uMITIKqditwM14= +github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= +github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= +github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= +github.com/bitly/go-simplejson v0.5.0 h1:6IH+V8/tVMab511d5bn4M7EwGXZf9Hj6i2xSwkNEM+Y= +github.com/bits-and-blooms/bitset v1.2.0 h1:Kn4yilvwNtMACtf1eYDlG8H77R07mZSPbMjLyS07ChA= +github.com/bkaradzic/go-lz4 v1.0.0 h1:RXc4wYsyz985CkXXeX04y4VnZFGG8Rd43pRaHsOXAKk= +github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c h1:+0HFd5KSZ/mm3JmhmrDukiId5iR6w4+BdFtfSy4yWIc= +github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= +github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= +github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY= +github.com/boombuler/barcode v1.0.1 h1:NDBbPmhS+EqABEs5Kg3n/5ZNjy73Pz7SIV+KCeqyXcs= +github.com/bshuster-repo/logrus-logstash-hook v1.0.0 h1:e+C0SB5R1pu//O4MQ3f9cFuPGoOVeF2fE4Og9otCc70= +github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= +github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd h1:rFt+Y/IK1aEZkEHchZRSq9OQbsSzIT/OrI8YFFmRIng= +github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b h1:otBG+dV+YK+Soembjv71DPz3uX/V/6MMlSyD9JBQ6kQ= +github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 h1:nvj0OLI3YqYXer/kZD8Ri1aaunCxIEsOst1BVJswV0o= +github.com/bytecodealliance/wasmtime-go v0.36.0 h1:B6thr7RMM9xQmouBtUqm1RpkJjuLS37m6nxX+iwsQSc= +github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= +github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= +github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054 h1:uH66TXeswKn5PW5zdZ39xEwfS9an067BirqA+P4QaLI= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/checkpoint-restore/go-criu/v4 v4.1.0 h1:WW2B2uxx9KWF6bGlHqhm8Okiafwwx7Y2kcpn8lCpjgo= +github.com/checkpoint-restore/go-criu/v5 v5.3.0 h1:wpFFOoomK3389ue2lAb0Boag6XPht5QYpipxmSNL4d8= +github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhDF8vLC+iwCD4WpbV1EBDSzWkJODFLams= +github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk= +github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= +github.com/cilium/ebpf v0.9.1 h1:64sn2K3UKw8NbP/blsixRpF3nXuyhz/VjRlRzvlBRu4= +github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= +github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 h1:F1EaeKL/ta07PY/k9Os/UFtwERei2/XzGemhpGnBKNg= +github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe h1:QQ3GSy+MqSHxm/d8nCtnAiZdYFd45cYZPs8vOOIYKfk= +github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa h1:jQCWAUqqlij9Pgj2i/PB79y4KOPYVyFYdROxgaCwdTQ= +github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa/go.mod h1:x/1Gn8zydmfq8dk6e9PdstVsDgu9RuyIIJqAaF//0IM= +github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5 h1:xD/lrqdvwsc+O2bjSSi3YqY73Ke3LAiSCx49aCesA0E= +github.com/cockroachdb/errors v1.2.4 h1:Lap807SXTH5tri2TivECb/4abUkMZC9zRoLarvcKDqs= +github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f h1:o/kfcElHqOiXqcou5a3rIlMc7oJbMQkeLk0VQJ7zgqY= +github.com/container-orchestrated-devices/container-device-interface v0.5.4 h1:PqQGqJqQttMP5oJ/qNGEg8JttlHqGY3xDbbcKb5T9E8= +github.com/containerd/aufs v1.0.0 h1:2oeJiwX5HstO7shSrPZjrohJZLzK36wvpdmzDRkL/LY= +github.com/containerd/btrfs v1.0.0 h1:osn1exbzdub9L5SouXO5swW4ea/xVdJZ3wokxN5GrnA= +github.com/containerd/btrfs/v2 v2.0.0 h1:FN4wsx7KQrYoLXN7uLP0vBV4oVWHOIKDRQ1G2Z0oL5M= +github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= +github.com/containerd/cgroups/v3 v3.0.2 h1:f5WFqIVSgo5IZmtTT3qVBo6TzI1ON6sycSBKkymb9L0= +github.com/containerd/console v1.0.3 h1:lIr7SlA5PxZyMV30bDW0MGbiOPXwc63yRuCP0ARubLw= +github.com/containerd/containerd v1.7.6 h1:oNAVsnhPoy4BTPQivLgTzI9Oleml9l/+eYIDYXRCYo8= +github.com/containerd/continuity v0.4.2 h1:v3y/4Yz5jwnvqPKJJ+7Wf93fyWoCB3F5EclWG023MDM= +github.com/containerd/fifo v1.1.0 h1:4I2mbh5stb1u6ycIABlBw9zgtlK8viPI9QkQNRQEEmY= +github.com/containerd/go-cni v1.1.9 h1:ORi7P1dYzCwVM6XPN4n3CbkuOx/NZ2DOqy+SHRdo9rU= +github.com/containerd/go-runc v1.0.0 h1:oU+lLv1ULm5taqgV/CJivypVODI4SUz1znWjv3nNYS0= +github.com/containerd/imgcrypt v1.1.7 h1:WSf9o9EQ0KGHiUx2ESFZ+PKf4nxK9BcvV/nJDX8RkB4= +github.com/containerd/nri v0.3.0 h1:2ZM4WImye1ypSnE7COjOvPAiLv84kaPILBDvb1tbDK8= +github.com/containerd/stargz-snapshotter/estargz v0.14.3 h1:OqlDCK3ZVUO6C3B/5FSkDwbkEETK84kQgEeFwDC+62k= +github.com/containerd/ttrpc v1.2.2 h1:9vqZr0pxwOF5koz6N0N3kJ0zDHokrcPxIR/ZR2YFtOs= +github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY= +github.com/containerd/typeurl/v2 v2.1.1 h1:3Q4Pt7i8nYwy2KmQWIw2+1hTvwTE/6w9FqcttATPO/4= +github.com/containerd/zfs v1.1.0 h1:n7OZ7jZumLIqNJqXrEc/paBM840mORnmGdJDmAmJZHM= +github.com/containernetworking/cni v1.1.2 h1:wtRGZVv7olUHMOqouPpn3cXJWpJgM6+EUl31EQbXALQ= +github.com/containernetworking/plugins v1.2.0 h1:SWgg3dQG1yzUo4d9iD8cwSVh1VqI+bP7mkPDoSfP9VU= +github.com/containers/ocicrypt v1.1.6 h1:uoG52u2e91RE4UqmBICZY8dNshgfvkdl3BW6jnxiFaI= +github.com/coreos/bbolt v1.3.2 h1:wZwiHHUieZCquLkDL0B8UhzreNWsPHooDAG3q34zk0s= +github.com/coreos/etcd v3.3.13+incompatible h1:8F3hqu9fGYLBifCmRCJsicFqDx/D68Rt3q1JMazcgBQ= +github.com/coreos/go-etcd v2.0.0+incompatible h1:bXhRBIXoTm9BYHS3gE0TtQuyNZyeEMux2sDi4oo5YOo= +github.com/coreos/go-iptables v0.6.0 h1:is9qnZMPYjLd8LYqmm/qlE+wwEgJIkTYdhV3rfZo4jk= +github.com/coreos/go-oidc v2.1.0+incompatible h1:sdJrfw8akMnCuUlaZU3tE/uYXFgfqom8DBE9so9EBsM= +github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e h1:Wf6HqHfScWJN9/ZjdUKyjop4mf3Qdd+1TvvltAvM3m8= +github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= +github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg= +github.com/cpuguy83/dockercfg v0.3.1 h1:/FpZ+JaygUR/lZP2NlFI2DVfrOEMAIKP5wWEJdoYe9E= +github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= +github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= +github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM= +github.com/creack/pty v1.1.9 h1:uDmaGzcdjhF4i/plgjmEsriH11Y0o7RKapEf/LDaM3w= +github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= +github.com/cyphar/filepath-securejoin v0.2.3 h1:YX6ebbZCZP7VkM3scTTokDgBL2TY741X51MTk3ycuNI= +github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c h1:Xo2rK1pzOm0jO6abTPIQwbAmqBIOj132otexc1mmzFc= +github.com/d2g/dhcp4client v1.0.0 h1:suYBsYZIkSlUMEz4TAYCczKf62IA2UWC+O8+KtdOhCo= +github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5 h1:+CpLbZIeUn94m02LdEKPcgErLJ347NUwxPKs5u8ieiY= +github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4 h1:itqmmf1PFpC4n5JW+j4BU7X4MTfVurhYRTjODoPb2Y8= +github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= +github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d h1:1iy2qD6JEhHKKhUOA9IWs7mjco7lnw2qx8FsRI2wirE= +github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba h1:p6poVbjHDkKa+wtC8frBMwQtT3BmqGYBjzMwJ63tuR4= +github.com/dgraph-io/badger/v3 v3.2103.2 h1:dpyM5eCJAtQCBcMCZcT4UBZchuTJgCywerHHgmxfxM8= +github.com/dgraph-io/ristretto v0.1.0 h1:Jv3CGQHp9OjuMBSne1485aDpUkTKEcUqF+jm/LuerPI= +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= +github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954 h1:RMLoZVzv4GliuWafOuPuQDKSm1SJph7uCRnnS61JAn4= +github.com/distribution/distribution/v3 v3.0.0-20220526142353-ffbd94cbe269 h1:hbCT8ZPPMqefiAWD2ZKjn7ypokIGViTvBBg/ExLSdCk= +github.com/dmarkham/enumer v1.5.8 h1:fIF11F9l5jyD++YYvxcSH5WgHfeaSGPaN/T4kOQ4qEM= +github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= +github.com/docker/cli v23.0.3+incompatible h1:Zcse1DuDqBdgI7OQDV8Go7b83xLgfhW1eza4HfEdxpY= +github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= +github.com/docker/docker v24.0.6+incompatible h1:hceabKCtUgDqPu+qm0NgsaXf28Ljf4/pWFL7xjWWDgE= +github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A= +github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= +github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8= +github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1 h1:ZClxb8laGDf5arXfYcAtECDFgAgHklGI8CxgjHnXKJ4= +github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96 h1:cenwrSVm+Z7QLSV/BsnenAOcDXdX4cMv4wP0B/5QbPg= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815 h1:bWDMxwH3px2JBh6AyO7hdCn/PkvCZXii8TGj7sbtEbQ= +github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153 h1:yUdfgN0XgIJw7foRItutHYUIhlcKzcSf5vDpdhQAKTc= +github.com/emicklei/go-restful v2.9.5+incompatible h1:spTtZBk5DYEvbxMVutUuTyh1Ao2r4iyvLdACqsl/Ljk= +github.com/emicklei/go-restful/v3 v3.10.1 h1:rc42Y5YTp7Am7CS630D7JmhRjq4UlEUuEKfrDac4bSQ= +github.com/envoyproxy/go-control-plane v0.12.0 h1:4X+VP1GHd1Mhj6IB5mMeGbLCleqxjletLK6K0rbxyZI= +github.com/envoyproxy/go-control-plane v0.12.0/go.mod h1:ZBTaoJ23lqITozF0M6G4/IragXCQKCnYbmlmtHvwRG0= +github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= +github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A= +github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= +github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/fogleman/gg v1.3.0 h1:/7zJX8F6AaYQc57WQCyN9cAIz+4bCJGO9B+dyW29am8= +github.com/form3tech-oss/jwt-go v3.2.3+incompatible h1:7ZaBxOI7TMoYBfyA3cQHErNNyAWIKUMIwqxEtgHOs5c= +github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= +github.com/foxcpp/go-mockdns v0.0.0-20210729171921-fb145fc6f897 h1:E52jfcE64UG42SwLmrW0QByONfGynWuzBvm86BoB9z8= +github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa h1:RDBNVkRviHZtvDvId8XSGPu3rmpmSe+wKRcEWNgsfWU= +github.com/fxamacker/cbor/v2 v2.4.0 h1:ri0ArlOR+5XunOP8CRUowT0pSJOwhW098ZCUyskZD88= +github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7 h1:LofdAjjjqCSXMwLGgOgnE+rdPuvX9DxCqaHwKy7i/ko= +github.com/getkin/kin-openapi v0.76.0 h1:j77zg3Ec+k+r+GA3d8hBoXpAc6KX9TbBPrwQGBIy2sY= +github.com/getsentry/raven-go v0.2.0 h1:no+xWJRb5ZI7eE8TWgIq1jLulQiIoLG0IfYxv5JYMGs= +github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= +github.com/go-fonts/dejavu v0.1.0 h1:JSajPXURYqpr+Cu8U9bt8K+XcACIHWqWrvWCKyeFmVQ= +github.com/go-fonts/latin-modern v0.2.0 h1:5/Tv1Ek/QCr20C6ZOz15vw3g7GELYL98KWr8Hgo+3vk= +github.com/go-fonts/liberation v0.2.0 h1:jAkAWJP4S+OsrPLZM4/eC9iW7CtHy+HBXrEwZXWo5VM= +github.com/go-fonts/stix v0.1.0 h1:UlZlgrvvmT/58o573ot7NFw0vZasZ5I6bcIft/oMdgg= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1 h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4 h1:WtGNWLvXpe6ZudgnXrq0barxBImvnnJoMEhXAzcbM0I= +github.com/go-ini/ini v1.66.6 h1:h6k2Bb0HWS/BXXHCXj4QHjxPmlIU4NK+7MuLp9SD+4k= +github.com/go-kit/kit v0.9.0 h1:wDJmvq38kDhkVxi50ni9ykkdUr1PKgqKOoi01fa0Mdk= +github.com/go-kit/log v0.1.0 h1:DGJh0Sm43HbOeYDNnVZFl8BvcYVvjD5bqYJvp0REbwQ= +github.com/go-kit/log v0.2.0 h1:7i2K3eKTos3Vc0enKCfnVcgHh2olr/MyfboYq7cAcFw= +github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81 h1:6zl3BbBhdnMkpSj2YY30qV3gDcVBGtFgVsV3+/i+mKQ= +github.com/go-logfmt/logfmt v0.5.0 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4= +github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/zapr v1.2.3 h1:a9vnzlIBPQBBkeaR9IuMUfmVOrQlkoC4YfPoFkX3T7A= +github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/go-pdf/fpdf v0.6.0 h1:MlgtGIfsdMEEQJr2le6b/HNr1ZlQwxyWr77r2aj2U/8= +github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= +github.com/gobuffalo/envy v1.7.0 h1:GlXgaiBkmrYMHco6t4j7SacKO4XUjvh5pwXh0f4uxXU= +github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= +github.com/gobuffalo/packd v0.3.0 h1:eMwymTkA1uXsqxS0Tpoop3Lc0u3kTfiMBE6nKtQU4g4= +github.com/gobuffalo/packd v0.3.0/go.mod h1:zC7QkmNkYVGKPw4tHpBQ+ml7W/3tIebgeo1b36chA3Q= +github.com/gobuffalo/packr v1.30.1 h1:hu1fuVR3fXEZR7rXNW3h8rqSML8EVAf6KNm0NKO/wKg= +github.com/gobuffalo/packr v1.30.1/go.mod h1:ljMyFO2EcrnzsHsN99cvbq055Y9OhRrIaviy289eRuk= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e h1:BWhy2j3IXJhjCbC68FptL43tDKIq8FladmaTs3Xs7Z8= +github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= +github.com/gofrs/uuid v4.0.0+incompatible h1:1SD/1F5pU8p29ybwgQSwpQk+mwdRrXCYuPhW6m+TnJw= +github.com/gogo/googleapis v1.4.0 h1:zgVt4UpGxcqVOw97aRGxT4svlcmdK35fynLNctY32zI= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= +github.com/golang-jwt/jwt/v4 v4.4.2 h1:rcc4lwaZgFMCZ5jxF9ABolDcIHdBytAFgqFPbSJQAYs= +github.com/golang-module/carbon v1.6.0 h1:OIQn0ClDmu4er9gQ6KIR64VkGFTySbEwtKTk8I+G80A= +github.com/golang-module/carbon v1.6.0/go.mod h1:M/TDTYPp3qWtW68u49dLDJOyGmls6L6BXdo/pyvkMaU= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g= +github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= +github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/gomodule/redigo v1.8.2 h1:H5XSIre1MB5NbPYFp+i1NBbb5qN1W8Y8YAQoAYbkm8k= +github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= +github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= +github.com/google/cel-go v0.12.6 h1:kjeKudqV0OygrAqA9fX6J55S8gj+Jre2tckIm5RoG4M= +github.com/google/flatbuffers v23.5.26+incompatible h1:M9dgRyhJemaM4Sw8+66GHBu8ioaQmyPLg1b8VwK5WJg= +github.com/google/flatbuffers v23.5.26+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= +github.com/google/go-containerregistry v0.14.0 h1:z58vMqHxuwvAsVwvKEkmVBz2TlgBgH5k6koEXBtlYkw= +github.com/google/go-pkcs11 v0.2.1-0.20230907215043-c6f79328ddf9 h1:OF1IPgv+F4NmqmJ98KTjdN97Vs1JxDPB3vbmYzV2dpk= +github.com/google/go-pkcs11 v0.2.1-0.20230907215043-c6f79328ddf9/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= +github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= +github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= +github.com/google/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA= +github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= +github.com/google/subcommands v1.0.1 h1:/eqq+otEXm5vhfBrbREPCSVQbvofip6kIz+mX5TUH7k= +github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= +github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= +github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= +github.com/googleapis/gnostic v0.5.5 h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw= +github.com/googleapis/go-type-adapters v1.0.0 h1:9XdMn+d/G57qq1s8dNc5IesGCXHf6V2HZ2JwRxfA2tA= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8 h1:tlyzajkF3030q6M8SvmJSemC9DTHL/xaMa18b65+JM4= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= +github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 h1:l5lAOZEym3oK3SQ2HBHWsJUfbNBiTXJDeW2QDxw9AQ0= +github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= +github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= +github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ= +github.com/gorilla/sessions v1.2.1 h1:DHd3rPN5lE3Ts3D8rKkQ8x/0kqfeNmBAaiSi+o7FsgI= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM= +github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3 h1:lLT7ZLSzGLI08vc9cpd+tYmNWjdKDqyr/2L+f6U12Fk= +github.com/hashicorp/consul/api v1.20.0 h1:9IHTjNVSZ7MIwjlW3N3a7iGiykCMDpxZu8jsxFJh0yc= +github.com/hashicorp/consul/api v1.20.0/go.mod h1:nR64eD44KQ59Of/ECwt2vUmIK2DKsDzAwTmwmLl8Wpo= +github.com/hashicorp/consul/sdk v0.1.1 h1:LnuDWGNsoajlhGyHJvuWW6FVqRl8JOTPqS6CPTsYjhY= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= +github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3 h1:zKjpN5BK/P5lMYrLmBHdBULWbJ0XpYR+7NGzqkZzoD4= +github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= +github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= +github.com/hashicorp/go-sockaddr v1.0.0 h1:GeH6tui99pF4NJgfnhp+L6+FfobzVW3Ah46sLo0ICXs= +github.com/hashicorp/go-syslog v1.0.0 h1:KaodqZuhUoZereWVIYmpUgZysurB1kBLX2j0MwMrUAE= +github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= +github.com/hashicorp/go.net v0.0.1 h1:sNCoNyDEvN1xa+X0baata4RdcpKwcMS6DH+xwfqPgjw= +github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= +github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= +github.com/hashicorp/mdns v1.0.0 h1:WhIgCr5a7AaVH6jPUwjtRuuE7/RDufnUvzIr48smyxs= +github.com/hashicorp/memberlist v0.1.3 h1:EmmoJme1matNzb+hMpDuR/0sbJSUisxyqBGG676r31M= +github.com/hashicorp/serf v0.10.1 h1:Z1H2J60yRKvfDYAOZLd2MU0ND4AH/WDz7xYHDWQsIPY= +github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= +github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639 h1:mV02weKRL81bEnm8A0HT1/CAelMQDBuQIfLw8n+d6xI= +github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/intel/goresctrl v0.3.0 h1:K2D3GOzihV7xSBedGxONSlaw/un1LZgWsc9IfqipN4c= +github.com/j-keck/arping v1.0.2 h1:hlLhuXgQkzIJTZuhMigvG/CuSkaspeaD9hRDk2zuiMI= +github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8= +github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= +github.com/jackc/pgconn v1.13.0 h1:3L1XMNV2Zvca/8BYhzcRFS70Lr0WlDg16Di6SFGAbys= +github.com/jackc/pgconn v1.13.0/go.mod h1:AnowpAqO4CMIIJNZl2VJp+KrkAZciAkhEl0W0JIobpI= +github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE= +github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8= +github.com/jackc/pgproto3/v2 v2.3.1 h1:nwj7qwf0S+Q7ISFfBndqeLwSwxs+4DPsbRFjECT1Y4Y= +github.com/jackc/pgproto3/v2 v2.3.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgtype v1.12.0 h1:Dlq8Qvcch7kiehm8wPGIW0W3KsCCHJnRacKW0UM8n5w= +github.com/jackc/pgtype v1.12.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= +github.com/jackc/pgx/v4 v4.17.2 h1:0Ut0rpeKwvIVbMQ1KbMBU4h6wxehBI535LK6Flheh8E= +github.com/jackc/pgx/v4 v4.17.2/go.mod h1:lcxIZN44yMIrWI78a5CpucdD14hX0SBDbNRvjDBItsw= +github.com/jackc/puddle/v2 v2.2.0 h1:RdcDk92EJBuBS55nQMMYFXTxwstHug4jkhT5pq8VxPk= +github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk= +github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8= +github.com/jcmturner/dnsutils/v2 v2.0.0 h1:lltnkeZGL0wILNvrNiVCR6Ro5PGU/SeBvVO/8c/iPbo= +github.com/jcmturner/gofork v1.0.0 h1:J7uCkflzTEhUZ64xqKnkDxq3kzc96ajM1Gli5ktUem8= +github.com/jcmturner/goidentity/v6 v6.0.1 h1:VKnZd2oEIMorCTsFBnJWbExfNN7yZr3EhJAxwOkZg6o= +github.com/jcmturner/gokrb5/v8 v8.4.2 h1:6ZIM6b/JJN0X8UM43ZOM6Z4SJzla+a/u7scXFJzodkA= +github.com/jcmturner/rpc/v2 v2.0.3 h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZY= +github.com/jhump/gopoet v0.1.0 h1:gYjOPnzHd2nzB37xYQZxj4EIQNpBrBskRqQQ3q4ZgSg= +github.com/jhump/gopoet v0.1.0/go.mod h1:me9yfT6IJSlOL3FCfrg+L6yzUEZ+5jW6WHt4Sk+UPUI= +github.com/jhump/goprotoc v0.5.0 h1:Y1UgUX+txUznfqcGdDef8ZOVlyQvnV0pKWZH08RmZuo= +github.com/jhump/goprotoc v0.5.0/go.mod h1:VrbvcYrQOrTi3i0Vf+m+oqQWk9l72mjkJCYo7UvLHRQ= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= +github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= +github.com/jmoiron/sqlx v1.2.0 h1:41Ip0zITnmWNR/vHV+S4m+VoUivnWY5E4OJfLZjCJMA= +github.com/joefitzgerald/rainbow-reporter v0.1.0 h1:AuMG652zjdzI0YCCnXAqATtRBpGXMcAnrajcaTrSeuo= +github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= +github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= +github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= +github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= +github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5 h1:PJr+ZMXIecYc1Ey2zucXdR73SMBtgjPgwa31099IMv0= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= +github.com/kisielk/errcheck v1.5.0 h1:e8esj/e4R+SAOwFwN+n3zr0nYeCyeweozKfO23MvHzY= +github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= +github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= +github.com/knz/go-libedit v1.10.1 h1:0pHpWtx9vcvC0xGZqEQlQdfSQs7WRlAjuPvk3fOZDCo= +github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8= +github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY= +github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw= +github.com/kr/pty v1.1.5 h1:hyz3dwM5QLc1Rfoz4FuWJQG5BN7tc6K1MndAUnGpQr4= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/lestrrat-go/backoff/v2 v2.0.8 h1:oNb5E5isby2kiro9AgdHLv5N5tint1AnDVVf2E2un5A= +github.com/lestrrat-go/blackmagic v1.0.0 h1:XzdxDbuQTz0RZZEmdU7cnQxUtFUzgCSPq8RCz4BxIi4= +github.com/lestrrat-go/httpcc v1.0.1 h1:ydWCStUeJLkpYyjLDHihupbn2tYmZ7m22BGkcvZZrIE= +github.com/lestrrat-go/iter v1.0.1 h1:q8faalr2dY6o8bV45uwrxq12bRa1ezKrB6oM9FUgN4A= +github.com/lestrrat-go/jwx v1.2.25 h1:tAx93jN2SdPvFn08fHNAhqFJazn5mBBOB8Zli0g0otA= +github.com/lestrrat-go/option v1.0.0 h1:WqAWL8kh8VcSoD6xjSH34/1m8yxluXQbDeKNfvFeEO4= +github.com/linuxkit/virtsock v0.0.0-20201010232012-f8cee7dfc7a3 h1:jUp75lepDg0phMUJBCmvaeFDldD2N3S1lBuPwUTszio= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= +github.com/lyft/protoc-gen-star v0.6.1 h1:erE0rdztuaDq3bpGifD95wfoPrSZc95nGA6tbiNYh6M= +github.com/lyft/protoc-gen-star/v2 v2.0.3 h1:/3+/2sWyXeMLzKd1bX+ixWKgEMsULrIivpDsuaF441o= +github.com/lyft/protoc-gen-star/v2 v2.0.3/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk= +github.com/marstr/guid v1.1.0 h1:/M4H/1G4avsieL6BbUwCOBzulmoeKVP5ux/3mQNnbyI= +github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= +github.com/mattn/go-shellwords v1.0.12 h1:M2zGm7EW6UQJvDeQxo4T51eKPurbeFbe8WtebGE2xrk= +github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y= +github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= +github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2 h1:g+4J5sZg6osfvEfkRZxJ1em0VT95/UOZgi/l7zi1/oE= +github.com/miekg/dns v1.1.43 h1:JKfpVSCB84vrAmHzyrsxB5NAr5kLoMXZArPSw7Qlgyg= +github.com/miekg/pkcs11 v1.1.1 h1:Ugu9pdy6vAYku5DEpVWVFPYnzV+bxB+iRdbuFSu7TvU= +github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 h1:AMFGa4R4MiIpspGNG7Z948v4n35fFGB3RR3G/ry4FWs= +github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 h1:+n/aFZefKZp7spd8DFdX7uMikMLXX4oubIzJF4kv/wI= +github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g= +github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible h1:aKW/4cBs+yK6gpqU3K/oIwk9Q/XICqd3zOX/UFuvqmk= +github.com/mistifyio/go-zfs/v3 v3.0.1 h1:YaoXgBePoMA12+S1u/ddkv+QqxcfiZK4prI6HPnkFiU= +github.com/mitchellh/cli v1.0.0 h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/gox v0.4.0 h1:lfGJxY7ToLJQjHHwi0EX6uYBdK78egf954SQl13PQJc= +github.com/mitchellh/iochan v1.0.0 h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY= +github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f h1:2+myh5ml7lgEU/51gbeLHfKGNfgEQQIWrlbdaOsidbQ= +github.com/mkevac/debugcharts v0.0.0-20191222103121-ae1c48aa8615 h1:/mD+ABZyXD39BzJI2XyRJlqdZG11gXFo0SSynL+OFeU= +github.com/mndrix/tap-go v0.0.0-20171203230836-629fa407e90b h1:Ga1nclDSe8gOw37MVLMhfu2QKWtD6gvtQ298zsKVh8g= +github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= +github.com/moby/patternmatcher v0.5.0 h1:YCZgJOeULcxLw1Q+sVR636pmS7sPEn1Qo2iAN6M7DBo= +github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= +github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78= +github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc= +github.com/moby/sys/signal v0.7.0 h1:25RW3d5TnQEoKvRbEKUGay6DCQ46IxAVTT9CUMgmsSI= +github.com/moby/sys/symlink v0.2.0 h1:tk1rOM+Ljp0nFmfOIBtlV3rTDlWOwFRhjEeAhZB0nZc= +github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= +github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5 h1:8Q0qkMVC/MmWkpIdlvZgcv2o2jrlF6zqVOh7W5YHdMA= +github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= +github.com/mrunalp/fileutils v0.5.0 h1:NKzVxiH7eSk+OQ4M+ZYW1K6h27RUV3MI6NUTsHhU6Z4= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= +github.com/ncw/swift v1.0.47 h1:4DQRPj35Y41WogBxyhOXlrI37nzGlyEcsforeudyYPQ= +github.com/networkplumbing/go-nft v0.2.0 h1:eKapmyVUt/3VGfhYaDos5yeprm+LPt881UeksmKKZHY= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= +github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= +github.com/onsi/ginkgo/v2 v2.6.1 h1:1xQPCjcqYw/J5LchOcp4/2q/jzJFjiAOc25chhnDw+Q= +github.com/open-policy-agent/opa v0.42.2 h1:qocVAKyjrqMjCqsU02S/gHyLr4AQQ9xMtuV1kKnnyhM= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/image-spec v1.1.0-rc4 h1:oOxKUJWnFC4YGHCCMNql1x4YaDfYBTS5Y4x/Cgeo1E0= +github.com/opencontainers/runc v1.1.5 h1:L44KXEpKmfWDcS02aeGm8QNTFXTo2D+8MYGDIJ/GDEs= +github.com/opencontainers/runtime-spec v1.1.0-rc.1 h1:wHa9jroFfKGQqFHj0I1fMRKLl0pfj+ynAqBxo3v6u9w= +github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626 h1:DmNGcqH3WDbV5k8OJ+esPWbqUOX5rMLR2PMvziDMJi0= +github.com/opencontainers/selinux v1.11.0 h1:+5Zbo97w3Lbmb3PeqQtpmTkMwsW5nRI3YaLpt7tQ7oU= +github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c h1:Lgl0gzECD8GnQ5QCWA8o6BtfL6mDH5rQgM4/fX3avOs= +github.com/pascaldekloe/name v1.0.1 h1:9lnXOHeqeHHnWLbKfH6X98+4+ETVqFqxN09UXSjcMb0= +github.com/paulmach/protoscan v0.2.1 h1:rM0FpcTjUMvPUNk2BhPJrreDKetq43ChnL+x1sRg8O8= +github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= +github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= +github.com/peterh/liner v0.0.0-20170211195444-bf27d3ba8e1d h1:zapSxdmZYY6vJWXFKLQ+MkI+agc+HQyfrCGowDSHiKs= +github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 h1:Ii+DKncOVM8Cu1Hc+ETb5K+23HdAMvESYE3ZJ5b5cMI= +github.com/phpdave11/gofpdf v1.4.2 h1:KPKiIbfwbvC/wOncwhrpRdXVj2CZTCFlw4wnoyjtHfQ= +github.com/phpdave11/gofpdi v1.0.13 h1:o61duiW8M9sMlkVXWlvP92sZJtGKENvW3VExs6dZukQ= +github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I= +github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A= +github.com/pkg/sftp v1.13.1 h1:I2qBYMChEhIjOgazfJmV3/mZM256btk6wkCDRmW7JYs= +github.com/posener/complete v1.1.1 h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= +github.com/pquerna/cachecontrol v0.1.0 h1:yJMy84ti9h/+OEWa752kBTKv4XC30OtVVHYv/8cTqKc= +github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= +github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= +github.com/prometheus/tsdb v0.7.1 h1:YZcsG11NqnK4czYLrWd9mpEuAJIHVQLwdrleYfszMAA= +github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0 h1:MkV+77GLUNo5oJ0jf870itWm3D0Sjh7+Za9gazKc5LQ= +github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s= +github.com/russross/blackfriday v1.6.0 h1:KqfZb0pUVN2lYqZUYRddxF4OR8ZMURnJIG5Y3VRLtww= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245 h1:K1Xf3bKttbF+koVGaX5xngRIZ5bVjbmPnaxE/dR08uY= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f h1:UFr9zpz4xgTnIE5yIMtWAMngCdZ9p/+q6lTbgelo80M= +github.com/safchain/ethtool v0.2.0 h1:dILxMBqDnQfX192cCAPjZr9v2IgVXeElHPy435Z/IdE= +github.com/sagikazarmark/crypt v0.10.0 h1:96E1qrToLBU6fGzo+PRRz7KGOc9FkYFiPnR3/zf8Smg= +github.com/sagikazarmark/crypt v0.10.0/go.mod h1:gwTNHQVoOS3xp9Xvz5LLR+1AauC5M6880z5NWzdhOyQ= +github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= +github.com/sclevine/agouti v3.0.0+incompatible h1:8IBJS6PWz3uTlMP3YBIR5f+KAldcGuOeFkFbUWfBgK4= +github.com/sclevine/spec v1.2.0 h1:1Jwdf9jSfDl9NVmt8ndHqbTZ7XCCPbh1jI3hkDBHVYA= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= +github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646 h1:RpforrEYXWkmGwJHIGnLZ3tTWStkjVVstwzNGqxX2Ds= +github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= +github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI= +github.com/shirou/gopsutil/v3 v3.23.8 h1:xnATPiybo6GgdRoC4YoGnxXZFRc3dqQTGi73oLvvBrE= +github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4 h1:udFKJ0aHUL60LboW/A+DfgoHVedieIzIXE8uylPue0U= +github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= +github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= +github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= +github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I= +github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= +github.com/smartystreets/assertions v1.1.0 h1:MkTeG1DMwsrdH7QtLXy5W+fUxWq+vmb6cLmyJ7aRtF0= +github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= +github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= +github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= +github.com/spf13/afero v1.10.0 h1:EaGW2JJh15aKOejeuJ+wpFSHnbd7GE6Wvp3TsNhb6LY= +github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= +github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= +github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980 h1:lIOOHPEbXzO3vnmx2gok1Tfs31Q8GQqKLc8vVqyQq/I= +github.com/stoewer/go-strcase v1.2.0 h1:Z2iHWqGXH00XYgqDmNgQbIBxf3wrNq0F3feEy0ainaU= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 h1:kdXcSzyDtseVEc4yCz2qF8ZrQvIDBJLl4S1c3GCXmoI= +github.com/tchap/go-patricia v2.2.6+incompatible h1:JvoDL7JSoIP2HDE8AbDH3zC8QBPxmzYe32HHy5yQ+Ck= +github.com/tchap/go-patricia/v2 v2.3.1 h1:6rQp39lgIYZ+MHmdEq4xzuk1t7OdC35z/xm0BGhTkes= +github.com/testcontainers/testcontainers-go v0.25.0 h1:erH6cQjsaJrH+rJDU9qIf89KFdhK0Bft0aEZHlYC3Vs= +github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA= +github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c h1:u6SKchux2yDvFQnDHS3lPnIRmfVJ5Sxy3ao2SIdysLQ= +github.com/ugorji/go v1.2.7 h1:qYhyWUUd6WbiM+C6JZAUkIJt/1WrjzNHY9+KCIjVqTo= +github.com/urfave/cli v1.22.12 h1:igJgVw1JdKH+trcLWLeLwZjU9fEfPesQ+9/e4MQ44S8= +github.com/urfave/cli/v2 v2.3.0 h1:qph92Y649prgesehzOrQjdWyxFOp/QVM+6imKHad91M= +github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= +github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8= +github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= +github.com/vbatts/tar-split v0.11.2 h1:Via6XqJr0hceW4wff3QRzD5gAk/tatMw/4ZA7cTlIME= +github.com/vektah/gqlparser/v2 v2.4.5 h1:C02NsyEsL4TXJB7ndonqTfuQOL4XPIu0aAWugdmTgmc= +github.com/veraison/go-cose v1.0.0-rc.1 h1:4qA7dbFJGvt7gcqv5MCIyCQvN+NpHFPkW7do3EeDLb8= +github.com/vishvananda/netlink v1.2.1-beta.2 h1:Llsql0lnQEbHj0I1OuKyp8otXp0r3q0mPkuhwHfStVs= +github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f h1:p4VB7kIXpOQvVn1ZaTIVp+3vuYAXFe3OJEvjbUYJLaA= +github.com/willf/bitset v1.1.11 h1:N7Z7E9UvjW+sGsEl7k/SJrvY2reP1A07MrGuCjIOjRE= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= +github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77 h1:ESFSdwYZvkeru3RtdrYueztKhOBCSAAzS4Gf+k0tEow= +github.com/yashtewari/glob-intersection v0.1.0 h1:6gJvMYQlTDOL3dMsPF6J0+26vwX9MB8/1q3uAdhmTrg= +github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= +github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= +github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43 h1:+lm10QQTNSBd8DVTNGHx7o/IKu9HYDvLMffDhbyLccI= +github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50 h1:hlE8//ciYMztlGpl/VA+Zm1AcTPHYkHJPbHqE6WJUXE= +github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f h1:ERexzlUfuTvpE74urLSbIQW0Z/6hF9t8U4NsJLaioAY= +github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= +github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= +go.einride.tech/aip v0.66.0 h1:XfV+NQX6L7EOYK11yoHHFtndeaWh3KbD9/cN/6iWEt8= +go.einride.tech/aip v0.66.0/go.mod h1:qAhMsfT7plxBX+Oy7Huol6YUvZ0ZzdUz26yZsQwfl1M= +go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ= +go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489 h1:1JFLBqwIgdyHN1ZtgjTBwO+blA6gVOmZurpiMEsETKo= +go.etcd.io/etcd/api/v3 v3.5.9 h1:4wSsluwyTbGGmyjJktOf3wFQoTBIURXHnq9n/G/JQHs= +go.etcd.io/etcd/api/v3 v3.5.9/go.mod h1:uyAal843mC8uUVSLWz6eHa/d971iDGnCRpmKd2Z+X8k= +go.etcd.io/etcd/client/pkg/v3 v3.5.9 h1:oidDC4+YEuSIQbsR94rY9gur91UPL6DnxDCIYd2IGsE= +go.etcd.io/etcd/client/pkg/v3 v3.5.9/go.mod h1:y+CzeSmkMpWN2Jyu1npecjB9BBnABxGM4pN8cGuJeL4= +go.etcd.io/etcd/client/v2 v2.305.7 h1:AELPkjNR3/igjbO7CjyF1fPuVPjrblliiKj+Y6xSGOU= +go.etcd.io/etcd/client/v2 v2.305.7/go.mod h1:GQGT5Z3TBuAQGvgPfhR7VPySu/SudxmEkRq9BgzFU6s= +go.etcd.io/etcd/client/v3 v3.5.9 h1:r5xghnU7CwbUxD/fbUtRyJGaYNfDun8sp/gTr1hew6E= +go.etcd.io/etcd/client/v3 v3.5.9/go.mod h1:i/Eo5LrZ5IKqpbtpPDuaUnDOUv471oDg8cjQaUr2MbA= +go.etcd.io/etcd/pkg/v3 v3.5.5 h1:Ablg7T7OkR+AeeeU32kdVhw/AGDsitkKPl7aW73ssjU= +go.etcd.io/etcd/raft/v3 v3.5.5 h1:Ibz6XyZ60OYyRopu73lLM/P+qco3YtlZMOhnXNS051I= +go.etcd.io/etcd/server/v3 v3.5.5 h1:jNjYm/9s+f9A9r6+SC4RvNaz6AqixpOvhrFdT0PvIj0= +go.etcd.io/gofail v0.1.0 h1:XItAMIhOojXFQMgrxjnd2EIIHun/d5qL0Pf7FzVTkFg= +go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1 h1:A/5uWzF44DlIgdm/PQFwfMkW0JX+cIcQi/SwLAmZP5M= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opentelemetry.io/contrib v0.20.0 h1:ubFQUn0VCZ0gPwIoJfBJVpeBlyRMxu8Mm/huKWYd9p0= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1/go.mod h1:4UoMYEZOC0yN/sPGH76KPkkU7zgiEWYWL9vwmbnTJPE= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 h1:UNQQKPfTDe1J81ViolILjTKPr9WetKW6uei2hFgJmFs= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0/go.mod h1:r9vWsPS/3AQItv3OSlEJ/E4mbrhUbbw18meOjArPtKQ= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 h1:sv9kVfal0MK0wBMCOGr+HeJm9v803BkJxGrk2au7j08= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw= +go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= +go.opentelemetry.io/otel v1.22.0 h1:xS7Ku+7yTFvDfDraDIJVpw7XPyuHlB9MCiqqX5mcJ6Y= +go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= +go.opentelemetry.io/otel/exporters/otlp v0.20.0 h1:PTNgq9MRmQqqJY0REVbZFvwkYOA85vbdQU/nVfxDyqg= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0 h1:/fXHZHGvro6MVqV34fJzDhi7sHGpX3Ej/Qjmfn003ho= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0 h1:TKf2uAs2ueguzLaxOCBXNpHxfO/aC7PAdDsSH0IbeRQ= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0 h1:ap+y8RXX3Mu9apKVtOkM6WSFESLM8K3wNQyOU8sWHcc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.14.0 h1:3jAYbRHQAqzLjd9I4tzxwJ8Pk/N6AqBcF6m1ZHrxG94= +go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= +go.opentelemetry.io/otel/metric v1.22.0 h1:lypMQnGyJYeuYPhOM/bgjbFM6WE44W1/T45er4d8Hhg= +go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY= +go.opentelemetry.io/otel/oteltest v0.20.0 h1:HiITxCawalo5vQzdHfKeZurV8x7ljcqAgiWzF6Vaeaw= +go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8= +go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= +go.opentelemetry.io/otel/sdk/export/metric v0.20.0 h1:c5VRjxCXdQlx1HjzwGdQHzZaVI82b5EbBgOu2ljD92g= +go.opentelemetry.io/otel/sdk/metric v0.20.0 h1:7ao1wpzHRVKf0OQ7GIxiQJA6X7DLX9o14gmVon7mMK8= +go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= +go.opentelemetry.io/otel/trace v1.22.0 h1:Hg6pPujv0XG9QaVbGOBVHunyuLcCC3jN7WEhPx83XD0= +go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo= +go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= +go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= +go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= +go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/automaxprocs v1.5.1 h1:e1YG66Lrk73dn4qhg8WFSvhF0JuFQF0ERIp4rpuV8Qk= +golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6 h1:QE6XYQK6naiK1EPAe1g/ILLxN5RBoH5xkJk3CqlMI/Y= +golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea h1:vLCWI/yYrdEHyN2JzIzPO3aaQJHQdp89IZBA/+azVC4= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b h1:+qEpEAPhDZ1o0x3tHzZTQDArnOixOzGD9HUJfcg0mb4= +golang.org/x/image v0.0.0-20220302094943-723b81ca9867 h1:TcHcE0vrmgzNH1v3ppjcMGbhG5+9fMuvOmUYwNEF4q4= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= +golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0= +golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2 h1:IRJeR9r1pYWsHKTRe/IInb7lYvbBVIqOgsX/u0mbOWY= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.24.0 h1:Mh5cbb+Zk2hqqXNO7S1iTjEphVL+jb8ZWaqh/g+JWkM= +golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= +gonum.org/v1/gonum v0.11.0 h1:f1IJhK4Km5tBJmaiJXtk/PkL4cdVX6J+tGiM187uT5E= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0 h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc= +gonum.org/v1/plot v0.10.1 h1:dnifSs43YJuNMDzB7v8wV64O4ABBHReuAVAoBxqBqS4= +google.golang.org/api v0.157.0/go.mod h1:+z4v4ufbZ1WEpld6yMGHyggs+PmAHiaLNj5ytP3N01g= +google.golang.org/api v0.160.0/go.mod h1:0mu0TpK33qnydLvWqbImq2b1eQ5FHRSDCBzAxX9ZHyw= +google.golang.org/api v0.162.0 h1:Vhs54HkaEpkMBdgGdOT2P6F0csGG/vxDS0hWHJzmmps= +google.golang.org/api v0.162.0/go.mod h1:6SulDkfoBIg4NFmCuZ39XeeAgSHCPecfSUuDyYlAHs0= +google.golang.org/cloud v0.0.0-20151119220103-975617b05ea8 h1:Cpp2P6TPjujNoC5M2KHY6g7wfyLYfIWRZaSdIKfDasA= +google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:+Rvu7ElI+aLzyDQhpHMFMMltsD6m7nqpuWDd2CwJw3k= +google.golang.org/genproto v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= +google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:mqHbVIp48Muh7Ywss/AD6I5kNVKZMmAa/QEW58Gxp2s= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= +google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= +google.golang.org/genproto/googleapis/api v0.0.0-20240122161410-6c6643bf1457/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA= +google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA= +google.golang.org/genproto/googleapis/api v0.0.0-20240205150955-31a09d347014/go.mod h1:rbHMSEDyoYX62nRVLOCc4Qt1HbsdytAYoVwgjiOhF3I= +google.golang.org/genproto/googleapis/api v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:PVreiBMirk8ypES6aw9d4p6iiBNSIfZEBqr3UGoAi2E= +google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de h1:jFNzHPIeuzhdRwVhbZdiym9q0ory/xY3sA+v2wPg8I0= +google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:5iCWqnniDlqZHrd3neWVTOwvh/v6s3232omMecelax8= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20240125205218-1f4bbc51befe h1:weYsP+dNijSQVoLAb5bpUos3ciBpNU/NEVlHFKrk8pg= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:SCz6T5xjNXM4QFPRwxHcfChp7V+9DcXR3ay2TkHR8Tg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231002182017-d307bd883b97/go.mod h1:v7nGkzlmW8P3n/bKmWBn2WpBjpOEx8Q6gMueudAmKfY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:daQN87bsDqDoe316QbbvX60nMoJQa4r6Ds0ZuoAe5yA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:YUWgXUFRPfoYK1IHMuxH5K6nPEXSCzIMljnQ59lLRCk= +google.golang.org/grpc v1.58.3/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= +google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= +google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= +google.golang.org/grpc v1.61.0/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= +google.golang.org/grpc v1.61.1/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0 h1:M1YKkFIboKNieVO5DLUEVzQfGwJD30Nv2jfUgzb5UcE= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +gopkg.in/airbrake/gobrake.v2 v2.0.9 h1:7z2uVWwn7oVeeugY1DtlPAy5H+KYgB1KeKTnqjNatLo= +gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= +gopkg.in/cheggaaa/pb.v1 v1.0.25 h1:Ev7yu1/f6+d+b3pi5vPdRPc6nNtP1umSfcWiEfRqv6I= +gopkg.in/errgo.v2 v2.1.0 h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8= +gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= +gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2 h1:OAj3g0cR6Dx/R07QgQe8wkA9RNjB2u4i700xBkIT4e0= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= +gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI= +gopkg.in/square/go-jose.v2 v2.5.1 h1:7odma5RETjNHWJnR32wx8t+Io4djHE1PqxCFx3iiZ2w= +gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= +gotest.tools/v3 v3.5.0 h1:Ljk6PdHdOhAb5aDMWXjDLMMhph+BpztA4v1QdqEW2eY= +honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8= +honnef.co/go/tools v0.1.3 h1:qTakTkI6ni6LFD5sBwwsdSO+AQqbSIxOauHTTQKZ/7o= +k8s.io/api v0.26.2 h1:dM3cinp3PGB6asOySalOZxEG4CZ0IAdJsrYZXE/ovGQ= +k8s.io/apimachinery v0.26.2 h1:da1u3D5wfR5u2RpLhE/ZtZS2P7QvDgLZTi9wrNZl/tQ= +k8s.io/apiserver v0.26.2 h1:Pk8lmX4G14hYqJd1poHGC08G03nIHVqdJMR0SD3IH3o= +k8s.io/client-go v0.26.2 h1:s1WkVujHX3kTp4Zn4yGNFK+dlDXy1bAAkIl+cFAiuYI= +k8s.io/code-generator v0.19.7 h1:kM/68Y26Z/u//TFc1ggVVcg62te8A2yQh57jBfD0FWQ= +k8s.io/component-base v0.26.2 h1:IfWgCGUDzrD6wLLgXEstJKYZKAFS2kO+rBRi0p3LqcI= +k8s.io/cri-api v0.27.1 h1:KWO+U8MfI9drXB/P4oU9VchaWYOlwDglJZVHWMpTT3Q= +k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c h1:GohjlNKauSai7gN4wsJkeZ3WAJx4Sh+oT/b5IYn5suA= +k8s.io/klog/v2 v2.90.1 h1:m4bYOKall2MmOiRaR1J+We67Do7vm9KiQVlT96lnHUw= +k8s.io/kms v0.26.2 h1:GM1gg3tFK3OUU/QQFi93yGjG3lJT8s8l3Wkn2+VxBLM= +k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 h1:+70TFaan3hfJzs+7VK2o+OGxg8HsuBr/5f6tVAjDu6E= +k8s.io/kubernetes v1.13.0 h1:qTfB+u5M92k2fCCCVP2iuhgwwSOv1EkAkvQY1tQODD8= +k8s.io/utils v0.0.0-20230220204549-a5ecb0141aa5 h1:kmDqav+P+/5e1i9tFfHq1qcF3sOrDp+YEkVDAHu7Jwk= +lukechampine.com/uint128 v1.2.0 h1:mBi/5l91vocEN8otkC5bDLhi2KdCticRiwbdB0O+rjI= +modernc.org/cc/v3 v3.40.0 h1:P3g79IUS/93SYhtoeaHW+kRCIrYaxJ27MFPv+7kaTOw= +modernc.org/cc/v3 v3.40.0/go.mod h1:/bTg4dnWkSXowUO6ssQKnOV0yMVxDYNIsIrzqTFDGH0= +modernc.org/ccgo/v3 v3.16.13 h1:Mkgdzl46i5F/CNR/Kj80Ri59hC8TKAhZrYSaqvkwzUw= +modernc.org/ccgo/v3 v3.16.13/go.mod h1:2Quk+5YgpImhPjv2Qsob1DnZ/4som1lJTodubIcoUkY= +modernc.org/ccorpus v1.11.6 h1:J16RXiiqiCgua6+ZvQot4yUuUy8zxgqbqEEUuGPlISk= +modernc.org/httpfs v1.0.6 h1:AAgIpFZRXuYnkjftxTAZwMIiwEqAfk8aVB2/oA6nAeM= +modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4= +modernc.org/strutil v1.1.3 h1:fNMm+oJklMGYfU9Ylcywl0CO5O6nTfaowNsh2wpPjzY= +modernc.org/tcl v1.15.2 h1:C4ybAYCGJw968e+Me18oW55kD/FexcHbqH2xak1ROSY= +modernc.org/tcl v1.15.2/go.mod h1:3+k/ZaEbKrC8ePv8zJWPtBSW0V7Gg9g8rkmhI1Kfs3c= +modernc.org/token v1.0.1 h1:A3qvTqOwexpfZZeyI0FeGPDlSWX5pjZu9hF4lU+EKWg= +modernc.org/token v1.0.1/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= +modernc.org/z v1.7.3 h1:zDJf6iHjrnB+WRD88stbXokugjyc0/pB91ri1gO6LZY= +modernc.org/z v1.7.3/go.mod h1:Ipv4tsdxZRbQyLq9Q1M6gdbkxYzdlrciF2Hi/lS7nWE= +nullprogram.com/x/optparse v1.0.0 h1:xGFgVi5ZaWOnYdac2foDT3vg0ZZC9ErXFV57mr4OHrI= +oras.land/oras-go v1.2.0 h1:yoKosVIbsPoFMqAIFHTnrmOuafHal+J/r+I5bdbVWu4= +rsc.io/binaryregexp v0.2.0 h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE= +rsc.io/pdf v0.1.1 h1:k1MczvYDUvJBe93bYd7wrZLLUEcLZAuF824/I4e5Xr4= +rsc.io/quote/v3 v3.1.0 h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY= +rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.35 h1:+xBL5uTc+BkPBwmMi3vYfUJjq+N3K+H6PXeETwf5cPI= +sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 h1:iXTIw73aPyC+oRdyqqvVJuloN1p0AC/kzH07hu3NE+k= +sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= diff --git a/gowatch.yml b/gowatch.yml new file mode 100644 index 0000000..f78546f --- /dev/null +++ b/gowatch.yml @@ -0,0 +1,27 @@ +# gowatch.yml 配置示例 + +# 当前目录执行下生成的可执行文件的名字,默认是当前目录名 +appname: "ev" +# 是否对当前目录下相关依赖执行 ‘go install’命令,将会执行安装依赖 +go_install: true +# 需要监听的文件名后缀,默认只有'.go'文件 +watch_exts: + - .go + - .yml +# 在执行命令时,需要增加的其他参数 +cmd_args: + - -configFile=config_dev/config_dev.yml +# 需要增加环境变量,默认已加载当前环境变量 +#envs: +# - a=b +# 是否监听 ‘vendor’ 文件夹下的文件改变 +vendor_watch: false +# 不需要监听的目录名字 +excluded_paths: + - resources + - config + - config_dev +# build tags +build_tags: "" +# main 包路径,也可以是单个文件,多个文件使用逗号分隔 +build_pkg: "cmd/ev/main.go" diff --git a/pkg/api/base_controller.go b/pkg/api/base_controller.go new file mode 100644 index 0000000..1195979 --- /dev/null +++ b/pkg/api/base_controller.go @@ -0,0 +1,30 @@ +package api + +import ( + "bytes" + "github.com/1340691923/ElasticView/pkg/infrastructure/request" + "github.com/1340691923/ElasticView/pkg/infrastructure/response" + "github.com/gin-gonic/gin" + "io/ioutil" +) + +// 父控制器结构体 +type BaseController struct { + *request.Request + *response.Response +} + +func NewBaseController(request *request.Request, response *response.Response) *BaseController { + return &BaseController{Request: request, Response: response} +} + +func (this *BaseController) getPostBody(ctx *gin.Context) []byte { + body, _ := ctx.GetRawData() + ctx.Request.Body = ioutil.NopCloser(bytes.NewBuffer(body)) + return body +} + +func (this *BaseController) GetRoleCache(ctx *gin.Context) []int { + roles, _ := ctx.Get("ev_roles") + return roles.([]int) +} diff --git a/pkg/api/es_controller.go b/pkg/api/es_controller.go new file mode 100644 index 0000000..4a51652 --- /dev/null +++ b/pkg/api/es_controller.go @@ -0,0 +1,176 @@ +package api + +import ( + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/dto" + "github.com/1340691923/ElasticView/pkg/infrastructure/dto/common" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/factory" + "github.com/1340691923/ElasticView/pkg/infrastructure/jwt_svr" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/response" + "github.com/1340691923/eve-plugin-sdk-go/ev_api/proto" + "github.com/pkg/errors" + "github.com/spf13/cast" + + "github.com/1340691923/ElasticView/pkg/services/es" + "github.com/1340691923/ElasticView/pkg/services/es_service" + + "github.com/gin-gonic/gin" +) + +// Es 基本操作 +type EsController struct { + *BaseController + log *logger.AppLogger + esClientService *es.EsClientService + esService *es_service.EsService + jwtSvr *jwt_svr.Jwt + cfg *config.Config +} + +func NewEsController(baseController *BaseController, log *logger.AppLogger, esClientService *es.EsClientService, esService *es_service.EsService, jwtSvr *jwt_svr.Jwt, cfg *config.Config) *EsController { + return &EsController{BaseController: baseController, log: log, esClientService: esClientService, esService: esService, jwtSvr: jwtSvr, cfg: cfg} +} + +// @Summary 测试es连接 +// @Tags ES +// @Accept application/json +// @Produce application/json +// @Param X-Token header string false "用户令牌" +// @Param object body model.EsConnect false "查询参数" +// @Success 0 {object} response.ResponseData +// @Router /api/es/PingAction [post] +func (this *EsController) PingAction(ctx *gin.Context) { + esConnect := new(dto.EsConnect) + err := ctx.Bind(esConnect) + if err != nil { + this.Error(ctx, err) + return + } + + userInfo, _ := this.jwtSvr.ParseToken(this.GetToken(ctx)) + + esConnect.Header = append(esConnect.Header, dto.HeaderKv{ + Key: "ev_user_id", + Value: cast.ToString(userInfo.UserID), + }) + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, esConnect.Id)) + if err != nil { + this.Error(ctx, err) + return + } + + esSvr := this.esService + res, err := esSvr.Ping(ctx, esI) + if err != nil { + this.Error(ctx, err) + return + } + + this.Success(ctx, response.OperateSuccess, res) +} + +// @Summary 得到所有的索引数量 +// @Tags es索引 +// @Accept application/json +// @Produce application/json +// @Param X-Token header string false "用户令牌" +// @Param object body dto.EsConnectID false "查询参数" +// @Success 0 {object} int +// @Router /api/es_index/IndexsCountAction [post] +func (this *EsController) IndexsCountAction(ctx *gin.Context) { + esConnectID := new(common.EsConnectID) + err := ctx.Bind(&esConnectID) + if err != nil { + this.Error(ctx, err) + return + } + + userInfo, _ := this.jwtSvr.ParseToken(this.GetToken(ctx)) + + esConnect, err := this.esClientService.GetEsClientByID(ctx, + esConnectID.EsConnectID, userInfo.UserID) + + if err != nil { + this.Error(ctx, err) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, esConnectID.EsConnectID)) + if err != nil { + this.Error(ctx, err) + return + } + + res, err := this.esService.EsIndexCount(ctx, esI) + if err != nil { + this.Error(ctx, err) + return + } + this.Success(ctx, response.SearchSuccess, res) +} + +func (this *EsController) CatAction(ctx *gin.Context) { + + esCat := new(dto.EsCat) + err := ctx.Bind(&esCat) + if err != nil { + this.Error(ctx, err) + return + } + + userInfo, _ := this.jwtSvr.ParseToken(this.GetToken(ctx)) + + esConnect, err := this.esClientService.GetEsClientByID(ctx, esCat.EsConnect, userInfo.UserID) + + if err != nil { + this.Error(ctx, err) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, esCat.EsConnect)) + if err != nil { + this.Error(ctx, err) + return + } + + catSvr := this.esService + + var data *proto.Response + + switch esCat.Cat { + case "CatHealth": + data, err = catSvr.CatHealth(ctx, esI) + case "CatShards": + data, err = catSvr.CatShards(ctx, esI) + case "CatCount": + data, err = catSvr.CatCount(ctx, esI) + case "CatAllocation": + data, err = catSvr.CatAllocation(ctx, esI) + case "CatAliases": + data, err = catSvr.CatAliases(ctx, esI) + case "CatIndices": + data, err = catSvr.CatIndices(ctx, esI, []string{"store.size:desc"}, esCat.IndexBytesFormat) + case "CatSegments": + data, err = catSvr.IndicesSegmentsRequest(ctx, esI) + case "CatStats": + data, err = catSvr.ClusterStats(ctx, esI) + case "Node": + data, err = catSvr.CatNodes(ctx, esI) + default: + err = errors.New("未知类型") + } + + if err != nil { + this.Error(ctx, errors.WithStack(err)) + return + } + + if data.StatusErr() != nil { + this.Error(ctx, errors.WithStack(data.StatusErr())) + return + } + + this.Success(ctx, response.SearchSuccess, data.JsonRawMessage()) +} diff --git a/pkg/api/es_link_controller.go b/pkg/api/es_link_controller.go new file mode 100644 index 0000000..5198a56 --- /dev/null +++ b/pkg/api/es_link_controller.go @@ -0,0 +1,483 @@ +package api + +import ( + "github.com/1340691923/ElasticView/pkg/infrastructure/dto" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/cache" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/factory" + "github.com/1340691923/ElasticView/pkg/infrastructure/jwt_svr" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/model" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore" + "github.com/1340691923/ElasticView/pkg/services/cache_service" + "github.com/1340691923/ElasticView/pkg/services/es" + "github.com/1340691923/ElasticView/pkg/services/es_link_service" + "github.com/1340691923/ElasticView/pkg/util" + "github.com/gin-gonic/gin" + "github.com/goccy/go-json" + "github.com/pkg/errors" + "time" + + "github.com/1340691923/ElasticView/pkg/infrastructure/response" +) + +// Es 连接管理控制器 +type EsLinkController struct { + *BaseController + log *logger.AppLogger + esClientService *es.EsClientService + sqlx *sqlstore.SqlStore + esLinkService *es_link_service.EsLinkService + jwtSvr *jwt_svr.Jwt + esCache *cache_service.EsCache +} + +func NewEsLinkController(baseController *BaseController, log *logger.AppLogger, esClientService *es.EsClientService, sqlx *sqlstore.SqlStore, esLinkService *es_link_service.EsLinkService, jwtSvr *jwt_svr.Jwt, esCache *cache_service.EsCache) *EsLinkController { + return &EsLinkController{BaseController: baseController, log: log, esClientService: esClientService, sqlx: sqlx, esLinkService: esLinkService, jwtSvr: jwtSvr, esCache: esCache} +} + +// @Summary 获取Es连接列表 +// @Tags es连接信息 +// @Accept application/json +// @Produce application/json +// @Param X-Token header string false "用户令牌" +// @Success 0 {object} []vo.EsLink +// @Router /api/es_link/ListAction [post] +func (this *EsLinkController) ListAction(ctx *gin.Context) { + + userInfo, _ := this.jwtSvr.ParseToken(this.GetToken(ctx)) + + list, err := this.esLinkService.GetListAction(ctx, userInfo.UserID, this.GetRoleCache(ctx)) + if err != nil { + this.Error(ctx, err) + return + } + this.Success(ctx, response.SearchSuccess, list) +} + +func (this *EsLinkController) GetEsCfgList(ctx *gin.Context) { + + userInfo, _ := this.jwtSvr.ParseToken(this.GetToken(ctx)) + + list, err := this.esLinkService.GetEsCfgList(ctx, userInfo.UserID) + if err != nil { + this.Error(ctx, err) + return + } + this.Success(ctx, response.SearchSuccess, list) +} + +func (this *EsLinkController) GetEsCfgOpt(ctx *gin.Context) { + + userInfo, _ := this.jwtSvr.ParseToken(this.GetToken(ctx)) + + list, err := this.esLinkService.GetEsCfgOpt(ctx, userInfo.UserID) + if err != nil { + this.Error(ctx, err) + return + } + this.Success(ctx, response.SearchSuccess, list) +} + +func (this *EsLinkController) DeleteEsCfgRelation(ctx *gin.Context) { + + var req dto.GetEsCfgRelation + err := ctx.Bind(&req) + if err != nil { + this.Error(ctx, err) + return + } + + err = this.esLinkService.DeleteEsCfgRelation(ctx, this.sqlx.DB, req.ID) + if err != nil { + this.Error(ctx, err) + return + } + cache.CleanDataSourceCache(true) + this.esCache.Truncate() + this.Success(ctx, response.OperateSuccess, nil) +} + +// @Summary 查看ES连接配置下拉选 +// @Tags es连接信息 +// @Accept application/json +// @Produce application/json +// @Param X-Token header string false "用户令牌" +// @Success 0 {object} []vo.EsLinkOpt +// @Router /api/es_link/OptAction [post] +func (this *EsLinkController) OptAction(ctx *gin.Context) { + + roles := this.GetRoleCache(ctx) + + optList, err := this.esClientService.GetEsLinkOptions(ctx, roles) + + if err != nil { + this.Error(ctx, errors.WithStack(err)) + return + } + + this.Success(ctx, response.SearchSuccess, optList) +} + +// @Summary 新增连接信息 +// @Tags es连接信息 +// @Accept application/json +// @Produce application/json +// @Param X-Token header string false "用户令牌" +// @Param object body dto.InsertEsLink false "查询参数" +// @Success 0 {object} response.ResponseData +// @Router /api/es_index/InsertAction [post] +func (this *EsLinkController) InsertAction(ctx *gin.Context) { + + var reqData dto.InsertEsLink + err := ctx.Bind(&reqData) + if err != nil { + this.Error(ctx, err) + return + } + + if reqData.Ip == "" { + this.Error(ctx, errors.New("连接信息不能为空")) + return + } + if reqData.Remark == "" { + reqData.Remark = reqData.Ip + } + _, ok := factory.EsServiceMap[reqData.Version] + if !ok { + this.Error(ctx, factory.VersionErr()) + return + } + + userInfo, _ := this.jwtSvr.ParseToken(this.GetToken(ctx)) + + tx := this.sqlx.Begin() + + es_link_id, err := this.esLinkService.SaveEsLink(ctx, tx, &model.EsLinkV2{ + Ip: reqData.Ip, + Created: time.Now(), + Updated: time.Now(), + Remark: reqData.Remark, + Version: reqData.Version, + CreateBy: userInfo.UserID, + }) + + if err != nil { + tx.Rollback() + this.Error(ctx, err) + return + } + + for _, cfgId := range reqData.CfgIds { + err = this.esLinkService.SaveEslinkRoleCfgByEsLinkId(ctx, tx, cfgId, es_link_id) + if err != nil { + tx.Rollback() + this.Error(ctx, err) + return + } + } + tx.Commit() + cache.CleanDataSourceCache(true) + this.esCache.Truncate() + this.Success(ctx, response.OperateSuccess, nil) + return +} + +// @Summary 修改连接信息 +// @Tags es连接信息 +// @Accept application/json +// @Produce application/json +// @Param X-Token header string false "用户令牌" +// @Param object body dto.UpdateEsLink false "查询参数" +// @Success 0 {object} response.ResponseData +// @Router /api/es_index/UpdateAction [post] +func (this *EsLinkController) UpdateAction(ctx *gin.Context) { + var reqData dto.UpdateEsLink + err := ctx.Bind(&reqData) + if err != nil { + this.Error(ctx, err) + return + } + + _, ok := factory.EsServiceMap[reqData.Version] + if !ok { + this.Error(ctx, factory.VersionErr()) + return + } + + if reqData.Ip == "" { + this.Error(ctx, errors.New("连接信息不能为空")) + return + } + + if reqData.Remark == "" { + reqData.Remark = reqData.Ip + } + + if reqData.Id <= 0 { + this.Error(ctx, errors.New("ID不能为空")) + return + } + + updateMap := map[string]interface{}{} + + updateMap["ip"] = reqData.Ip + updateMap["remark"] = reqData.Remark + updateMap["version"] = reqData.Version + updateMap["updated"] = time.Now().Format(util.TimeFormat) + + tx := this.sqlx.Begin() + + err = this.esLinkService.UpdateEsLink(ctx, tx, updateMap, reqData.Id) + + if err != nil { + tx.Rollback() + this.Error(ctx, err) + return + } + + err = this.esLinkService.DeleteEsCfgRelationByEsLinkId(ctx, tx, reqData.Id) + + if err != nil { + tx.Rollback() + this.Error(ctx, err) + return + } + + for _, cfgId := range reqData.CfgIds { + + err = this.esLinkService.SaveEslinkRoleCfgByEsLinkId(ctx, tx, cfgId, reqData.Id) + + if err != nil { + tx.Rollback() + this.Error(ctx, err) + return + } + } + tx.Commit() + cache.CleanDataSourceCache(true) + this.esCache.Truncate() + this.Success(ctx, response.OperateSuccess, nil) + return +} + +// @Summary 删除es连接 +// @Tags es连接信息 +// @Accept application/json +// @Produce application/json +// @Param X-Token header string false "用户令牌" +// @Param object body dto.DeleteEsLink false "查询参数" +// @Success 0 {object} response.ResponseData +// @Router /api/es_index/DeleteAction [post] +func (this *EsLinkController) DeleteAction(ctx *gin.Context) { + + var req dto.DeleteEsLink + + err := ctx.Bind(&req) + if err != nil { + this.Error(ctx, err) + return + } + + if req.Id <= 0 { + this.Error(ctx, errors.New("id不能为空")) + return + } + + tx := this.sqlx.Begin() + + err = this.esLinkService.DeleteById(ctx, tx, req.Id) + + if err != nil { + tx.Rollback() + this.Error(ctx, err) + return + } + + err = this.esLinkService.DeleteEsCfgRelationByEsLinkId(ctx, tx, req.Id) + if err != nil { + tx.Rollback() + this.Error(ctx, err) + return + } + tx.Commit() + cache.CleanDataSourceCache(true) + this.esCache.Truncate() + this.Success(ctx, response.DeleteSuccess, nil) +} + +func (this *EsLinkController) InsertEsCfgAction(ctx *gin.Context) { + + var reqData dto.InsertEsLinkCfg + err := ctx.Bind(&reqData) + if err != nil { + this.Error(ctx, err) + return + } + + if reqData.Pwd != "" { + reqData.Pwd, err = this.esClientService.EsPwdESBEncrypt(ctx, reqData.Pwd) + if err != nil { + this.Error(ctx, err) + return + } + } + + userInfo, _ := this.jwtSvr.ParseToken(this.GetToken(ctx)) + + for _, header := range reqData.Header { + if header.Key == "" { + this.Error(ctx, errors.New("请求头中key不能为空")) + return + } + if header.Value == "" { + this.Error(ctx, errors.New("请求头中value不能为空")) + return + } + } + header, err := json.Marshal(reqData.Header) + if err != nil { + this.Error(ctx, err) + return + } + es_link_cfg_id, err := this.esLinkService.SaveEsLinkCfgV2(ctx, &model.EslinkCfgV2{ + User: reqData.User, + Pwd: reqData.Pwd, + Rootpem: &reqData.RootPEM, + Certpem: &reqData.CertPEM, + Keypem: &reqData.KeyPEM, + Created: time.Now(), + Updated: time.Now(), + CreateBy: userInfo.UserID, + Header: string(header), + Remark: reqData.Remark, + }) + if err != nil { + this.Error(ctx, err) + return + } + + for _, shareRole := range reqData.ShareRoles { + + err = this.sqlx.Exec("insert into gm_role_eslink_cfg_v2(role_id,es_link_cfg_id)"+ + " values (?,?)", shareRole, es_link_cfg_id).Error + + if err != nil { + this.Error(ctx, err) + return + } + + } + + cache.CleanDataSourceCache(true) + this.esCache.Truncate() + this.Success(ctx, response.OperateSuccess, nil) + return +} + +func (this *EsLinkController) UpdateEsCfgAction(ctx *gin.Context) { + + var reqData dto.UpdateEsLinkCfg + err := ctx.Bind(&reqData) + if err != nil { + this.Error(ctx, err) + return + } + + if reqData.Id <= 0 { + this.Error(ctx, errors.New("id不能为空")) + return + } + + for _, header := range reqData.Header { + if header.Key == "" { + this.Error(ctx, errors.New("请求头中key不能为空")) + return + } + if header.Value == "" { + this.Error(ctx, errors.New("请求头中value不能为空")) + return + } + } + header, err := json.Marshal(reqData.Header) + if err != nil { + this.Error(ctx, err) + return + } + updateMap := map[string]interface{}{} + updateMap["user"] = reqData.User + if reqData.Pwd != "" { + updateMap["pwd"], err = this.esClientService.EsPwdESBEncrypt(ctx, reqData.Pwd) + if err != nil { + this.Error(ctx, err) + return + } + } else { + updateMap["pwd"] = reqData.Pwd + } + updateMap["remark"] = reqData.Remark + updateMap["rootpem"] = reqData.RootPEM + updateMap["certpem"] = reqData.CertPEM + updateMap["keypem"] = reqData.KeyPEM + updateMap["created"] = time.Now().Format(util.TimeFormat) + updateMap["updated"] = time.Now().Format(util.TimeFormat) + updateMap["header"] = string(header) + + tx := this.sqlx.Begin() + + err = this.esLinkService.UpdateEsLinkCfgById(ctx, tx, updateMap, reqData.Id) + + if err != nil { + tx.Rollback() + this.Error(ctx, err) + return + } + + err = this.esLinkService.DeleteRoleEslinkCfgByEsLinkCfgId(ctx, tx, reqData.Id) + + if err != nil { + tx.Rollback() + this.Error(ctx, err) + return + } + + for _, shareRole := range reqData.ShareRoles { + err = tx.Exec("insert into gm_role_eslink_cfg_v2(role_id,es_link_cfg_id)"+ + " values (?,?)", shareRole, reqData.Id).Error + if err != nil { + tx.Rollback() + this.Error(ctx, err) + return + } + } + tx.Commit() + cache.CleanDataSourceCache(true) + this.esCache.Truncate() + this.Success(ctx, response.OperateSuccess, nil) + return +} + +func (this *EsLinkController) DeleteEsCfgAction(ctx *gin.Context) { + + var reqData dto.DeleteEsLinkCfg + err := ctx.Bind(&reqData) + if err != nil { + this.Error(ctx, err) + return + } + + if reqData.Id <= 0 { + this.Error(ctx, errors.New("id不能为空")) + return + } + + err = this.esLinkService.DeleteEsCfg(ctx, reqData.Id) + + if err != nil { + this.Error(ctx, err) + return + } + cache.CleanDataSourceCache(true) + this.esCache.Truncate() + this.Success(ctx, response.OperateSuccess, nil) + return +} diff --git a/pkg/api/gm_operater_log.go b/pkg/api/gm_operater_log.go new file mode 100644 index 0000000..e361e17 --- /dev/null +++ b/pkg/api/gm_operater_log.go @@ -0,0 +1,50 @@ +package api + +import ( + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/dto" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/response" + "github.com/1340691923/ElasticView/pkg/services/gm_operater_log" + "github.com/gin-gonic/gin" +) + +type GmOperaterController struct { + *BaseController + log *logger.AppLogger + cfg *config.Config + gmOperaterLogService *gm_operater_log.GmOperaterLogService +} + +func NewGmOperaterController(baseController *BaseController, log *logger.AppLogger, cfg *config.Config, gmOperaterLogService *gm_operater_log.GmOperaterLogService) *GmOperaterController { + return &GmOperaterController{BaseController: baseController, log: log, cfg: cfg, gmOperaterLogService: gmOperaterLogService} +} + +// @Summary 查看后台操作日志 +// @Tags ev后台操作日志 +// @Accept application/json +// @Produce application/json +// @Param X-Token header string false "用户令牌" +// @Param object body dto.GmOperaterLogList false "查询参数" +// @Success 0 {object} vo.GmOperaterLog +// @Router /api/operater_log/ListAction [post] +func (this *GmOperaterController) ListAction(ctx *gin.Context) { + + var reqData dto.GmOperaterLogList + + if err := ctx.Bind(&reqData); err != nil { + this.Error(ctx, err) + return + } + + gmOperaterLogService := this.gmOperaterLogService + + list, count, err := gmOperaterLogService.List(ctx, reqData) + + if err != nil { + this.Error(ctx, err) + return + } + + this.Success(ctx, response.SearchSuccess, map[string]interface{}{"list": list, "count": count}) +} diff --git a/pkg/api/index_controller.go b/pkg/api/index_controller.go new file mode 100644 index 0000000..d1ae8af --- /dev/null +++ b/pkg/api/index_controller.go @@ -0,0 +1,60 @@ +package api + +import ( + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/vo" + "github.com/gin-gonic/gin" + "github.com/tidwall/gjson" + "net/http" + "net/url" +) + +type IndexController struct { + cfg *config.Config +} + +func NewIndexController(cfg *config.Config) *IndexController { + return &IndexController{cfg: cfg} +} + +func (this *IndexController) IndexHtml(c *gin.Context) { + appUrl, appBaseUrl, err := this.cfg.ParseAppUrlAndSubUrl() + if err != nil { + c.Writer.Write([]byte(err.Error())) + return + } + frontEndCfg := new(vo.FrontEndCfg) + frontEndCfg.AppUrl = appUrl + frontEndCfg.AppSubUrl = appBaseUrl + frontEndCfg.Version = config.Version + frontEndCfg.Lang = this.cfg.GetLang() + frontEndCfg.WatermarkContent = this.cfg.WatermarkContent + + c.HTML(http.StatusOK, "index.html", frontEndCfg) +} + +func (this *IndexController) CallBack(c *gin.Context) { + code := c.Query("code") + state := c.Query("state") + login_callback := gjson.Get(state, "login_callback").String() + + parmas := url.Values{} + parmas.Set("code", code) + parmas.Set("state", state) + URL := fmt.Sprintf("%s/#/login?%s", login_callback, parmas.Encode()) + + c.Redirect(http.StatusFound, URL) +} + +func (this *IndexController) GetI18nCfg(c *gin.Context) { + c.JSON(http.StatusOK, map[string]interface{}{ + "code": 0, + "msg": "succ", + "data": config.TranslationCfg, + }) +} + +func (this *IndexController) Health(c *gin.Context) { + c.Writer.WriteString("I am OK!") +} diff --git a/pkg/api/manager_role_controller.go b/pkg/api/manager_role_controller.go new file mode 100644 index 0000000..35ce8b6 --- /dev/null +++ b/pkg/api/manager_role_controller.go @@ -0,0 +1,208 @@ +package api + +import ( + "github.com/1340691923/ElasticView/pkg/infrastructure/access_control" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/dto" + "github.com/1340691923/ElasticView/pkg/infrastructure/jwt_svr" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/model" + "github.com/1340691923/ElasticView/pkg/infrastructure/response" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore" + "github.com/1340691923/ElasticView/pkg/services/es_link_service" + "github.com/1340691923/ElasticView/pkg/services/gm_role" + "github.com/1340691923/ElasticView/pkg/services/gm_user" + "github.com/gin-gonic/gin" + "github.com/pkg/errors" + "golang.org/x/sync/errgroup" + "strconv" +) + +// GM角色控制器 +type ManagerRoleController struct { + *BaseController + log *logger.AppLogger + cfg *config.Config + + jwtSvr *jwt_svr.Jwt + gmRoleService *gm_role.GmRoleService + gmUserService *gm_user.GmUserService + rbac *access_control.Rbac + orm *sqlstore.SqlStore + esLinkService *es_link_service.EsLinkService +} + +func NewManagerRoleController(baseController *BaseController, log *logger.AppLogger, cfg *config.Config, jwtSvr *jwt_svr.Jwt, gmRoleService *gm_role.GmRoleService, gmUserService *gm_user.GmUserService, rbac *access_control.Rbac, orm *sqlstore.SqlStore, esLinkService *es_link_service.EsLinkService) *ManagerRoleController { + return &ManagerRoleController{BaseController: baseController, log: log, cfg: cfg, jwtSvr: jwtSvr, gmRoleService: gmRoleService, gmUserService: gmUserService, rbac: rbac, orm: orm, esLinkService: esLinkService} +} + +// 获取所有的EV角色 +func (this *ManagerRoleController) RolesAction(ctx *gin.Context) { + + roles, err := this.gmRoleService.Select(ctx, this.gmUserService.IsAdminUser(this.GetRoleCache(ctx))) + if err != nil { + this.Error(ctx, err) + return + } + list, err := this.gmRoleService.GetRoles(ctx, roles) + + if err != nil { + this.Error(ctx, err) + return + } + + this.Success(ctx, response.SearchSuccess, list) + return +} + +// 新增EV角色 +func (this *ManagerRoleController) RolesAddAction(ctx *gin.Context) { + + var model2 dto.GmRoleModel + + err := ctx.Bind(&model2) + if err != nil { + this.Error(ctx, err) + return + } + + var roleModel model.GmRole + roleModel.Id = model2.ID + roleModel.RoleName = model2.RoleName + roleModel.RoleList = &model2.RoleList + roleModel.Description = model2.Description + id, err := this.gmRoleService.Add(ctx, roleModel) + + if err != nil { + this.Error(ctx, err) + return + } + + eg := errgroup.Group{} + + for _, api := range model2.Api { + api := api + eg.Go(func() error { + _, err = this.rbac.AddPolicy(strconv.Itoa(int(id)), api, "*") + if err != nil { + this.log.Sugar().Errorf("err:%s", err.Error()) + return err + } + return nil + }) + } + err = eg.Wait() + + if err != nil { + this.Error(ctx, err) + return + } + + this.Success(ctx, response.OperateSuccess, map[string]interface{}{"id": id}) +} + +// 修改EV角色 +func (this *ManagerRoleController) RolesUpdateAction(ctx *gin.Context) { + var model2 dto.GmRoleModel + err := ctx.Bind(&model2) + if err != nil { + this.Error(ctx, err) + return + } + + if model2.ID == 1 && !this.gmUserService.IsAdminUser(this.GetRoleCache(ctx)) { + this.Error(ctx, errors.New("您无权修改该角色!")) + return + } + + var roleModel model.GmRole + roleModel.Id = model2.ID + roleModel.RoleName = model2.RoleName + roleModel.RoleList = &model2.RoleList + roleModel.Description = model2.Description + err = this.gmRoleService.Update(ctx, roleModel) + + this.rbac.RemoveFilteredPolicy(0, strconv.Itoa(model2.ID)) //先全清掉 + eg := errgroup.Group{} + + for _, api := range model2.Api { + api := api + roleId := model2.ID + eg.Go(func() error { + _, err = this.rbac.AddPolicy(strconv.Itoa(roleId), api, "*") + if err != nil { + this.log.Sugar().Errorf("err:%s", err.Error()) + return err + } + return nil + }) + } + + err = eg.Wait() + if err != nil { + this.Error(ctx, err) + return + } + + this.Success(ctx, response.OperateSuccess, nil) + return +} + +// 删除EV角色 +func (this *ManagerRoleController) RolesDelAction(ctx *gin.Context) { + + var reqData dto.RolesDelReq + + err := ctx.Bind(&reqData) + if err != nil { + this.Error(ctx, err) + return + } + + id := reqData.Id + + if id == 1 && !this.gmUserService.IsAdminUser(this.GetRoleCache(ctx)) { + this.Error(ctx, errors.New("您无权修改该角色!")) + return + } + tx := this.orm.Begin() + err = this.gmRoleService.Delete(ctx, tx, id) + if err != nil { + tx.Rollback() + this.Error(ctx, err) + return + } + + err = this.gmUserService.DeleteByRoleId(ctx, tx, id) + if err != nil { + tx.Rollback() + this.Error(ctx, err) + return + } + + err = this.esLinkService.DeleteRoleEslinkCfgByRoleId(ctx, tx, id) + + if err != nil { + tx.Rollback() + this.Error(ctx, err) + return + } + + tx.Commit() + this.rbac.RemoveFilteredPolicy(0, strconv.Itoa(id)) //先全清掉 + + this.Success(ctx, response.OperateSuccess, nil) + return +} + +// 获取EV角色下拉选 +func (this *ManagerRoleController) RoleOptionAction(ctx *gin.Context) { + + list, err := this.gmRoleService.GetOptions(ctx) + if err != nil { + this.Error(ctx, err) + return + } + this.Success(ctx, response.SearchSuccess, list) + return +} diff --git a/pkg/api/manager_user_controller.go b/pkg/api/manager_user_controller.go new file mode 100644 index 0000000..cd33c54 --- /dev/null +++ b/pkg/api/manager_user_controller.go @@ -0,0 +1,533 @@ +package api + +import ( + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/dto" + "github.com/1340691923/ElasticView/pkg/infrastructure/jwt_svr" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/model" + "github.com/1340691923/ElasticView/pkg/infrastructure/plugins/manager" + "github.com/1340691923/ElasticView/pkg/infrastructure/response" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore" + "github.com/1340691923/ElasticView/pkg/infrastructure/vo" + "github.com/1340691923/ElasticView/pkg/infrastructure/web_engine" + "github.com/1340691923/ElasticView/pkg/services/gm_user" + "github.com/1340691923/ElasticView/pkg/services/updatechecker" + "github.com/1340691923/ElasticView/pkg/util" + "github.com/gin-gonic/gin" + "github.com/pkg/errors" + "github.com/spf13/cast" + "go.uber.org/zap" + "time" +) + +// BI用户控制器 +type ManagerUserController struct { + *BaseController + log *logger.AppLogger + cfg *config.Config + orm *sqlstore.SqlStore + jwtSvr *jwt_svr.Jwt + gmUserService *gm_user.GmUserService + routerEngine *web_engine.WebEngine + evUpdate *updatechecker.EvUpdate + pluginRegistry manager.Service +} + +func NewManagerUserController(baseController *BaseController, log *logger.AppLogger, cfg *config.Config, orm *sqlstore.SqlStore, jwtSvr *jwt_svr.Jwt, gmUserService *gm_user.GmUserService, routerEngine *web_engine.WebEngine, evUpdate *updatechecker.EvUpdate, pluginRegistry manager.Service) *ManagerUserController { + return &ManagerUserController{BaseController: baseController, log: log, cfg: cfg, orm: orm, jwtSvr: jwtSvr, gmUserService: gmUserService, routerEngine: routerEngine, evUpdate: evUpdate, pluginRegistry: pluginRegistry} +} + +// 登录 +// @Summary EV用户登录 +// @Accept application/json +// @Produce application/json +// @Param X-Token header string false "用户令牌" +// @Param object body dto.User false "查询参数" +// @Success 0 {object} vo.User +// @Router /api/gm_user/login [post] +func (this *ManagerUserController) Login(ctx *gin.Context) { + + var reqData dto.User + + err := ctx.Bind(&reqData) + + if err != nil { + this.Error(ctx, err) + return + } + var token string + if reqData.OAuthCode != "" && reqData.State != "" { + + token, err = this.gmUserService.CheckLoginByOAuth(ctx, reqData.OAuthCode, reqData.State) + if err != nil { + this.Error(ctx, err) + return + } + + } else { + username := reqData.Username + password := reqData.Password + + token, err = this.gmUserService.CheckLogin(ctx, username, password) + if err != nil { + this.Error(ctx, err) + return + } + } + + this.Success(ctx, "登录成功", vo.User{Token: token, UnixTime: time.Now().Unix()}) +} + +// 修改自己的密码 +func (this *ManagerUserController) ModifyPwd(ctx *gin.Context) { + type ReqData struct { + Password string `json:"password"` + } + + var reqData ReqData + + err := ctx.Bind(&reqData) + + if err != nil { + this.Error(ctx, err) + return + } + + if reqData.Password == "" { + this.Error(ctx, errors.New("密码不能为空")) + return + } + + token := this.GetToken(ctx) + claims, err := this.jwtSvr.ParseToken(token) + if err != nil { + this.Error(ctx, err) + return + } + + err = this.gmUserService.UpdatePassById(ctx, claims.UserID, reqData.Password) + if err != nil { + this.Error(ctx, err) + return + } + + util.TokenBucket.LoadOrStore(token, cast.ToInt64(claims.ExpiresAt.Unix())) + + this.Success(ctx, response.OperateSuccess, nil) + return +} + +// 修改用户的密码 +func (this *ManagerUserController) ModifyPwdByUserId(ctx *gin.Context) { + type ReqData struct { + Id int `json:"id"` + Password string `json:"password"` + } + + var reqData ReqData + + err := ctx.Bind(&reqData) + + if err != nil { + this.Error(ctx, err) + return + } + + if reqData.Password == "" { + this.Error(ctx, errors.New("密码不能为空")) + return + } + + err = this.gmUserService.UpdatePassById(ctx, reqData.Id, reqData.Password) + if err != nil { + this.Error(ctx, err) + return + } + + this.Success(ctx, response.OperateSuccess, nil) + return +} + +// 用户详细信息 +func (this *ManagerUserController) UserInfo(ctx *gin.Context) { + type ReqData struct { + BaseRoutes []*gm_user.Route `json:"baseRoutes"` + } + var reqData ReqData + + err := ctx.Bind(&reqData) + + if err != nil { + this.Error(ctx, err) + return + } + + token := this.GetToken(ctx) + claims, err := this.jwtSvr.ParseToken(token) + if err != nil { + this.Error(ctx, err) + return + } + + baseRoutes := this.gmUserService.MergePluginRoutes(ctx, reqData.BaseRoutes) + + gmUserService := this.gmUserService + + roleList, qiankunApps, err := gmUserService.GetRoleInfo(ctx, this.GetRoleCache(ctx), baseRoutes) + if err != nil { + this.Error(ctx, err) + return + } + claims.Avatar = "https://oss.youlai.tech/youlai-boot/2023/05/16/811270ef31f548af9cffc026dfc3777b.gif?imageView2/1/w/80/h/80" + this.Success(ctx, "登录成功", map[string]interface{}{ + "roles": []string{"admin"}, + "introduction": "", + "name": claims.RealName, + "list": roleList, + "qiankunMicroApps": qiankunApps, + "avatar": claims.Avatar, + "evUpdateAvailable": this.evUpdate.UpdateAvailable(), + "evLatestVersion": this.evUpdate.LatestVersion(), + "evDownloadUrl": this.evUpdate.DownloadUrl(), + }) + return + +} + +func (this *ManagerUserController) GetRoutesConfig(ctx *gin.Context) { + type ReqData struct { + Routers []*gm_user.Route `json:"routers"` + } + var reqData ReqData + + err := ctx.Bind(&reqData) + + if err != nil { + this.Error(ctx, err) + return + } + + routes := this.gmUserService.MergePluginRoutes(ctx, reqData.Routers) + + this.Success(ctx, response.SearchSuccess, routes) +} + +// 退出登录 +func (this *ManagerUserController) LogoutAction(ctx *gin.Context) { + token := this.GetToken(ctx) + var claims *jwt_svr.Claims + claims, err := this.jwtSvr.ParseToken(token) + if err != nil { + this.log.Error("LogoutAction err", zap.Error(err)) + this.Success(ctx, response.LogoutSuccess, nil) + } + util.TokenBucket.LoadOrStore(token, cast.ToInt64(claims.ExpiresAt.Unix())) + + this.Success(ctx, response.LogoutSuccess, nil) +} + +// EV用户列表 +func (this *ManagerUserController) UserListAction(ctx *gin.Context) { + var err error + var list []model.GmUserModel + + list, err = this.gmUserService.Select(ctx, this.gmUserService.IsAdminUser(this.GetRoleCache(ctx))) + + if err != nil { + this.Error(ctx, err) + return + } + var users []vo.GmUsers + for _, user := range list { + roles := []int{} + roles, err = this.gmUserService.GetRolesByUserID(user.Id) + if err != nil { + this.log.Error("GetRolesByUserID", zap.Error(err)) + } + users = append(users, vo.GmUsers{ + Id: user.Id, + Username: user.Username, + Password: user.Password, + Avatar: user.Avatar, + Realname: user.Realname, + IsBan: user.IsBan, + Email: user.Email, + WorkWechatUid: user.WorkWechatUid, + RoleIds: roles, + UpdateTime: user.UpdateTime, + CreateTime: user.CreateTime, + LastLoginTime: user.LastLoginTime, + }) + } + + this.Success(ctx, response.SearchSuccess, users) + return +} + +// 封禁用户 +func (this *ManagerUserController) SealUserAction(ctx *gin.Context) { + var reqData dto.SealUserReq + err := ctx.Bind(&reqData) + + if err != nil { + this.Error(ctx, err) + return + } + + err = this.gmUserService.SealUser(ctx, reqData.Id, true) + if err != nil { + this.Error(ctx, err) + return + } + + this.Success(ctx, response.OperateSuccess, nil) +} + +// 解封用户 +func (this *ManagerUserController) UnSealUserAction(ctx *gin.Context) { + var reqData dto.SealUserReq + err := ctx.Bind(&reqData) + + if err != nil { + this.Error(ctx, err) + return + } + + err = this.gmUserService.SealUser(ctx, reqData.Id, false) + if err != nil { + this.Error(ctx, err) + return + } + + this.Success(ctx, response.OperateSuccess, nil) + +} + +// 删除EV用户 +func (this *ManagerUserController) DeleteUserAction(ctx *gin.Context) { + + var reqData dto.DeleteUserReq + + err := ctx.Bind(&reqData) + + if err != nil { + this.Error(ctx, err) + return + } + + if reqData.Id == 1 { + this.Error(ctx, errors.New("您无权删除该用户!")) + return + } + + err = this.gmUserService.Delete(ctx, reqData.Id) + if err != nil { + + this.Error(ctx, err) + return + } + + this.Success(ctx, response.DeleteSuccess, nil) +} + +// 用ID获取用户信息 +func (this *ManagerUserController) GetUserByIdAction(ctx *gin.Context) { + var reqData dto.GetUserByIdReq + + err := ctx.Bind(&reqData) + + if err != nil { + this.Error(ctx, err) + return + } + + gmUser, err := this.gmUserService.GetUserById(ctx, reqData.Id) + if err != nil { + this.Error(ctx, err) + return + } + this.Success(ctx, response.SearchSuccess, gmUser) +} + +// 修改EV用户信息 +func (this *ManagerUserController) UserUpdateAction(ctx *gin.Context) { + + var reqData dto.UserUpdateReq + + err := ctx.Bind(&reqData) + + if err != nil { + this.Error(ctx, err) + return + } + + if util.InArr(reqData.RoleIds, gm_user.AdminRole) && !this.gmUserService.IsAdminUser(this.GetRoleCache(ctx)) { + this.Error(ctx, errors.New("非管理员角色无法修改管理员信息")) + return + } + + var id = reqData.Id + + err = this.gmUserService.Update(ctx, model.GmUserModel{ + Id: int(id), + Username: reqData.Username, + Email: reqData.Email, + Realname: reqData.Realname, + WorkWechatUid: reqData.WorkWechatUid, + }, reqData.RoleIds) + if err != nil { + this.Error(ctx, err) + return + } + + this.Success(ctx, response.OperateSuccess, nil) + return +} + +// 新增EV用户 +func (this *ManagerUserController) UserAddAction(ctx *gin.Context) { + + var reqData dto.UserAddReq + + err := ctx.Bind(&reqData) + + if err != nil { + this.Error(ctx, err) + return + } + + if util.InArr(reqData.RoleIds, gm_user.AdminRole) && !this.gmUserService.IsAdminUser(this.GetRoleCache(ctx)) { + this.Error(ctx, errors.New("非管理员角色无法新增管理员信息")) + return + } + + userModel := model.GmUserModel{} + + userModel.Realname = reqData.Realname + userModel.Password = reqData.Password + userModel.Username = reqData.Username + userModel.Email = reqData.Email + userModel.WorkWechatUid = reqData.WorkWechatUid + + id, err := this.gmUserService.Insert(ctx, userModel, reqData.RoleIds) + if err != nil { + + this.Error(ctx, err) + return + } + + this.Success(ctx, response.OperateSuccess, id) +} + +func (this *ManagerUserController) UrlConfig(ctx *gin.Context) { + + reqData := new(dto.UrlConfigReq) + + err := ctx.Bind(&reqData) + + if err != nil { + this.Error(ctx, err) + return + } + + list := []vo.RouterConfig{} + cfg_with_module := this.routerEngine.GetRouterConfigGroups() + + for _, plugin := range this.pluginRegistry.Plugins(ctx) { + routers := []web_engine.RouterConfig{} + for _, backendRoute := range plugin.PluginData().PluginJsonData.BackendRoutes { + routers = append(routers, web_engine.RouterConfig{ + Url: fmt.Sprintf("/%s%s", plugin.PluginData().PluginJsonData.PluginAlias, backendRoute.Path), + Remark: backendRoute.Remark, + NeedAuth: backendRoute.NeedAuth, + }) + } + cfg_with_module = append(cfg_with_module, web_engine.RouterConfigGroup{ + GroupRemark: plugin.PluginData().PluginJsonData.PluginName, + RouterConfigs: routers, + }) + } + + for _, rg := range cfg_with_module { + for _, router := range rg.RouterConfigs { + list = append(list, vo.RouterConfig{ + Url: router.Url, + Remark: fmt.Sprintf("%s-%s", rg.GroupRemark, router.Remark), + }) + } + + } + + this.Success(ctx, response.SearchSuccess, map[string]interface{}{ + "cfg": list, + "cfg_with_module": cfg_with_module, + }) +} + +func (this *ManagerUserController) UserInfoV2(ctx *gin.Context) { + token := this.GetToken(ctx) + claims, err := this.jwtSvr.ParseToken(token) + if err != nil { + this.Error(ctx, err) + return + } + res := vo.UserInfoV2{} + res.UserId = claims.UserID + res.Username = claims.RealName + + claims.Avatar = "https://oss.youlai.tech/youlai-boot/2023/05/16/811270ef31f548af9cffc026dfc3777b.gif?imageView2/1/w/80/h/80" + + res.Avatar = claims.Avatar + res.Perms = make([]string, 0) + res.Roles = []string{"ev_user"} + this.Success(ctx, response.SearchSuccess, res) +} + +func (this *ManagerUserController) GetOAuthList(ctx *gin.Context) { + + var reqData dto.GetOAuthConfigReq + + err := ctx.BindJSON(&reqData) + + if err != nil { + this.Error(ctx, err) + return + } + + cfgs, err := this.gmUserService.GetOAuthList(reqData.CallBack) + if err != nil { + this.Error(ctx, err) + return + } + this.Success(ctx, response.SearchSuccess, cfgs) +} + +func (this *ManagerUserController) GetOAuthConfigs(ctx *gin.Context) { + + cfgs, err := this.gmUserService.GetOAuthConfigs() + if err != nil { + this.Error(ctx, err) + return + } + this.Success(ctx, response.SearchSuccess, cfgs) +} + +func (this *ManagerUserController) SaveOAuthConfigs(ctx *gin.Context) { + var reqData dto.SaveOAuthConfigReq + + err := ctx.BindJSON(&reqData) + + if err != nil { + this.Error(ctx, err) + return + } + + err = this.gmUserService.SaveOAuthConfigs(reqData.ApplicationName, reqData.Config) + if err != nil { + this.Error(ctx, err) + return + } + this.Success(ctx, response.OperateSuccess, nil) +} diff --git a/pkg/api/plugin_controller.go b/pkg/api/plugin_controller.go new file mode 100644 index 0000000..85e7ba4 --- /dev/null +++ b/pkg/api/plugin_controller.go @@ -0,0 +1,171 @@ +package api + +import ( + dto2 "github.com/1340691923/ElasticView/pkg/infrastructure/dto" + "github.com/1340691923/ElasticView/pkg/infrastructure/eve_api/dto" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/response" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore" + "github.com/1340691923/ElasticView/pkg/services/eve_service" + "github.com/1340691923/ElasticView/pkg/services/plugin_install_service" + "github.com/1340691923/ElasticView/pkg/services/plugin_service" + "github.com/gin-gonic/gin" +) + +type PluginController struct { + *BaseController + log *logger.AppLogger + orm *sqlstore.SqlStore + pluginService *plugin_service.PluginService + eveService *eve_service.EvEService + pluginInstaller *plugin_install_service.PluginInstaller +} + +func NewPluginController(baseController *BaseController, log *logger.AppLogger, orm *sqlstore.SqlStore, pluginService *plugin_service.PluginService, eveService *eve_service.EvEService, pluginInstaller *plugin_install_service.PluginInstaller) *PluginController { + return &PluginController{BaseController: baseController, log: log, orm: orm, pluginService: pluginService, eveService: eveService, pluginInstaller: pluginInstaller} +} + +func (this *PluginController) CallPlugin(ctx *gin.Context) { + err := this.pluginService.CallPlugin(ctx, ctx.Param("plugin_id")) + if err != nil { + this.Error(ctx, err) + return + } +} + +func (this *PluginController) CallPluginViews(ctx *gin.Context) { + err := this.pluginService.CallPluginViews(ctx, ctx.Param("plugin_id")) + if err != nil { + this.Error(ctx, err) + return + } +} + +func (this *PluginController) PluginMarket(ctx *gin.Context) { + + var req dto.FromEvPluginReq + + err := ctx.Bind(&req) + if err != nil { + this.Error(ctx, err) + return + } + + pluginList, err := this.eveService.GetRemotePlugins(ctx, &req) + + if err != nil { + this.Error(ctx, err) + return + } + + this.Success(ctx, response.SearchSuccess, pluginList) + +} + +func (this *PluginController) GetPluginInfo(ctx *gin.Context) { + var req dto.FormEvPluginInfoReq + + err := ctx.Bind(&req) + if err != nil { + this.Error(ctx, err) + return + } + + res, err := this.eveService.GetRemotePluginInfo(ctx, &req) + + if err != nil { + this.Error(ctx, err) + return + } + + this.Success(ctx, response.SearchSuccess, res) + +} + +func (this *PluginController) InstallPlugin(ctx *gin.Context) { + var req dto2.InstallPlugin + err := ctx.Bind(&req) + if err != nil { + this.Error(ctx, err) + return + } + + err = this.pluginInstaller.Add(ctx, req.PluginID, req.Version) + if err != nil { + this.Error(ctx, err) + return + } + + this.Success(ctx, "安装成功", nil) +} + +func (this *PluginController) StarPlugin(ctx *gin.Context) { + var req dto.StarPlugin + err := ctx.Bind(&req) + if err != nil { + this.Error(ctx, err) + return + } + + err = this.pluginService.StarPlugin(ctx, req.PluginId) + if err != nil { + this.Error(ctx, err) + return + } + this.Success(ctx, "操作成功", nil) +} + +func (this *PluginController) UnInstallPlugin(ctx *gin.Context) { + var req dto2.InstallPlugin + err := ctx.Bind(&req) + if err != nil { + this.Error(ctx, err) + return + } + + err = this.pluginInstaller.Remove(ctx, req.PluginID, "") + if err != nil { + this.Error(ctx, err) + return + } + this.Success(ctx, "卸载成功", nil) +} + +func (this *PluginController) GetWxArticleList(ctx *gin.Context) { + list, err := this.eveService.GetWxArticleList(ctx) + if err != nil { + this.Error(ctx, err) + return + } + this.Success(ctx, response.SearchSuccess, list) +} + +func (this *PluginController) GetLocalPluginList(ctx *gin.Context) { + list, err := this.eveService.GetLocalPlugins(ctx) + if err != nil { + this.Error(ctx, err) + return + } + this.Success(ctx, response.SearchSuccess, list) +} + +func (this *PluginController) ImportEvKey(ctx *gin.Context) { + var req dto2.ImportEvKey + err := ctx.Bind(&req) + if err != nil { + this.Error(ctx, err) + return + } + err = this.eveService.SaveEvKey(req.EvKey) + if err != nil { + this.Error(ctx, err) + return + } + + err = this.eveService.FlushAccessToken(ctx) + if err != nil { + this.Error(ctx, err) + return + } + this.Success(ctx, response.OperateSuccess, nil) +} diff --git a/pkg/api/plugin_util_controller.go b/pkg/api/plugin_util_controller.go new file mode 100644 index 0000000..85b3ea3 --- /dev/null +++ b/pkg/api/plugin_util_controller.go @@ -0,0 +1,1679 @@ +package api + +import ( + "bytes" + "database/sql" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/dto" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/factory" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/response" + "github.com/1340691923/ElasticView/pkg/infrastructure/vo" + "github.com/1340691923/ElasticView/pkg/services/es" + "github.com/1340691923/ElasticView/pkg/services/es_service" + "github.com/1340691923/ElasticView/pkg/services/plugin_service" + dto2 "github.com/1340691923/eve-plugin-sdk-go/ev_api/dto" + vo2 "github.com/1340691923/eve-plugin-sdk-go/ev_api/vo" + "github.com/gin-gonic/gin" + "github.com/pkg/errors" + "net/http" +) + +type PluginUtilController struct { + *BaseController + pluginServer *plugin_service.PluginService + esClientService *es.EsClientService + esService *es_service.EsService + log *logger.AppLogger + cfg *config.Config +} + +func NewPluginUtilController(baseController *BaseController, pluginServer *plugin_service.PluginService, esClientService *es.EsClientService, esService *es_service.EsService, log *logger.AppLogger, cfg *config.Config) *PluginUtilController { + return &PluginUtilController{BaseController: baseController, pluginServer: pluginServer, esClientService: esClientService, esService: esService, log: log, cfg: cfg} +} + +// 进行增删改等操作 +func (this *PluginUtilController) ExecSql(ctx *gin.Context) { + var reqData dto.ExecReq + + err := ctx.BindJSON(&reqData) + + if err != nil { + this.Error(ctx, err) + return + } + + rowsAffected, err := this.pluginServer.ExecSql(ctx, reqData.PluginId, reqData.Sql, reqData.Args) + if err != nil { + this.Error(ctx, err) + return + } + + res := vo.ExecSqlRes{ + RowsAffected: rowsAffected, + } + + this.Success(ctx, response.OperateSuccess, res) +} + +// 进行查询操作 +func (this *PluginUtilController) SelectSql(ctx *gin.Context) { + var reqData dto.SelectReq + + err := ctx.BindJSON(&reqData) + + if err != nil { + this.Error(ctx, err) + return + } + + res, err := this.pluginServer.SelectSql(ctx, reqData.PluginId, reqData.Sql, reqData.Args) + if err != nil { + this.Error(ctx, err) + return + } + if len(res) == 0 { + this.Error(ctx, sql.ErrNoRows) + return + } + this.Success(ctx, response.SearchSuccess, vo.SelectSqlRes{Result: res}) +} + +// 进行查询操作 +func (this *PluginUtilController) FirstSql(ctx *gin.Context) { + var reqData dto.SelectReq + + err := ctx.BindJSON(&reqData) + + if err != nil { + this.Error(ctx, err) + return + } + + storeRes, err := this.pluginServer.SelectSql(ctx, reqData.PluginId, reqData.Sql, reqData.Args) + if err != nil { + this.Error(ctx, err) + return + } + var res map[string]interface{} + if len(storeRes) > 0 { + res = storeRes[0] + } else { + this.Error(ctx, sql.ErrNoRows) + return + } + + this.Success(ctx, response.SearchSuccess, vo.FirstSqlRes{Result: res}) +} + +// 进行原生es操作 +func (this *PluginUtilController) EsRunDsl(ctx *gin.Context) { + req := new(dto2.PluginRunDsl) + err := ctx.BindJSON(&req) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esConnect, err := this.esClientService.GetEsClientByID(ctx, req.EsConnectData.EsConnect, req.EsConnectData.UserID) + + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, req.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := this.esService.RunDsl(ctx, esI, req.EsConnectData.UserID, req.HttpMethod, req.Path, req.Dsl) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + this.SuccessProtobuf(ctx, response.SearchSuccess, res) +} + +func (this *PluginUtilController) Ping(ctx *gin.Context) { + var reqData dto2.PingReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.Ping(ctx) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.OperateSuccess, res) +} + +// 加载需调试插件 +func (this *PluginUtilController) LoadDebugPlugin(ctx *gin.Context) { + + var reqData dto.LoadDebugPlugin + + err := ctx.BindJSON(&reqData) + + if err != nil { + this.Error(ctx, err) + return + } + + err = this.pluginServer.LoadDebugPlugin(ctx, reqData.ID, reqData.Addr, reqData.Pid) + if err != nil { + this.Error(ctx, err) + return + } + this.Success(ctx, response.OperateSuccess, nil) +} + +// 停止需调试插件 +func (this *PluginUtilController) StopDebugPlugin(ctx *gin.Context) { + + var reqData dto.StopDebugPlugin + + err := ctx.BindJSON(&reqData) + + if err != nil { + this.Error(ctx, err) + return + } + err = this.pluginServer.StopDebugPlugin(ctx, reqData.ID) + if err != nil { + this.Error(ctx, err) + return + } + this.Success(ctx, response.OperateSuccess, nil) +} + +func (this *PluginUtilController) EsVersion(ctx *gin.Context) { + + var reqData dto2.EsConnectData + + err := ctx.BindJSON(&reqData) + if err != nil { + this.Error(ctx, err) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnect, reqData.UserID) + if err != nil { + this.Error(ctx, err) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnect)) + if err != nil { + this.Error(ctx, err) + return + } + + version, err := esI.EsVersion() + if err != nil { + this.Error(ctx, err) + return + } + this.Success(ctx, response.SearchSuccess, version) +} + +func (this *PluginUtilController) EsCatNodes(ctx *gin.Context) { + var reqData dto2.CatNodesReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsCatNodes(ctx, reqData.CatNodeReqData.H) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.SearchSuccess, res) +} + +func (this *PluginUtilController) EsClusterStats(ctx *gin.Context) { + var reqData dto2.ClusterStatsReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsClusterStats(ctx, reqData.ClusterStatsReqData.Human) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.SearchSuccess, res) +} + +func (this *PluginUtilController) EsIndicesSegmentsRequest(ctx *gin.Context) { + var reqData dto2.IndicesSegmentsRequest + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsIndicesSegmentsRequest(ctx, reqData.IndicesSegmentsRequestData.Human) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.SearchSuccess, res) +} + +func (this *PluginUtilController) EsRefresh(ctx *gin.Context) { + var reqData dto2.RefreshReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsRefresh(ctx, reqData.RefreshReqData.IndexNames) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.OperateSuccess, res) +} + +func (this *PluginUtilController) EsOpen(ctx *gin.Context) { + var reqData dto2.OpenReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsOpen(ctx, reqData.OpenReqData.IndexNames) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.OperateSuccess, res) +} + +func (this *PluginUtilController) EsFlush(ctx *gin.Context) { + var reqData dto2.FlushReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsFlush(ctx, reqData.FlushReqData.IndexNames) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.OperateSuccess, res) +} + +func (this *PluginUtilController) EsIndicesClearCache(ctx *gin.Context) { + var reqData dto2.IndicesClearCacheReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsIndicesClearCache(ctx, reqData.IndicesClearCacheReqData.IndexNames) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.OperateSuccess, res) +} + +func (this *PluginUtilController) EsIndicesClose(ctx *gin.Context) { + var reqData dto2.IndicesCloseReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsIndicesClose(ctx, reqData.IndicesCloseReqData.IndexNames) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.OperateSuccess, res) +} + +func (this *PluginUtilController) EsIndicesForcemerge(ctx *gin.Context) { + var reqData dto2.IndicesForcemergeReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsIndicesForcemerge(ctx, reqData.IndicesForcemergeReqData.IndexNames, reqData.IndicesForcemergeReqData.MaxNumSegments) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.OperateSuccess, res) +} + +func (this *PluginUtilController) EsDeleteByQuery(ctx *gin.Context) { + var reqData dto2.DeleteByQueryReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsDeleteByQuery(ctx, + reqData.DeleteByQueryReqData.IndexNames, + reqData.DeleteByQueryReqData.Documents, + reqData.DeleteByQueryReqData.Body, + ) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.OperateSuccess, res) +} + +func (this *PluginUtilController) EsSnapshotCreate(ctx *gin.Context) { + var reqData dto2.SnapshotCreateReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsSnapshotCreate(ctx, + reqData.SnapshotCreateReqData.Repository, + reqData.SnapshotCreateReqData.Snapshot, + reqData.SnapshotCreateReqData.WaitForCompletion, + reqData.SnapshotCreateReqData.ReqJson, + ) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.OperateSuccess, res) +} + +func (this *PluginUtilController) EsSnapshotDelete(ctx *gin.Context) { + var reqData dto2.SnapshotDeleteReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsSnapshotDelete(ctx, + reqData.SnapshotDeleteReqData.Repository, + reqData.SnapshotDeleteReqData.Snapshot) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.OperateSuccess, res) +} + +func (this *PluginUtilController) EsRestoreSnapshot(ctx *gin.Context) { + var reqData dto2.RestoreSnapshotReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsRestoreSnapshot(ctx, + reqData.RestoreSnapshotReqData.Repository, + reqData.RestoreSnapshotReqData.Snapshot, + reqData.RestoreSnapshotReqData.WaitForCompletion, + reqData.RestoreSnapshotReqData.ReqJson, + ) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.OperateSuccess, res) +} + +func (this *PluginUtilController) EsSnapshotStatus(ctx *gin.Context) { + var reqData dto2.SnapshotStatusReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsSnapshotStatus(ctx, + reqData.SnapshotStatusReqData.Repository, + reqData.SnapshotStatusReqData.Snapshot, + reqData.SnapshotStatusReqData.IgnoreUnavailable) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.SearchSuccess, res) +} + +func (this *PluginUtilController) EsSnapshotGetRepository(ctx *gin.Context) { + var reqData dto2.SnapshotGetRepositoryReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsSnapshotGetRepository(ctx, + reqData.SnapshotGetRepositoryReqData.Repository) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.SearchSuccess, res) +} + +func (this *PluginUtilController) EsSnapshotCreateRepository(ctx *gin.Context) { + var reqData dto2.SnapshotCreateRepositoryReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsSnapshotCreateRepository(ctx, + reqData.SnapshotCreateRepositoryReqData.Repository, + reqData.SnapshotCreateRepositoryReqData.ReqJson) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.OperateSuccess, res) +} + +func (this *PluginUtilController) EsSnapshotDeleteRepository(ctx *gin.Context) { + var reqData dto2.SnapshotDeleteRepositoryReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsSnapshotDeleteRepository(ctx, + reqData.SnapshotDeleteRepositoryReqData.Repository) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.OperateSuccess, res) +} + +func (this *PluginUtilController) EsPerformRequest(ctx *gin.Context) { + var reqData dto2.PerformRequest + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + req := reqData.Request + request, err := http.NewRequest(req.Method, req.URL.Path, bytes.NewReader([]byte(req.JsonBody))) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + request.Header = req.Header + request.PostForm = req.PostForm + request.Form = req.Form + request.MultipartForm = req.MultipartForm + request.Method = req.Method + request.URL = req.URL + + res, err := esI.EsPerformRequest(ctx, request) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.OperateSuccess, res) +} + +func (this *PluginUtilController) EsGetIndices(ctx *gin.Context) { + var reqData dto2.GetIndicesReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsGetIndices(ctx, + reqData.GetIndicesReqData.CatIndicesRequest) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.SearchSuccess, res) +} + +func (this *PluginUtilController) EsCatHealth(ctx *gin.Context) { + var reqData dto2.CatHealthReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsCatHealth(ctx, + reqData.CatHealthReqData.CatRequest) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.SearchSuccess, res) +} + +func (this *PluginUtilController) EsCatShards(ctx *gin.Context) { + var reqData dto2.CatShardsReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsCatShards(ctx, + reqData.CatShardsReqData.CatRequest) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.SearchSuccess, res) +} + +func (this *PluginUtilController) EsCatCount(ctx *gin.Context) { + var reqData dto2.CatCountReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsCatCount(ctx, + reqData.CatCountReqData.CatRequest) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.SearchSuccess, res) +} + +func (this *PluginUtilController) EsCatAllocationRequest(ctx *gin.Context) { + var reqData dto2.CatAllocationRequest + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsCatAllocationRequest(ctx, + reqData.CatAllocationRequestData.CatRequest) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.SearchSuccess, res) +} + +func (this *PluginUtilController) EsCatAliases(ctx *gin.Context) { + var reqData dto2.CatAliasesReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsCatAliases(ctx, + reqData.CatAliasesReqData.CatRequest) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.SearchSuccess, res) +} + +func (this *PluginUtilController) EsDelete(ctx *gin.Context) { + var reqData dto2.DeleteReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsDelete(ctx, + reqData.DeleteReqData.DeleteRequest) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.OperateSuccess, res) +} + +func (this *PluginUtilController) EsUpdate(ctx *gin.Context) { + var reqData dto2.UpdateReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsUpdate(ctx, + reqData.UpdateReqData.UpdateRequest, + reqData.UpdateReqData.Body) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.OperateSuccess, res) +} + +func (this *PluginUtilController) EsCreate(ctx *gin.Context) { + var reqData dto2.CreateReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsCreate(ctx, + reqData.CreateReqData.CreateRequest, + reqData.CreateReqData.Body) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.OperateSuccess, res) +} + +func (this *PluginUtilController) EsSearch(ctx *gin.Context) { + var reqData dto2.SearchReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsSearch(ctx, + reqData.SearchReqData.SearchRequest, + reqData.SearchReqData.Query) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.SearchSuccess, res) +} + +func (this *PluginUtilController) EsIndicesPutSettingsRequest(ctx *gin.Context) { + var reqData dto2.IndicesPutSettingsRequest + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsIndicesPutSettingsRequest(ctx, + reqData.IndicesPutSettingsRequestData.IndexSettingsRequest, + reqData.IndicesPutSettingsRequestData.Body) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.OperateSuccess, res) +} + +func (this *PluginUtilController) EsCreateIndex(ctx *gin.Context) { + var reqData dto2.CreateIndexReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsCreateIndex(ctx, + reqData.CreateIndexReqData.IndexCreateRequest, + reqData.CreateIndexReqData.Body) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.OperateSuccess, res) +} + +func (this *PluginUtilController) EsDeleteIndex(ctx *gin.Context) { + var reqData dto2.DeleteIndexReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsDeleteIndex(ctx, + reqData.DeleteIndexReqData.IndicesDeleteRequest) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.OperateSuccess, res) +} + +func (this *PluginUtilController) EsReindex(ctx *gin.Context) { + var reqData dto2.ReindexReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsReindex(ctx, + reqData.ReindexReqData.ReindexRequest, + reqData.ReindexReqData.Body) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.OperateSuccess, res) +} + +func (this *PluginUtilController) EsIndicesGetSettingsRequest(ctx *gin.Context) { + var reqData dto2.IndicesGetSettingsRequestReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsIndicesGetSettingsRequest(ctx, + reqData.IndicesGetSettingsRequestReqData.IndicesGetSettingsRequest) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.SearchSuccess, res) +} + +func (this *PluginUtilController) EsPutMapping(ctx *gin.Context) { + var reqData dto2.PutMappingReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsPutMapping(ctx, + reqData.PutMappingReqData.IndicesPutMappingRequest, + reqData.PutMappingReqData.Body) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.OperateSuccess, res) +} + +func (this *PluginUtilController) EsGetMapping(ctx *gin.Context) { + var reqData dto2.GetMappingReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsGetMapping(ctx, + reqData.GetMappingReqData.IndexNames) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.SearchSuccess, res) +} + +func (this *PluginUtilController) EsGetAliases(ctx *gin.Context) { + var reqData dto2.GetAliasesReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsGetAliases(ctx, + reqData.GetAliasesReqData.IndexNames) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.SearchSuccess, res) +} + +func (this *PluginUtilController) EsAddAliases(ctx *gin.Context) { + var reqData dto2.AddAliasesReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsAddAliases(ctx, + reqData.AddAliasesReqData.IndexName, + reqData.AddAliasesReqData.AliasName) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.OperateSuccess, res) +} + +func (this *PluginUtilController) EsRemoveAliases(ctx *gin.Context) { + var reqData dto2.RemoveAliasesReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsRemoveAliases(ctx, + reqData.RemoveAliasesReqData.IndexName, + reqData.RemoveAliasesReqData.AliasName) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.OperateSuccess, res) +} + +func (this *PluginUtilController) EsMoveToAnotherIndexAliases(ctx *gin.Context) { + var reqData dto2.MoveToAnotherIndexAliasesReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsMoveToAnotherIndexAliases(ctx, + reqData.MoveToAnotherIndexAliasesReqData.Body) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.OperateSuccess, res) +} + +func (this *PluginUtilController) EsTaskList(ctx *gin.Context) { + var reqData dto2.TaskListReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsTaskList(ctx) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.SearchSuccess, res) +} + +func (this *PluginUtilController) EsTasksCancel(ctx *gin.Context) { + var reqData dto2.TasksCancelReq + + err := ctx.BindJSON(&reqData) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + res, err := esI.EsTasksCancel(ctx, + reqData.TasksCancelReqData.TaskId) + if err != nil { + this.ErrorProtobuf(ctx, errors.WithStack(err)) + return + } + + this.SuccessProtobuf(ctx, response.SearchSuccess, res) +} + +// 进行增删改等操作 +func (this *PluginUtilController) MysqlExecSql(ctx *gin.Context) { + var reqData dto2.MysqlExecReq + + err := ctx.BindJSON(&reqData) + + if err != nil { + this.Error(ctx, err) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.Error(ctx, err) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.Error(ctx, err) + return + } + + rowsAffected, err := esI.MysqlExecSql(ctx, reqData.DbName, reqData.Sql, reqData.Args...) + if err != nil { + this.Error(ctx, err) + return + } + + res := vo2.MysqlExecSqlRes{ + RowsAffected: rowsAffected, + } + + this.Success(ctx, response.OperateSuccess, res) +} + +// 进行查询操作 +func (this *PluginUtilController) MysqlSelectSql(ctx *gin.Context) { + var reqData dto2.MysqlSelectReq + + err := ctx.BindJSON(&reqData) + + if err != nil { + this.Error(ctx, err) + return + } + + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.Error(ctx, err) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.Error(ctx, err) + return + } + + res, err := esI.MysqlSelectSql(ctx, reqData.DbName, reqData.Sql, reqData.Args...) + if err != nil { + this.Error(ctx, err) + return + } + this.Success(ctx, response.SearchSuccess, vo2.MysqlSelectSqlRes{Result: res}) +} + +// 进行查询操作 +func (this *PluginUtilController) MysqlFirstSql(ctx *gin.Context) { + var reqData dto2.MysqlSelectReq + + err := ctx.BindJSON(&reqData) + + if err != nil { + this.Error(ctx, err) + return + } + + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.Error(ctx, err) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.Error(ctx, err) + return + } + + res, err := esI.MysqlFirstSql(ctx, reqData.DbName, reqData.Sql, reqData.Args...) + if err != nil { + this.Error(ctx, err) + return + } + + this.Success(ctx, response.SearchSuccess, vo2.MysqlFirstSqlRes{Result: res}) +} + +func (this *PluginUtilController) RedisExecCommand(ctx *gin.Context) { + var reqData dto2.RedisExecReq + + err := ctx.BindJSON(&reqData) + + if err != nil { + this.ErrorProtobuf(ctx, err) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, err) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, err) + return + } + + res, err := esI.RedisExecCommand(ctx, reqData.DbName, reqData.Args...) + if err != nil { + this.ErrorProtobuf(ctx, err) + return + } + + this.SuccessProtobufByAny(ctx, response.OperateSuccess, map[string]interface{}{"data": res}) +} + +func (this *PluginUtilController) MongoExecCommand(ctx *gin.Context) { + var reqData dto2.MongoExecReq + + err := ctx.BindJSON(&reqData) + + if err != nil { + this.ErrorProtobuf(ctx, err) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.ErrorProtobuf(ctx, err) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.ErrorProtobuf(ctx, err) + return + } + + res, err := esI.ExecMongoCommand(ctx, reqData.DbName, reqData.Command, reqData.Timeout) + if err != nil { + this.ErrorProtobuf(ctx, err) + return + } + + this.SuccessProtobufByAny(ctx, response.SearchSuccess, res) +} + +func (this *PluginUtilController) ShowMongoDbs(ctx *gin.Context) { + var reqData dto2.ShowMongoDbsReq + + err := ctx.BindJSON(&reqData) + + if err != nil { + this.Error(ctx, err) + return + } + esConnect, err := this.esClientService.GetEsClientByID(ctx, reqData.EsConnectData.EsConnect, reqData.EsConnectData.UserID) + if err != nil { + this.Error(ctx, err) + return + } + + esI, err := factory.NewEsService(esConnect.ToEsSdkCfg(this.cfg, reqData.EsConnectData.EsConnect)) + if err != nil { + this.Error(ctx, err) + return + } + + res, err := esI.ShowMongoDbs(ctx) + if err != nil { + this.Error(ctx, err) + return + } + + this.Success(ctx, response.SearchSuccess, res) +} diff --git a/pkg/api/ws_controller.go b/pkg/api/ws_controller.go new file mode 100644 index 0000000..ff3ef9f --- /dev/null +++ b/pkg/api/ws_controller.go @@ -0,0 +1,48 @@ +package api + +import ( + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/jwt_svr" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore" + "github.com/1340691923/ElasticView/pkg/services/ws_service" + "github.com/gin-gonic/gin" + "github.com/gorilla/websocket" + "log" + "net/http" +) + +var upgrader = websocket.Upgrader{ + CheckOrigin: func(r *http.Request) bool { + return true + }, +} + +type WsController struct { + log *logger.AppLogger + cfg *config.Config + orm *sqlstore.SqlStore + jwtSvr *jwt_svr.Jwt + wsService *ws_service.WsService +} + +func NewWsController(log *logger.AppLogger, cfg *config.Config, orm *sqlstore.SqlStore, jwtSvr *jwt_svr.Jwt, wsService *ws_service.WsService) *WsController { + return &WsController{log: log, cfg: cfg, orm: orm, jwtSvr: jwtSvr, wsService: wsService} +} + +func (this *WsController) WsAction(ctx *gin.Context) { + c, err := upgrader.Upgrade(ctx.Writer, ctx.Request, nil) + if err != nil { + log.Print("upgrade:", err) + this.log.Sugar().Errorf("err", err) + return + } + defer c.Close() + /*cliams, err := this.jwtSvr.ParseToken(util.GetToken(ctx)) + if err != nil { + this.log.Sugar().Errorf("err", err) + + return + }*/ + this.wsService.InitConnect(c, ctx, 1, 1) +} diff --git a/pkg/infrastructure/access_control/rbac.go b/pkg/infrastructure/access_control/rbac.go new file mode 100644 index 0000000..e2cce98 --- /dev/null +++ b/pkg/infrastructure/access_control/rbac.go @@ -0,0 +1,84 @@ +package access_control + +import ( + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore" + + "github.com/casbin/casbin/v2" + "github.com/casbin/casbin/v2/model" + gormadapter "github.com/casbin/gorm-adapter/v3" +) + +var text = ` +[request_definition] + r = sub, obj, act + +[policy_definition] + p = sub, obj, act + +[policy_effect] + e = some(where (p.eft == allow)) + +[matchers] + m = r.sub == p.sub && keyMatch(r.obj, p.obj) && (r.act == p.act || p.act == "*") || r.sub == "1" + ` + +type Rbac struct { + cfg *config.Config + log *logger.AppLogger + enforcer *casbin.SyncedEnforcer + orm *sqlstore.SqlStore +} + +// 初始化项目启动任务 +func NewRbac(cfg *config.Config, log *logger.AppLogger, orm *sqlstore.SqlStore) (*Rbac, error) { + obj := &Rbac{ + cfg: cfg, + log: log, + orm: orm, + enforcer: nil, + } + + var dbSource = cfg.CreateDbDSN() + + obj.log = log.Named("rbac") + + policy, err := model.NewModelFromString(text) + if err != nil { + return nil, err + } + + adapter, err := gormadapter.NewAdapterByDB(orm.DB) + if err != nil { + return nil, err + } + obj.enforcer, err = casbin.NewSyncedEnforcer(policy, adapter) + + if err != nil { + return nil, err + } + obj.log.Info(fmt.Sprintf("Rbac组件初始化成功!连接:%v", dbSource)) + return obj, nil +} + +func (this *Rbac) LoadPolicy() error { + return this.enforcer.LoadPolicy() +} + +func (this *Rbac) Enforce(rvals ...interface{}) (bool, error) { + return this.enforcer.Enforce(rvals...) +} + +func (this *Rbac) AddPolicy(params ...interface{}) (bool, error) { + return this.enforcer.AddPolicy(params...) +} + +func (this *Rbac) RemoveFilteredPolicy(fieldIndex int, fieldValues ...string) (bool, error) { + return this.enforcer.RemoveFilteredPolicy(fieldIndex, fieldValues...) +} + +func (this *Rbac) SavePolicy() error { + return this.enforcer.SavePolicy() +} diff --git a/pkg/infrastructure/config/config.go b/pkg/infrastructure/config/config.go new file mode 100644 index 0000000..897240f --- /dev/null +++ b/pkg/infrastructure/config/config.go @@ -0,0 +1,300 @@ +package config + +import ( + "fmt" + "github.com/1340691923/ElasticView/pkg/util" + "github.com/goccy/go-json" + "github.com/pkg/errors" + "github.com/spf13/viper" + "io/ioutil" + "log" + "net/url" + "os" + "path/filepath" + "strings" +) + +var TranslationCfg = map[string]map[string]interface{}{} + +const ( + MysqlDbTyp = "mysql" + SqliteDbTyp = "sqlite3" +) + +type CommandLineArgs struct { + IconData []byte + HomePath string + ConfigFile string + Profile bool + ProfileAddr string + ProfilePort uint64 + Tracing bool + TracingFile string + CmdName string + AdminPwd string +} + +type Config struct { + IconData []byte + HomePath string + CmdName string + StoreFileDir string `json:"storeFileDir"` + EnableLogEs bool `json:"enableLogEs"` + EnableLogEsRes bool `json:"enableLogEsRes"` + RootUrl string `json:"rootUrl"` + Log struct { + StorageDays int `json:"storageDays"` + LogDir string `json:"logDir"` + PluginLogDir string `json:"pluginLogDir"` + } `json:"log"` + CheckForevUpdates bool `json:"checkForevUpdates"` + CheckForPluginUpdates bool `json:"checkForPluginUpdates"` + Port int `json:"port"` + PluginRpcPort int `json:"pluginRpcPort"` + DbType string `json:"dbType"` + Sqlite struct { + DbPath string `json:"dbPath"` + DbName string `json:"dbName"` + } `json:"sqlite"` + Mysql struct { + Username string `json:"username"` + Pwd string `json:"pwd"` + IP string `json:"ip"` + Port string `json:"port"` + DbName string `json:"dbName"` + MaxOpenConns int `json:"maxOpenConns"` + MaxIdleConns int `json:"maxIdleConns"` + } `json:"mysql"` + AppSecret string `json:"appSecret"` + Version string `json:"version"` + DeBug bool `json:"deBug"` + EsPwdSecret string `json:"esPwdSecret"` + EvKey string `json:"evKey"` //易帷key + Plugin Plugin `json:"plugin"` + WatermarkContent string `json:"watermarkContent"` + Translation Translation `json:"translation"` + OAuth OAuth `json:"oAuth"` +} + +type OAuth struct { + WorkWechat WorkWechat `json:"workWechat"` +} + +type WorkWechat struct { + Corpid string `json:"corpid"` + AgentId string `json:"agentId"` + Secert string `json:"secert"` + Enable bool `json:"enable"` +} + +type Translation struct { + Lang string `json:"lang"` + CfgDir string `json:"cfgDir"` +} + +type Plugin struct { + LoadPath string `json:"loadPath"` + StorePath string `json:"storePath"` +} + +func (this *Plugin) Error() error { + if this.LoadPath == "" { + return errors.New("配置文件中插件配置文件夹没有添加") + } + if this.StorePath == "" { + return errors.New("配置文件中插件数据存储目录配置没有添加") + } + if !util.CheckFileIsExist(this.LoadPath) { + os.MkdirAll(this.LoadPath, os.ModePerm) + } + if !util.CheckFileIsExist(this.StorePath) { + os.MkdirAll(this.StorePath, os.ModePerm) + } + + return nil +} + +func (this *Config) GetRootUrl() string { + if this.RootUrl == "" { + return "http://localhost:8090/" + } + + if this.RootUrl[len(this.RootUrl)-1] != '/' { + this.RootUrl += "/" + } + + return this.RootUrl +} + +func (this *Config) ParseAppUrlAndSubUrl() (string, string, error) { + appUrl := this.GetRootUrl() + + if appUrl[len(appUrl)-1] != '/' { + appUrl += "/" + } + + url, err := url.Parse(appUrl) + if err != nil { + log.Println("err", err, appUrl) + return "", "", err + } + + appSubUrl := strings.TrimSuffix(url.Path, "/") + return appUrl, appSubUrl, nil +} + +func (this *Config) GetDbType() string { + if this.DbType == "mysql" { + return MysqlDbTyp + } + return SqliteDbTyp +} + +func (cfg *Config) CreateDbDSN() string { + var DSN string + if cfg.DbType == SqliteDbTyp { + dataDir := filepath.Join(util.GetCurrentDirectory(), "data") + + if cfg.Sqlite.DbPath != "" { + dataDir = cfg.Sqlite.DbPath + } + + if !util.CheckFileIsExist(dataDir) { + os.MkdirAll(dataDir, os.ModePerm) + } + + DSN = filepath.Join(dataDir, cfg.Sqlite.DbName) + "?_pragma=charset(utf8)&_pragma=parse_time(true)&_pragma=_busy_timeout(9999999)&mode=wal" + } else { + DSN = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?parseTime=true", + cfg.Mysql.Username, + cfg.Mysql.Pwd, + cfg.Mysql.IP, + cfg.Mysql.Port, + cfg.Mysql.DbName, + ) + } + + return DSN +} + +var ( + vip *viper.Viper +) + +func InitConfig(opt *CommandLineArgs) (cfg *Config, err error) { + cfg = new(Config) + cf := filepath.Join(opt.HomePath, opt.ConfigFile) + if filepath.IsAbs(opt.ConfigFile) { + cf = opt.ConfigFile + } + + vip = viper.New() + vip.SetConfigFile(cf) + if err := vip.ReadInConfig(); err != nil { + return nil, errors.Wrap(err, "ReadInConfig") + } + if err := vip.Unmarshal(cfg); err != nil { + return nil, errors.Wrap(err, "config Unmarshal err") + } + cfg.HomePath = opt.HomePath + cfg.IconData = opt.IconData + cfg.CmdName = opt.CmdName + + if cfg.Translation.CfgDir != "" { + + err = filepath.Walk(cfg.Translation.CfgDir, func(path string, info os.FileInfo, err error) error { + + if err != nil { + return errors.WithStack(err) + } + + if info.IsDir() { + return nil + } + + fileName := info.Name() + + ext := filepath.Ext(fileName) + nameWithoutExt := strings.TrimSuffix(fileName, ext) + + if ext != ".json" { + return nil + } + filePath := filepath.Join(cfg.Translation.CfgDir, fileName) + + fileBytes, err := ioutil.ReadFile(filePath) + + if err != nil { + return errors.WithStack(err) + } + + var data map[string]interface{} + + err = json.Unmarshal(fileBytes, &data) + if err != nil { + return errors.WithStack(err) + } + TranslationCfg[nameWithoutExt] = data + + return nil + }) + + if err != nil { + return nil, errors.Wrap(err, "load i18n cfg err") + } + + } + + log.Println("配置文件加载成功", cf) + return cfg, nil +} + +func (this *Config) SetEvKey(evKey string) *Config { + this.EvKey = evKey + vip.Set("evKey", evKey) + return this +} + +func (this *Config) SetWorkWechatSecert(secert string) *Config { + this.OAuth.WorkWechat.Secert = secert + vip.Set("oauth.workWechat.secert", secert) + return this +} + +func (this *Config) SetWorkWechatCorpid(corpid string) *Config { + this.OAuth.WorkWechat.Corpid = corpid + vip.Set("oauth.workWechat.corpid", corpid) + return this +} + +func (this *Config) SetWorkWechatAgentId(agentId string) *Config { + this.OAuth.WorkWechat.AgentId = agentId + vip.Set("oauth.workWechat.agentId", agentId) + return this +} + +func (this *Config) SetWorkWechatEnable(enable bool) *Config { + this.OAuth.WorkWechat.Enable = enable + vip.Set("oauth.workWechat.enable", enable) + return this +} + +func (this *Config) GetViperInstance() *viper.Viper { + return vip +} + +func (this *Config) GetLang() string { + if this.Translation.Lang == "" { + this.Translation.Lang = "zh-cn" + } + return this.Translation.Lang +} + +func (this *Config) GetStorePath(tag string) string { + dir := filepath.Join(this.StoreFileDir, tag) + + if !util.CheckFileIsExist(dir) { + os.MkdirAll(dir, os.ModePerm) + } + return dir +} diff --git a/pkg/infrastructure/config/version.go b/pkg/infrastructure/config/version.go new file mode 100644 index 0000000..d860c70 --- /dev/null +++ b/pkg/infrastructure/config/version.go @@ -0,0 +1,4 @@ +package config + +const Version = "v0.0.5" + diff --git a/pkg/infrastructure/dao/es_connect_dao.go b/pkg/infrastructure/dao/es_connect_dao.go new file mode 100644 index 0000000..f3499c8 --- /dev/null +++ b/pkg/infrastructure/dao/es_connect_dao.go @@ -0,0 +1,7 @@ +package dao + +import "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore" + +type EsConnectDao struct { + orm *sqlstore.SqlStore +} diff --git a/pkg/infrastructure/dao/es_link_v2_dao.go b/pkg/infrastructure/dao/es_link_v2_dao.go new file mode 100644 index 0000000..4edc9a7 --- /dev/null +++ b/pkg/infrastructure/dao/es_link_v2_dao.go @@ -0,0 +1,70 @@ +package dao + +import ( + "context" + "github.com/1340691923/ElasticView/pkg/infrastructure/model" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore" + "github.com/1340691923/ElasticView/pkg/util" + "github.com/pkg/errors" + "gorm.io/gorm" +) + +// EsLinkModel es连接信息表 +type EsLinkV2Dao struct { + orm *sqlstore.SqlStore +} + +func NewEsLinkV2Dao(orm *sqlstore.SqlStore) *EsLinkV2Dao { + return &EsLinkV2Dao{orm: orm} +} + +func (this *EsLinkV2Dao) GetEsConnectDataByRoleId(ctx context.Context, roleId []int, id int) (esConnectTmp *model.EsConnect, err error) { + esConnectTmp = new(model.EsConnect) + SQL := ` +select ip,user,pwd,version,rootpem,certpem,keypem,header from + ( +select * from +(select es_link_id,role_cfg_id,id as relation_id from eslink_role_cfg_reletion ) + j1 +left join +( +select * from +(select id, user,pwd,rootpem ,certpem,keypem,remark as cfg_remark,header from eslink_cfg_v2 ) ecv +left join +(select role_id,es_link_cfg_id from gm_role_eslink_cfg_v2) grec +on ecv.id = grec.es_link_cfg_id +) j2 +on j1.role_cfg_id = j2.id +) +j1 +left join +( +select id,ip,remark,version from es_link_v2 elv +) j3 +on j1.es_link_id = j3.id +where role_id in (?) and relation_id = ? and remark is not null +` + + err = this. + orm. + Raw(SQL, roleId, id). + Scan(&esConnectTmp). + WithContext(ctx). + Error + + if util.FilterMysqlNilErr(err) { + err = errors.WithStack(err) + return nil, err + } + return +} + +func (this *EsLinkV2Dao) Save(ctx context.Context, tx *gorm.DB, data *model.EsLinkV2) error { + err := tx.Save(data).WithContext(ctx).Error + err = errors.WithStack(err) + return err +} + +func (this *EsLinkV2Dao) Delete(ctx context.Context, tx *gorm.DB, id int) error { + return errors.WithStack(tx.Where("id = ?", id).Delete(model.EsLinkV2{}).WithContext(ctx).Error) +} diff --git a/pkg/infrastructure/dao/eslink_cfg_v2_dao.go b/pkg/infrastructure/dao/eslink_cfg_v2_dao.go new file mode 100644 index 0000000..7aceefa --- /dev/null +++ b/pkg/infrastructure/dao/eslink_cfg_v2_dao.go @@ -0,0 +1,51 @@ +package dao + +import ( + "context" + "github.com/1340691923/ElasticView/pkg/infrastructure/model" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore" + "github.com/pkg/errors" + "gorm.io/gorm" +) + +type EslinkCfgV2Dao struct { + orm *sqlstore.SqlStore +} + +func NewEslinkCfgV2Dao(orm *sqlstore.SqlStore) *EslinkCfgV2Dao { + return &EslinkCfgV2Dao{orm: orm} +} + +func (this *EslinkCfgV2Dao) SelectByCreateBy(ctx context.Context, userid int) ([]model.EslinkCfgV2, error) { + var esCfgs []model.EslinkCfgV2 + err := this.orm.Raw("select * from eslink_cfg_v2 where create_by = ?", userid).Scan(&esCfgs).WithContext(ctx).Error + if err != nil { + return nil, errors.WithStack(err) + } + return esCfgs, nil +} + +func (this *EslinkCfgV2Dao) UpdateById(ctx context.Context, tx *gorm.DB, update map[string]interface{}, id int) error { + err := tx.Model(model.EslinkCfgV2{}).Where("id=?", id).Updates(update).WithContext(ctx).Error + if err != nil { + return errors.WithStack(err) + } + return nil +} + +func (this *EslinkCfgV2Dao) FindById(ctx context.Context, id int) (model.EslinkCfgV2, error) { + var eslinkCfgV2 model.EslinkCfgV2 + err := this.orm.Model(model.EslinkCfgV2{}).Where("id=?", id).Find(&eslinkCfgV2).WithContext(ctx).Error + if err != nil { + return eslinkCfgV2, errors.WithStack(err) + } + return eslinkCfgV2, nil +} + +func (this *EslinkCfgV2Dao) Save(ctx context.Context, data *model.EslinkCfgV2) error { + err := this.orm.Save(data).WithContext(ctx).Error + if err != nil { + return errors.WithStack(err) + } + return nil +} diff --git a/pkg/infrastructure/dao/eslink_role_cfg_reletion_dao.go b/pkg/infrastructure/dao/eslink_role_cfg_reletion_dao.go new file mode 100644 index 0000000..65db779 --- /dev/null +++ b/pkg/infrastructure/dao/eslink_role_cfg_reletion_dao.go @@ -0,0 +1,70 @@ +package dao + +import ( + "context" + "github.com/1340691923/ElasticView/pkg/infrastructure/model" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore" + "github.com/pkg/errors" + "gorm.io/gorm" + "time" +) + +type EslinkRoleCfgReletionDao struct { + orm *sqlstore.SqlStore +} + +func NewEslinkRoleCfgReletion(orm *sqlstore.SqlStore) *EslinkRoleCfgReletionDao { + return &EslinkRoleCfgReletionDao{orm: orm} +} + +func (this *EslinkRoleCfgReletionDao) DeleteEsCfgRelation(ctx context.Context, tx *gorm.DB, relationId int) (err error) { + + err = tx.Debug(). + Where("id = ?", relationId). + Delete(model.EslinkRoleCfgReletion{}). + WithContext(ctx).Error + if err != nil { + err = errors.WithStack(err) + return + } + return +} + +func (this *EslinkRoleCfgReletionDao) DeleteByEsLinkId(ctx context.Context, tx *gorm.DB, id int) (err error) { + err = tx. + Where("es_link_id = ?", id). + Delete(model.EslinkRoleCfgReletion{}).WithContext(ctx). + Error + if err != nil { + err = errors.WithStack(err) + return + } + return +} + +func (this *EslinkRoleCfgReletionDao) UpdateByEslLinkId(ctx context.Context, roleCfgId, esLinkID int) error { + err := this.orm. + Model(model.EslinkRoleCfgReletion{}). + Where("es_link_id = ?", esLinkID). + Update("role_cfg_id", roleCfgId).WithContext(ctx). + Error + if err != nil { + err = errors.WithStack(err) + return err + } + return err +} + +func (this *EslinkRoleCfgReletionDao) Save(ctx context.Context, tx *gorm.DB, roleCfgId, esLinkID int) error { + err := tx.Create(&model.EslinkRoleCfgReletion{ + EsLinkId: esLinkID, + RoleCfgId: roleCfgId, + Created: time.Now(), + Updated: time.Now(), + }).WithContext(ctx).Error + if err != nil { + err = errors.WithStack(err) + return err + } + return err +} diff --git a/pkg/infrastructure/dao/ev_back_dao.go b/pkg/infrastructure/dao/ev_back_dao.go new file mode 100644 index 0000000..58f9eac --- /dev/null +++ b/pkg/infrastructure/dao/ev_back_dao.go @@ -0,0 +1,159 @@ +package dao + +import ( + "context" + "github.com/1340691923/ElasticView/pkg/infrastructure/eve_api" + "github.com/1340691923/ElasticView/pkg/infrastructure/eve_api/api" + "github.com/1340691923/ElasticView/pkg/infrastructure/eve_api/dto" + "github.com/1340691923/ElasticView/pkg/infrastructure/eve_api/vo" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/pkg/errors" + "github.com/spf13/cast" +) + +type EvBackDao struct { + log *logger.AppLogger + eveApi *eve_api.EvEApi +} + +func NewEvBackDao(log *logger.AppLogger, eveApi *eve_api.EvEApi) *EvBackDao { + return &EvBackDao{log: log, eveApi: eveApi} +} + +func (this *EvBackDao) GetEvAccessToken(ctx context.Context, evKey string) (string, error) { + res := vo.ApiCommonRes{ + Data: "", + } + err := this.eveApi.Request(ctx, api.GetEvAccessToken, &dto.EvKeyReq{EvKey: evKey}, &res) + if err != nil { + return "", errors.WithStack(err) + } + + if res.Error() != nil { + return "", errors.WithStack(res.Error()) + } + + token := cast.ToString(res.Data) + this.eveApi.SetAccessToken(token) + + return cast.ToString(res.Data), nil +} + +func (this *EvBackDao) GetPluginList(ctx context.Context, req *dto.FromEvPluginReq) (*vo.PluginListRes, error) { + res := vo.ApiCommonRes{Data: &vo.PluginListRes{}} + err := this.eveApi.Request(ctx, api.GetPluginList, req, &res) + if err != nil { + return nil, errors.WithStack(err) + } + + if res.Error() != nil { + return nil, errors.WithStack(res.Error()) + } + + return res.Data.(*vo.PluginListRes), nil +} + +func (this *EvBackDao) GetWxArticleList(ctx context.Context) (*vo.WxArticleList, error) { + + res := vo.ApiCommonRes{Data: &vo.WxArticleList{}} + err := this.eveApi.Request(ctx, api.GetWxArticleList, map[string]interface{}{}, &res) + if err != nil { + return nil, errors.WithStack(err) + } + + if res.Error() != nil { + return nil, errors.WithStack(res.Error()) + } + if res.Data == nil { + return nil, errors.New("暂无结果") + } + + return res.Data.(*vo.WxArticleList), nil +} + +func (this *EvBackDao) StarPlugin(ctx context.Context, req *dto.StarPlugin) error { + res := vo.ApiCommonRes{} + err := this.eveApi.Request(ctx, api.StarPlugin, req, &res) + if err != nil { + return errors.WithStack(err) + } + + if res.Error() != nil { + return errors.WithStack(res.Error()) + } + + return nil +} + +func (this *EvBackDao) GetEvMaxVersion(ctx context.Context) (*vo.GetEvMaxVersionRes, error) { + + res := vo.ApiCommonRes{Data: &vo.GetEvMaxVersionRes{}} + err := this.eveApi.Request(ctx, api.GetEvMaxVersion, &dto.Empty{}, &res) + if err != nil { + return nil, errors.WithStack(err) + } + + if res.Error() != nil { + return nil, errors.WithStack(res.Error()) + } + + return res.Data.(*vo.GetEvMaxVersionRes), nil +} + +func (this *EvBackDao) GetPluginDownloadUrl(ctx context.Context, req *dto.GetPluginDownloadUrlReq) (*vo.GetPluginDownloadUrlRes, error) { + res := vo.ApiCommonRes{Data: &vo.GetPluginDownloadUrlRes{}} + err := this.eveApi.Request(ctx, api.GetPluginDownloadUrl, req, &res) + if err != nil { + return nil, errors.WithStack(err) + } + + if res.Error() != nil { + return nil, errors.WithStack(res.Error()) + } + + return res.Data.(*vo.GetPluginDownloadUrlRes), nil +} + +func (this *EvBackDao) GetPluginInfo(ctx context.Context, req *dto.FormEvPluginInfoReq) (*vo.PublishRes, error) { + res := vo.ApiCommonRes{Data: &vo.PublishRes{}} + err := this.eveApi.Request(ctx, api.GetPluginInfo, req, &res) + if err != nil { + return nil, errors.WithStack(err) + } + + if res.Error() != nil { + return nil, errors.WithStack(res.Error()) + } + + return res.Data.(*vo.PublishRes), nil +} + +func (this *EvBackDao) GetEvPluginMaxVersion(ctx context.Context, pluginAlias string) (string, error) { + res := vo.ApiCommonRes{} + err := this.eveApi.Request(ctx, api.GetEvPluginMaxVersion, &dto.GetEvPluginMaxVersion{PluginAlias: pluginAlias}, &res) + if err != nil { + return "", errors.WithStack(err) + } + + if res.Error() != nil { + return "", errors.WithStack(res.Error()) + } + + return cast.ToString(res.Data), nil +} + +func (this *EvBackDao) GetEvPluginsMaxVersion(ctx context.Context, pluginIds []string) (map[string]interface{}, error) { + res := vo.ApiCommonRes{ + Data: map[string]interface{}{}, + } + err := this.eveApi.Request(ctx, api.GetEvPluginsMaxVersion, &dto.GetEvPluginsMaxVersion{PluginIds: pluginIds}, &res) + if err != nil { + return map[string]interface{}{}, errors.WithStack(err) + } + + if res.Error() != nil { + return map[string]interface{}{}, errors.WithStack(res.Error()) + } + + return res.Data.(map[string]interface{}), nil +} diff --git a/pkg/infrastructure/dao/gm_operater_log_dao.go b/pkg/infrastructure/dao/gm_operater_log_dao.go new file mode 100644 index 0000000..aafa08d --- /dev/null +++ b/pkg/infrastructure/dao/gm_operater_log_dao.go @@ -0,0 +1,13 @@ +package dao + +import ( + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore" +) + +type GmOperaterLogDao struct { + orm *sqlstore.SqlStore +} + +func NewGmOperaterLogDao(orm *sqlstore.SqlStore) *GmOperaterLogDao { + return &GmOperaterLogDao{orm: orm} +} diff --git a/pkg/infrastructure/dao/gm_role_dao.go b/pkg/infrastructure/dao/gm_role_dao.go new file mode 100644 index 0000000..46ed8fe --- /dev/null +++ b/pkg/infrastructure/dao/gm_role_dao.go @@ -0,0 +1,73 @@ +package dao + +import ( + "context" + "github.com/1340691923/ElasticView/pkg/infrastructure/model" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore" + "github.com/pkg/errors" + "gorm.io/gorm" +) + +type GmRoleDao struct { + orm *sqlstore.SqlStore +} + +func NewGmRoleDao(orm *sqlstore.SqlStore) *GmRoleDao { + return &GmRoleDao{orm: orm} +} + +// GetById +func (this *GmRoleDao) GetById(ctx context.Context, roleId int) (role *model.GmRole, err error) { + role = new(model.GmRole) + err = this.orm.Raw("select id,role_name,description,role_list from gm_role where id = ?;", roleId).Scan(&role).WithContext(ctx).Error + err = errors.WithStack(err) + return +} + +// Update +func (this *GmRoleDao) Update(ctx context.Context, gmRole model.GmRole) (err error) { + err = this.orm.Exec( + "update gm_role set role_name = ?,description=?,role_list=? where id = ?;", + gmRole.RoleName, gmRole.Description, gmRole.RoleList, gmRole.Id).WithContext(ctx).Error + err = errors.WithStack(err) + return +} + +// Delete +func (this *GmRoleDao) Delete(ctx context.Context, tx *gorm.DB, id int) (err error) { + err = tx.Exec("delete from gm_role where id = ? ;", id).WithContext(ctx).Error + err = errors.WithStack(err) + return +} + +// Insert +func (this *GmRoleDao) Insert(ctx context.Context, gmRole model.GmRole) (id int64, err error) { + err = this.orm.Raw( + "insert into gm_role (role_name,description,role_list) values (?,?,?) RETURNING id;", + gmRole.RoleName, gmRole.Description, gmRole.RoleList).Scan(&id).WithContext(ctx).Error + if err != nil { + err = errors.WithStack(err) + return + } + + return +} + +// Select +func (this *GmRoleDao) Select(ctx context.Context, isAdmin bool) (model []model.GmRole, err error) { + if isAdmin { + err = this.orm.Raw("select role_name,description,role_list,id from gm_role;").Scan(&model).WithContext(ctx).Error + } else { + err = this.orm.Raw("select role_name,description,role_list,id from gm_role where id != 1;").Scan(&model).WithContext(ctx).Error + } + err = errors.WithStack(err) + + return +} + +func (this *GmRoleDao) GetApis(ctx context.Context, roleId int) []string { + apis := []string{} + + this.orm.Raw("select v1 from casbin_rule where v0 = ?;", roleId).Scan(&apis) + return apis +} diff --git a/pkg/infrastructure/dao/gm_role_eslink_cfg_v2.go b/pkg/infrastructure/dao/gm_role_eslink_cfg_v2.go new file mode 100644 index 0000000..635f089 --- /dev/null +++ b/pkg/infrastructure/dao/gm_role_eslink_cfg_v2.go @@ -0,0 +1,61 @@ +package dao + +import ( + "context" + "github.com/1340691923/ElasticView/pkg/infrastructure/model" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore" + "github.com/pkg/errors" + "gorm.io/gorm" +) + +type GmRoleEslinkCfgV2Dao struct { + orm *sqlstore.SqlStore +} + +func NewGmRoleEslinkCfgV2Dao(orm *sqlstore.SqlStore) *GmRoleEslinkCfgV2Dao { + return &GmRoleEslinkCfgV2Dao{orm: orm} +} + +func (this *GmRoleEslinkCfgV2Dao) GetRoleIdById(ctx context.Context, id int) (roleIds []int, err error) { + err = this.orm.Raw("select role_id from gm_role_eslink_cfg_v2 where es_link_cfg_id = ?", id).Scan(&roleIds).WithContext(ctx).Error + if err != nil { + return nil, errors.WithStack(err) + } + return roleIds, nil +} + +func (this *GmRoleEslinkCfgV2Dao) QueryByRoleID(ctx context.Context, roleId int) (list []model.GmRoleEslinkCfgV2, err error) { + err = this.orm.Table("gm_role_eslink_cfg_v2").Where("role_id = ?", roleId).Find(&list).WithContext(ctx).Error + if err != nil { + return nil, errors.WithStack(err) + } + return list, nil +} + +func (this *GmRoleEslinkCfgV2Dao) DeleteByRoleID(ctx context.Context, tx *gorm.DB, roleId int) (err error) { + err = tx.Where("role_id = ?", roleId).Delete(model.GmRoleEslinkCfgV2{}).WithContext(ctx).Error + if err != nil { + return errors.WithStack(err) + } + return nil +} + +func (this *GmRoleEslinkCfgV2Dao) DeleteEslinkRoleCfgReletionByRoleID(ctx context.Context, tx *gorm.DB, roleId int) (err error) { + SQL := `delete from eslink_role_cfg_reletion where role_cfg_id in + ( + select id from gm_role_eslink_cfg_v2 where role_id = ? + )` + err = tx.Exec(SQL, roleId).WithContext(ctx).Error + if err != nil { + return errors.WithStack(err) + } + return +} + +func (this *GmRoleEslinkCfgV2Dao) DeleteByEsLinkCfgId(ctx context.Context, tx *gorm.DB, cfgId int) (err error) { + err = tx.Where("es_link_cfg_id = ?", cfgId).Delete(model.GmRoleEslinkCfgV2{}).WithContext(ctx).Error + if err != nil { + return errors.WithStack(err) + } + return nil +} diff --git a/pkg/infrastructure/dao/gm_user.go b/pkg/infrastructure/dao/gm_user.go new file mode 100644 index 0000000..1bc4c78 --- /dev/null +++ b/pkg/infrastructure/dao/gm_user.go @@ -0,0 +1,207 @@ +package dao + +import ( + "context" + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/model" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore" + "github.com/1340691923/ElasticView/pkg/util" + "github.com/pkg/errors" + "gorm.io/gorm" + "time" +) + +// GmUserModel +type GmUserDao struct { + orm *sqlstore.SqlStore +} + +func NewGmUserDao(orm *sqlstore.SqlStore) *GmUserDao { + return &GmUserDao{orm: orm} +} + +// 是否存在该用户 +func (this *GmUserDao) Exsit(ctx context.Context, user model.GmUserModel) (exsit bool, err error) { + var count int + + err = this.orm.Raw("select count(*) from gm_user where username = ? and is_ban = 0 limit 1;", user.Username).Scan(&count).WithContext(ctx).Error + + err = errors.WithStack(err) + + exsit = count > 0 + return +} + +// 登录 +func (this *GmUserDao) GetUserByUP(ctx context.Context, user model.GmUserModel) (gmUser model.GmUserModel, err error) { + err = this.orm.Raw("select id,username,password,realname,is_ban from gm_user where username = ? and password = ? limit 1;", user.Username, user.GetPassword()).WithContext(ctx).Scan(&gmUser).Error + + if err != nil { + err = errors.WithStack(err) + return + } + + return +} + +func (this *GmUserDao) UpdateLastLoginTime(ctx context.Context, user model.GmUserModel) (err error) { + err = this.orm.Model(model.GmUserModel{}).Where("id = ?", user.Id). + Updates(map[string]interface{}{"last_login_time": time.Now().Format(util.TimeFormat)}). + WithContext(ctx). + Error + err = errors.WithStack(err) + return +} + +// 获取用户信息 +func (this *GmUserDao) GetUserByUserName(ctx context.Context, userName string) (gmUser model.GmUserModel, err error) { + err = this.orm.Raw("select id,username,password,realname,is_ban from gm_user where username = ? limit 1;", userName).WithContext(ctx).Scan(&gmUser).Error + err = errors.WithStack(err) + return +} + +// 通过id查询用户信息 +func (this *GmUserDao) GetUserById(ctx context.Context, id int) (gmUser model.GmUserModel, err error) { + err = this.orm.Raw("select id,username,password,realname,is_ban from gm_user where id = ?;", id).WithContext(ctx).Scan(&gmUser).Error + err = errors.WithStack(err) + return +} + +// 新增用户 +func (this *GmUserDao) Insert(ctx context.Context, orm *gorm.DB, gmUser model.GmUserModel) (id int64, err error) { + + if gmUser.Password == "" { + gmUser.Password = util.GetUUid() + } + + err = orm.Raw("insert into gm_user"+ + "(username,password,realname,avatar,email,work_wechat_uid) "+ + "values(?,?,?,?,?,?) RETURNING id", + gmUser.Username, gmUser.GetPassword(), + gmUser.Realname, gmUser.Avatar, + gmUser.Email, gmUser.WorkWechatUid). + WithContext(ctx).Scan(&id).Error + if err != nil { + err = errors.WithStack(err) + return + } + return +} + +// Update +func (this *GmUserDao) Update(ctx context.Context, gmUser model.GmUserModel) (err error) { + + err = this.orm.Exec("update gm_user set "+ + "username = ?,realname=?,avatar=?,email =?,work_wechat_uid=? where id = ? ;", + gmUser.Username, gmUser.Realname, gmUser.Avatar, gmUser.Email, gmUser.WorkWechatUid, + gmUser.Id).WithContext(ctx).Error + err = errors.WithStack(err) + return +} + +type SealType int + +const ( + Ban SealType = 1 + UnBan SealType = 0 +) + +// Update +func (this *GmUserDao) SealUser(ctx context.Context, id int, sealType SealType) (err error) { + + err = this.orm.Exec("update gm_user set is_ban=? where id = ? ;", sealType, id).WithContext(ctx).Error + err = errors.WithStack(err) + return +} + +// Update +func (this *GmUserDao) UpdatePassById(ctx context.Context, gmUser model.GmUserModel) (err error) { + + err = this.orm.Exec("update gm_user set password=? where id = ? ;", gmUser.GetPassword(), gmUser.Id).WithContext(ctx).Error + err = errors.WithStack(err) + return +} + +// Select +func (this *GmUserDao) Select(ctx context.Context, isAdmin bool) (gmUser []model.GmUserModel, err error) { + if isAdmin { + err = this.orm.Raw("select * from gm_user;").Scan(&gmUser).WithContext(ctx).Error + } else { + err = this.orm.Raw("select * from gm_user where id != 1;").Scan(&gmUser).WithContext(ctx).Error + } + err = errors.WithStack(err) + return +} + +// Delete +func (this *GmUserDao) Delete(ctx context.Context, tx *gorm.DB, id int) (err error) { + err = tx.Where("id = ?", id).Delete(&model.GmUserModel{}).WithContext(ctx).Error + if err != nil { + err = errors.WithStack(err) + return + } + return +} + +func (this *GmUserDao) GetByField(field string, value interface{}) (gmUser model.GmUserModel, err error) { + err = this.orm.Model(&model.GmUserModel{}).Where(fmt.Sprintf(" %s = ? ", field), value).Scan(&gmUser).Error + if err != nil { + err = errors.WithStack(err) + return + } + return gmUser, nil +} + +func (this *GmUserDao) GetRolesFromUser(userID int) ([]int, error) { + type Role struct { + RoleId int `grom:"role_id"` + } + var roles []Role + roleIds := []int{} + + err := this.orm. + Raw(`select role_id from user_role_relation where user_id = ?`, + userID).Scan(&roles).Error + if err != nil { + return roleIds, errors.WithStack(err) + } + for _, v := range roles { + roleIds = append(roleIds, v.RoleId) + } + return roleIds, nil +} + +func (this *GmUserDao) RemoveUserRoles(tx *gorm.DB, userID int) (err error) { + return errors.WithStack(tx.Where("user_id = ?", userID).Delete(model.UserRoleRelationModel{}).Error) +} + +func (this *GmUserDao) RemoveRoles(tx *gorm.DB, roleId int) (err error) { + return errors.WithStack(tx.Where("role_id = ?", roleId).Delete(model.UserRoleRelationModel{}).Error) +} + +func (this *GmUserDao) AddRolesToUser(tx *gorm.DB, userID int, roles []int) (err error) { + + err = this.RemoveUserRoles(tx, userID) + if err != nil { + return errors.WithStack(err) + } + + userRoleRelations := []model.UserRoleRelationModel{} + + for _, roleId := range roles { + + userRoleRelations = append(userRoleRelations, model.UserRoleRelationModel{ + UserId: userID, + RoleId: roleId, + UpdateTime: time.Now(), + CreateTime: time.Now(), + }) + + } + err = tx.Create(&userRoleRelations).Error + if err != nil { + return errors.WithStack(err) + } + + return nil +} diff --git a/pkg/infrastructure/dto/common/common.go b/pkg/infrastructure/dto/common/common.go new file mode 100644 index 0000000..bfdbfad --- /dev/null +++ b/pkg/infrastructure/dto/common/common.go @@ -0,0 +1,19 @@ +package common + +//一些需要用到的结构 + +type Json map[string]interface{} + +type Sort struct { + Field string + Ascending bool +} + +type Page struct { + PageNum int + PageSize int +} + +type EsConnectID struct { + EsConnectID int `json:"es_connect"` +} diff --git a/pkg/infrastructure/dto/datax.go b/pkg/infrastructure/dto/datax.go new file mode 100644 index 0000000..f6ddc97 --- /dev/null +++ b/pkg/infrastructure/dto/datax.go @@ -0,0 +1,90 @@ +package dto + +import ( + "github.com/goccy/go-json" + "github.com/pkg/errors" +) + +type DataxInfoListReq struct { + Remark string `json:"remark"` + Typ string `json:"typ"` + Page int `json:"page"` + Limit int `json:"limit"` +} + +type DataxInfoInsertReq struct { + IP string `json:"ip"` + Port int `json:"port"` + DbName string `json:"db_name"` + Username string `json:"username"` + Pwd string `json:"pwd"` + Remark string `json:"remark"` + Typ string `json:"typ"` +} + +type DataxInfoDelReq struct { + ID int `json:"id"` +} + +type DataxInfoTestLinkReq struct { + IP string `json:"ip"` + Port int `json:"port"` + DbName string `json:"db_name"` + Username string `json:"username"` + Pwd string `json:"pwd"` + Remark string `json:"remark"` + Typ string `json:"typ"` +} + +func (this DataxInfoInsertReq) Validate() (err error) { + if this.IP == "" { + err = errors.New("ip 不能为空") + } + return +} + +type TransferReq struct { + AutoIncrementId string `json:"autoIncrementId"` + EsConnect int `json:"es_connect"` + SelectType string `json:"selectType"` + Remark string `json:"remark"` + SelectTable string `json:"selectTable"` + TypeName string `json:"type_name"` + Cols struct { + TableCols []string `json:"tableCols"` + EsCols []struct { + Col string `json:"col"` + TbCol string `json:"tbCol"` + } `json:"esCols"` + } `json:"cols"` + IndexName string `json:"indexName"` + Reset bool `json:"reset"` + GoNum int `json:"goNum"` + EsFlushInterval int `json:"esFlushInterval"` + EsBufferSize int `json:"esBufferSize"` + EsDocID string `json:"esDocId"` + BufferSize int `json:"bufferSize"` + MaxIdleConns int `json:"maxIdleConns"` + MaxOpenConns int `json:"maxOpenConns"` + CrontabSpec string `json:"crontab_spec"` +} + +type SelectType struct { + ID int `json:"id"` + Remark string `json:"remark"` + Typ string `json:"typ"` +} + +type TransferLogReq struct { + EsConnect int `json:"es_connect"` +} + +func (this *TransferReq) ParseSelectType() (*SelectType, error) { + selectType := new(SelectType) + + err := json.Unmarshal([]byte(this.SelectType), selectType) + if err != nil { + return nil, err + } + return selectType, nil +} diff --git a/pkg/infrastructure/dto/es_alias.go b/pkg/infrastructure/dto/es_alias.go new file mode 100644 index 0000000..e06ceb5 --- /dev/null +++ b/pkg/infrastructure/dto/es_alias.go @@ -0,0 +1,13 @@ +package dto + +import "github.com/1340691923/ElasticView/pkg/infrastructure/dto/common" + +type EsAliasInfo struct { + EsConnect int `json:"es_connect"` + Settings common.Json `json:"settings"` + IndexName string `json:"index_name"` + AliasName string `json:"alias_name"` + NewAliasNameList []string `json:"new_alias_name_list"` + NewIndexList []string `json:"new_index_list"` + Types int `json:"types"` +} diff --git a/pkg/infrastructure/dto/es_cat.go b/pkg/infrastructure/dto/es_cat.go new file mode 100644 index 0000000..bc2281b --- /dev/null +++ b/pkg/infrastructure/dto/es_cat.go @@ -0,0 +1,7 @@ +package dto + +type EsCat struct { + EsConnect int `json:"es_connect"` + Cat string `json:"cat"` + IndexBytesFormat string `json:"index_bytes_format"` +} diff --git a/pkg/infrastructure/dto/es_connect.go b/pkg/infrastructure/dto/es_connect.go new file mode 100644 index 0000000..5c68bf6 --- /dev/null +++ b/pkg/infrastructure/dto/es_connect.go @@ -0,0 +1,62 @@ +package dto + +import ( + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/proto" + "net/http" + "strings" +) + +type EsConnect struct { + Id int `json:"id" ` + Ip string `json:"ip" db:"ip"` + User string `json:"user" db:"user"` + Pwd string `json:"pwd" db:"pwd"` + Version string `json:"version" db:"version"` + RootPEM string `json:"rootpem" db:"rootpem"` + CertPEM string `json:"certpem" db:"certpem"` + KeyPEM string `json:"keypem" db:"keypem"` + Header []HeaderKv `json:"header" db:"header"` +} + +func (this *EsConnect) ToEsSdkCfg(cfg *config.Config, connectId int) *proto.Config { + + header := this.Header + + httpHeader := http.Header{} + + for _, v := range header { + httpHeader.Set(v.Key, v.Value) + } + + return &proto.Config{ + Cfg: cfg, + ConnectId: connectId, + Version: this.Version, + Addresses: strings.Split(this.Ip, ","), + Username: this.User, + Password: this.Pwd, + CloudID: "", + APIKey: "", + ServiceToken: "", + CertificateFingerprint: "", + Header: httpHeader, + CACert: nil, + RetryOnStatus: nil, + DisableRetry: false, + EnableRetryOnTimeout: false, + MaxRetries: 0, + CompressRequestBody: false, + DiscoverNodesOnStart: false, + DiscoverNodesInterval: 0, + EnableMetrics: false, + EnableDebugLogger: false, + EnableCompatibilityMode: false, + DisableMetaHeader: false, + UseResponseCheckOnly: false, + Transport: nil, + RootPEM: this.RootPEM, + CertPEM: this.CertPEM, + KeyPEM: this.KeyPEM, + } +} diff --git a/pkg/infrastructure/dto/es_crud.go b/pkg/infrastructure/dto/es_crud.go new file mode 100644 index 0000000..014e863 --- /dev/null +++ b/pkg/infrastructure/dto/es_crud.go @@ -0,0 +1,33 @@ +package dto + +type CrudFilter struct { + Relation AnalysisFilter `json:"relation"` + SortList []SortStruct `json:"sort_list"` + EsConnect int `json:"es_connect"` + IndexName string `json:"index_name"` + Page int `json:"page"` + Limit int `json:"limit"` +} + +type AnalysisFilter struct { + FilterType string `json:"filterType"` + Filts []struct { + FilterType string `json:"filterType"` + Filts []struct { + ColumnName string `json:"columnName"` + Comparator string `json:"comparator"` + FilterType string `json:"filterType"` + Ftv interface{} `json:"ftv"` + } `json:"filts,omitempty"` + Relation string `json:"relation,omitempty"` + ColumnName string `json:"columnName,omitempty"` + Comparator string `json:"comparator,omitempty"` + Ftv interface{} `json:"ftv,omitempty"` + } `json:"filts"` + Relation string `json:"relation"` +} + +type SortStruct struct { + Col string `json:"col"` + SortRule string `json:"sortRule"` +} diff --git a/pkg/infrastructure/dto/es_doc.go b/pkg/infrastructure/dto/es_doc.go new file mode 100644 index 0000000..a67d75c --- /dev/null +++ b/pkg/infrastructure/dto/es_doc.go @@ -0,0 +1,18 @@ +package dto + +import "github.com/1340691923/ElasticView/pkg/infrastructure/dto/common" + +type EsDocUpdateByID struct { + EsConnect int `json:"es_connect"` + ID string `json:"id"` + JSON common.Json `json:"json"` + Type string `json:"type_name"` + Index string `json:"index"` +} + +type EsDocDeleteRowByID struct { + EsConnect int `json:"es_connect"` + ID string `json:"id"` + IndexName string `json:"index_name"` + Type string `json:"type"` +} diff --git a/pkg/infrastructure/dto/es_index.go b/pkg/infrastructure/dto/es_index.go new file mode 100644 index 0000000..8617d01 --- /dev/null +++ b/pkg/infrastructure/dto/es_index.go @@ -0,0 +1,10 @@ +package dto + +import "github.com/1340691923/ElasticView/pkg/infrastructure/dto/common" + +type EsIndexInfo struct { + EsConnect int `json:"es_connect"` + Settings common.Json `json:"settings"` + IndexName string `json:"index_name"` + Types string `json:"types"` +} diff --git a/pkg/infrastructure/dto/es_link.go b/pkg/infrastructure/dto/es_link.go new file mode 100644 index 0000000..3b288c4 --- /dev/null +++ b/pkg/infrastructure/dto/es_link.go @@ -0,0 +1,57 @@ +package dto + +type InsertEsLink struct { + Ip string `json:"ip"` + Remark string `json:"remark"` + Version string `json:"version"` + CfgIds []int `json:"cfgIds"` +} + +type InsertEsLinkCfg struct { + User string `json:"user"` + Pwd string `json:"pwd"` + Remark string `json:"remark"` + RootPEM string ` json:"rootpem" ` + CertPEM string ` json:"certpem" ` + KeyPEM string `json:"keypem" ` + ShareRoles []string `json:"share_roles"` + Header []HeaderKv `json:"header"` +} + +type UpdateEsLinkCfg struct { + Id int `json:"id"` + User string `json:"user"` + Pwd string `json:"pwd"` + Remark string `json:"remark"` + RootPEM string ` json:"rootpem" ` + CertPEM string ` json:"certpem" ` + KeyPEM string `json:"keypem" ` + ShareRoles []string `json:"share_roles"` + LinkId int `json:"linkId"` + Header []HeaderKv `json:"header"` +} + +type HeaderKv struct { + Key string `json:"key"` + Value string `json:"value"` +} + +type DeleteEsLinkCfg struct { + Id int `json:"id"` +} + +type UpdateEsLink struct { + Id int `json:"id"` + Ip string `json:"ip"` + Remark string `json:"remark" ` + Version string `json:"version"` + CfgIds []int `json:"cfgIds"` +} + +type GetEsCfgRelation struct { + ID int `json:"id"` +} + +type DeleteEsLink struct { + Id int `json:"id"` +} diff --git a/pkg/infrastructure/dto/es_map.go b/pkg/infrastructure/dto/es_map.go new file mode 100644 index 0000000..ec27f93 --- /dev/null +++ b/pkg/infrastructure/dto/es_map.go @@ -0,0 +1,22 @@ +package dto + +import "github.com/1340691923/ElasticView/pkg/infrastructure/dto/common" + +type EsMapGetProperties struct { + EsConnectID int `json:"es_connect"` + IndexName string `json:"index_name"` +} + +type UpdateMapping struct { + EsConnect int `json:"es_connect"` + IndexName string `json:"index_name"` + TypeName string `json:"type_name"` + Properties common.Json `json:"properties"` +} + +type EsMappingInfo struct { + IndexNameList []string `json:"index_name_list"` + EsConnect int `json:"es_connect"` + Mappings common.Json `json:"mappings"` + IndexName string `json:"index_name"` +} diff --git a/pkg/infrastructure/dto/es_optimize.go b/pkg/infrastructure/dto/es_optimize.go new file mode 100644 index 0000000..7314755 --- /dev/null +++ b/pkg/infrastructure/dto/es_optimize.go @@ -0,0 +1,6 @@ +package dto + +type EsOptimize struct { + EsConnect int `json:"es_connect"` + IndexName string `json:"index_name"` +} diff --git a/pkg/infrastructure/dto/es_reindex.go b/pkg/infrastructure/dto/es_reindex.go new file mode 100644 index 0000000..c255ce2 --- /dev/null +++ b/pkg/infrastructure/dto/es_reindex.go @@ -0,0 +1,17 @@ +package dto + +import "github.com/1340691923/ElasticView/pkg/util" + +type EsReIndexInfo struct { + EsConnect int `json:"es_connect"` + UrlValues struct { + Timeout int `json:"timeout"` + RequestsPerSecond int `json:"requests_per_second"` + Slices int `json:"slices"` + Scroll string `json:"scroll"` + WaitForActiveShards string `json:"wait_for_active_shards"` + Refresh *bool `json:"refresh"` + WaitForCompletion *bool `json:"wait_for_completion"` + } `json:"url_values"` + Body util.Map `json:"body"` +} diff --git a/pkg/infrastructure/dto/es_rest.go b/pkg/infrastructure/dto/es_rest.go new file mode 100644 index 0000000..68e4cad --- /dev/null +++ b/pkg/infrastructure/dto/es_rest.go @@ -0,0 +1,7 @@ +package dto + +type EsRest struct { + EsConnect int `json:"es_connect"` + Body string `json:"body"` + Path string `json:"path"` +} diff --git a/pkg/infrastructure/dto/es_task.go b/pkg/infrastructure/dto/es_task.go new file mode 100644 index 0000000..028e292 --- /dev/null +++ b/pkg/infrastructure/dto/es_task.go @@ -0,0 +1,18 @@ +package dto + +type TaskList struct { + EsConnect int `json:"es_connect"` +} + +type CancelTask struct { + EsConnect int `json:"es_connect"` + TaskID string `json:"task_id"` +} + +type EsTaskInfo struct { + EsConnect int `json:"es_connect"` + TaskId []string `json:"task_id"` + Actions []string `json:"actions"` + NodeId []string `json:"node_id"` + ParentTaskId string `json:"parent_task_id"` +} diff --git a/pkg/infrastructure/dto/gm_role.go b/pkg/infrastructure/dto/gm_role.go new file mode 100644 index 0000000..30b08ff --- /dev/null +++ b/pkg/infrastructure/dto/gm_role.go @@ -0,0 +1,50 @@ +package dto + +type GmRoleModel struct { + ID int `json:"id" db:"id"` + RoleName string `json:"name" db:"role_name"` + Description string `json:"description" db:"description"` + RoleList string `json:"routes" db:"role_list"` + Api []string `json:"api"` +} + +type UserUpdateReq struct { + Id int `json:"id"` + Realname string `json:"realname"` + RoleIds []int `json:"role_ids"` + Username string `json:"username"` + Email string `json:"email"` + WorkWechatUid string `json:"work_wechat_uid"` +} + +type UserAddReq struct { + Realname string `json:"realname"` + RoleIds []int `json:"role_ids"` + Password string `json:"password"` + Username string `json:"username"` + Email string `json:"email"` + WorkWechatUid string `json:"work_wechat_uid"` +} + +type UserListReq struct { + Appid int `json:"appid,omitempty" ` +} + +type DeleteUserReq struct { + Id int `json:"id"` +} + +type GetUserByIdReq struct { + Id int `json:"id"` +} +type RolesDelReq struct { + Id int `json:"id"` +} + +type SealUserReq struct { + Id int `json:"id"` +} + +type UnSealUserReq struct { + Id int `json:"id"` +} diff --git a/pkg/infrastructure/dto/guid.go b/pkg/infrastructure/dto/guid.go new file mode 100644 index 0000000..5e3a22b --- /dev/null +++ b/pkg/infrastructure/dto/guid.go @@ -0,0 +1,5 @@ +package dto + +type GuidFinish struct { + GuidName string `json:"guid_name"` +} diff --git a/pkg/infrastructure/dto/oauth.go b/pkg/infrastructure/dto/oauth.go new file mode 100644 index 0000000..1185886 --- /dev/null +++ b/pkg/infrastructure/dto/oauth.go @@ -0,0 +1,10 @@ +package dto + +type GetOAuthConfigReq struct { + CallBack string `json:"call_back"` +} + +type SaveOAuthConfigReq struct { + ApplicationName string `json:"application_name"` + Config map[string]interface{} `json:"config"` +} diff --git a/pkg/infrastructure/dto/operater_log_list.go b/pkg/infrastructure/dto/operater_log_list.go new file mode 100644 index 0000000..601f823 --- /dev/null +++ b/pkg/infrastructure/dto/operater_log_list.go @@ -0,0 +1,9 @@ +package dto + +type GmOperaterLogList struct { + Page int `json:"page"` + Limit int `json:"limit"` + UserId int `json:"operater_id"` + OperaterAction string `json:"operater_action"` + Date []string `json:"date"` +} diff --git a/pkg/infrastructure/dto/plugin.go b/pkg/infrastructure/dto/plugin.go new file mode 100644 index 0000000..f10ffd1 --- /dev/null +++ b/pkg/infrastructure/dto/plugin.go @@ -0,0 +1,19 @@ +package dto + +type PluginMarketReq struct { + SearchTxt string `json:"search_txt"` + OrderCol string `json:"order_col"` + OrderByDesc bool `json:"order_by_desc"` + IsInstall *bool `json:"is_install"` + Page int `json:"page"` + Limit int `json:"limit"` +} + +type InstallPlugin struct { + PluginID string `json:"plugin_id"` + Version string `json:"version"` +} + +type ImportEvKey struct { + EvKey string `json:"ev_key"` +} diff --git a/pkg/infrastructure/dto/plugin_util.go b/pkg/infrastructure/dto/plugin_util.go new file mode 100644 index 0000000..1ca7b2f --- /dev/null +++ b/pkg/infrastructure/dto/plugin_util.go @@ -0,0 +1,31 @@ +package dto + +import "github.com/1340691923/eve-plugin-sdk-go/ev_api/dto" + +type ExecReq struct { + PluginId string `json:"plugin_id"` + Sql string `json:"sql"` + Args []interface{} `json:"args"` +} + +type SelectReq struct { + PluginId string `json:"plugin_id"` + Sql string `json:"sql"` + Args []interface{} `json:"args"` +} + +type LoadDebugPlugin struct { + ID string `json:"id"` + Addr string `json:"addr"` + Pid int `json:"pid"` +} +type StopDebugPlugin struct { + ID string `json:"id"` +} + +type PluginRunDsl struct { + EsConnectData dto.EsConnectData `json:"es_connect_data"` + HttpMethod string `json:"http_method"` + Path string `json:"path"` + Dsl string `json:"dsl"` +} diff --git a/pkg/infrastructure/dto/snapshot.go b/pkg/infrastructure/dto/snapshot.go new file mode 100644 index 0000000..9e4dc54 --- /dev/null +++ b/pkg/infrastructure/dto/snapshot.go @@ -0,0 +1,81 @@ +package dto + +type EsSnapshotInfo struct { + EsConnect int `json:"es_connect"` //es连接id + SnapshotInfoList []string `json:"snapshot_info_list"` //存储库 +} + +type SnapshotCreateRepository struct { + EsConnect int `json:"es_connect"` //es连接id + Repository string `json:"name"` //存储库名 + Type string `json:"type"` //类型 fs/url + Location string `json:"location"` //存储位置 + Compress string `json:"compress"` //是否压缩 true/false + MaxRestoreBytesPerSec string `json:"max_restore_bytes_per_sec"` //节点恢复速率 + MaxSnapshotBytesPerSec string `json:"max_snapshot_bytes_per_sec"` //每个节点快照速率 + ChunkSize string `json:"chunk_size"` //大文件分解块大小 + Readonly string `json:"readonly"` //是否只读 +} + +type CleanupeRepository struct { + EsConnect int `json:"es_connect"` //es连接id + Repository string `json:"name"` //存储库名 +} + +type SnapshotDeleteRepository struct { + EsConnect int `json:"es_connect"` //es连接id + Repository string `json:"name"` //存储库名 +} + +type SnapshotList struct { + EsConnect int `json:"es_connect"` + Repository string `json:"repository"` +} + +type CreateSnapshot struct { + SnapshotName string `json:"snapshotName"` + RepositoryName string `json:"repositoryName"` + IndexList []string `json:"indexList"` + IgnoreUnavailable *bool `json:"ignore_unavailable"` + IncludeGlobalState *bool `json:"include_global_state"` + Partial *bool `json:"partial"` + Wait *bool `json:"wait"` + EsConnect int `json:"es_connect"` +} + +type DeleteSnapshot struct { + SnapshotName string `json:"snapshotName"` + RepositoryName string `json:"repositoryName"` + EsConnect int `json:"es_connect"` +} + +type SnapshotDelete struct { + EsConnect int `json:"es_connect"` + Repository string `json:"repository"` + Snapshot string `json:"snapshot"` +} + +type SnapshotDetail struct { + EsConnect int `json:"es_connect"` + Repository string `json:"repository"` + Snapshot string `json:"snapshot"` +} + +type SnapshotRestore struct { + SnapshotName string `json:"snapshotName"` + RepositoryName string `json:"repositoryName"` + IndexList []string `json:"indexList"` + IgnoreUnavailable *bool `json:"ignore_unavailable"` + IncludeGlobalState *bool `json:"include_global_state"` + Partial *bool `json:"partial"` + Wait *bool `json:"wait"` + EsConnect int `json:"es_connect"` + RenamePattern string `json:"rename_pattern"` + RenameReplacement string `json:"rename_replacement"` +} + +type SnapshotStatus struct { + SnapshotName string `json:"snapshot"` + RepositoryName string `json:"repository"` + EsConnect int `json:"es_connect"` +} diff --git a/pkg/infrastructure/dto/sql2dsl.go b/pkg/infrastructure/dto/sql2dsl.go new file mode 100644 index 0000000..3bee592 --- /dev/null +++ b/pkg/infrastructure/dto/sql2dsl.go @@ -0,0 +1,5 @@ +package dto + +type SqlToDsl struct { + Sql string `json:"sql"` +} diff --git a/pkg/infrastructure/dto/url_config.go b/pkg/infrastructure/dto/url_config.go new file mode 100644 index 0000000..3a5c7eb --- /dev/null +++ b/pkg/infrastructure/dto/url_config.go @@ -0,0 +1,5 @@ +package dto + +type UrlConfigReq struct { + NeedAuth bool `json:"need_auth"` +} diff --git a/pkg/infrastructure/dto/user.go b/pkg/infrastructure/dto/user.go new file mode 100644 index 0000000..c7f40b9 --- /dev/null +++ b/pkg/infrastructure/dto/user.go @@ -0,0 +1,9 @@ +package dto + +type User struct { + OAuthCode string `json:"oauth_code"` + State string `json:"state"` + + Username string `json:"username"` + Password string `json:"password"` +} diff --git a/pkg/infrastructure/dto/ws.go b/pkg/infrastructure/dto/ws.go new file mode 100644 index 0000000..f1b21e6 --- /dev/null +++ b/pkg/infrastructure/dto/ws.go @@ -0,0 +1,3 @@ +package dto + +type C2S_PING struct{} diff --git a/pkg/infrastructure/es_sdk/pkg/base/base_datasource.go b/pkg/infrastructure/es_sdk/pkg/base/base_datasource.go new file mode 100644 index 0000000..f38499f --- /dev/null +++ b/pkg/infrastructure/es_sdk/pkg/base/base_datasource.go @@ -0,0 +1,276 @@ +package base + +import ( + "context" + "fmt" + "github.com/1340691923/eve-plugin-sdk-go/ev_api/bson" + "github.com/1340691923/eve-plugin-sdk-go/ev_api/proto" + "github.com/pkg/errors" + "net" + "net/http" + "strings" + "time" +) + +var NotAllowConnType = errors.New("请选择正确的数据源") + +type BaseDatasource struct { +} + +func (b *BaseDatasource) RedisExecCommand(ctx context.Context, dbName int, args ...interface{}) (data interface{}, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) MysqlExecSql(ctx context.Context, dbName, sql string, args ...interface{}) (rowsAffected int64, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) MysqlSelectSql(ctx context.Context, dbName, sql string, args ...interface{}) (list []map[string]interface{}, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) MysqlFirstSql(ctx context.Context, dbName, sql string, args ...interface{}) (data map[string]interface{}, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) Ping(ctx context.Context) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsVersion() (version int, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsCatNodes(ctx context.Context, h []string) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsClusterStats(ctx context.Context, human bool) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsIndicesSegmentsRequest(ctx context.Context, human bool) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsPerformRequest(ctx context.Context, req *http.Request) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsRefresh(ctx context.Context, indexNames []string) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsOpen(ctx context.Context, indexNames []string) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsFlush(ctx context.Context, indexNames []string) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsIndicesClearCache(ctx context.Context, indexNames []string) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsIndicesClose(ctx context.Context, indexNames []string) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsIndicesForcemerge(ctx context.Context, indexNames []string, maxNumSegments *int) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsDeleteByQuery(ctx context.Context, indexNames []string, documents []string, body interface{}) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsSnapshotCreate(ctx context.Context, repository string, snapshot string, waitForCompletion *bool, reqJson proto.Json) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsSnapshotDelete(ctx context.Context, repository string, snapshot string) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsRestoreSnapshot(ctx context.Context, repository string, snapshot string, waitForCompletion *bool, reqJson proto.Json) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsSnapshotStatus(ctx context.Context, repository string, snapshot []string, ignoreUnavailable *bool) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsSnapshotGetRepository(ctx context.Context, repository []string) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsSnapshotCreateRepository(ctx context.Context, repository string, reqJson proto.Json) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsSnapshotDeleteRepository(ctx context.Context, repository []string) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsGetIndices(ctx context.Context, catIndicesRequest proto.CatIndicesRequest) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsCatHealth(ctx context.Context, catRequest proto.CatHealthRequest) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsCatShards(ctx context.Context, catRequest proto.CatShardsRequest) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsCatCount(ctx context.Context, catRequest proto.CatCountRequest) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsCatAllocationRequest(ctx context.Context, catRequest proto.CatAllocationRequest) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsCatAliases(ctx context.Context, catRequest proto.CatAliasesRequest) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsDelete(ctx context.Context, deleteRequest proto.DeleteRequest) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsUpdate(ctx context.Context, updateRequest proto.UpdateRequest, body interface{}) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsCreate(ctx context.Context, createRequest proto.CreateRequest, body interface{}) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsSearch(ctx context.Context, searchRequest proto.SearchRequest, query interface{}) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsIndicesPutSettingsRequest(ctx context.Context, indexSettingsRequest proto.IndicesPutSettingsRequest, body interface{}) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsCreateIndex(ctx context.Context, indexCreateRequest proto.IndicesCreateRequest, body interface{}) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsDeleteIndex(ctx context.Context, indicesDeleteRequest proto.IndicesDeleteRequest) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsReindex(ctx context.Context, reindexRequest proto.ReindexRequest, body interface{}) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsIndicesGetSettingsRequest(ctx context.Context, indicesGetSettingsRequest proto.IndicesGetSettingsRequest) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsPutMapping(ctx context.Context, indicesPutMappingRequest proto.IndicesPutMappingRequest, body interface{}) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsGetMapping(ctx context.Context, indexNames []string) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsGetAliases(ctx context.Context, indexNames []string) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsAddAliases(ctx context.Context, indexName []string, aliasName string) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsRemoveAliases(ctx context.Context, indexName []string, aliasName []string) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsMoveToAnotherIndexAliases(ctx context.Context, body proto.AliasAction) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsTaskList(ctx context.Context) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) EsTasksCancel(ctx context.Context, taskId string) (res *proto.Response, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) ExecMongoCommand(ctx context.Context, dbName string, command bson.D, timeout time.Duration) (res bson.M, err error) { + err = NotAllowConnType + return +} + +func (b *BaseDatasource) ExtractIPPort(address string) (string, string, error) { + // 移除协议前缀 + address = strings.TrimPrefix(address, "http://") + address = strings.TrimPrefix(address, "tcp://") + + // 使用 net.SplitHostPort 获取 IP 和端口 + ip, port, err := net.SplitHostPort(address) + if err != nil { + return "", "", fmt.Errorf("提取ip,端口失败: %v", err) + } + + return ip, port, nil +} + +func (b *BaseDatasource) ShowMongoDbs(ctx context.Context) ([]string, error) { + return nil, NotAllowConnType +} diff --git a/pkg/infrastructure/es_sdk/pkg/cache/data_source.go b/pkg/infrastructure/es_sdk/pkg/cache/data_source.go new file mode 100644 index 0000000..1d200df --- /dev/null +++ b/pkg/infrastructure/es_sdk/pkg/cache/data_source.go @@ -0,0 +1,84 @@ +package cache + +import ( + "context" + "github.com/1340691923/eve-plugin-sdk-go/ev_api/pkg" + "log" + "runtime" + "sync" + "time" +) + +var ( + dataSourceCache *sync.Map + once sync.Once +) + +func init() { + once.Do(func() { + dataSourceCache = new(sync.Map) + go func() { + ticker := time.NewTicker(5 * time.Minute) + + // 循环等待定时器触发 + for { + select { + case <-ticker.C: + //进行检测连接是否存在ping异常,存在则移除 + CleanDataSourceCache(false) + runtime.GC() + } + } + }() + }) +} + +func SaveDataSourceCache(connId interface{}, dataSource pkg.ClientInterface) { + dataSourceCache.Store(connId, dataSource) +} + +func GetDataSourceCache(connId interface{}) (pkg.ClientInterface, bool) { + ds, ok := dataSourceCache.Load(connId) + + log.Println("获取连接", connId, ok) + + if ok { + return ds.(pkg.ClientInterface), ok + } + + return nil, ok +} + +func DeleteDataSourceCache(connId interface{}) { + dataSourceCache.Delete(connId) +} + +func CleanDataSourceCache(isClearAll bool) { + dataSourceCache.Range(func(connId, dataSource any) bool { + + if isClearAll { + DeleteDataSourceCache(connId) + return true + } + + ds, ok := GetDataSourceCache(connId) + + if !ok { + return true + } + + res, err := ds.Ping(context.Background()) + + if err != nil { + DeleteDataSourceCache(connId) + return true + } + + if res.StatusErr() != nil { + DeleteDataSourceCache(connId) + return true + } + + return true + }) +} diff --git a/pkg/infrastructure/es_sdk/pkg/clickhouse/clickhouse.go b/pkg/infrastructure/es_sdk/pkg/clickhouse/clickhouse.go new file mode 100644 index 0000000..7bd1487 --- /dev/null +++ b/pkg/infrastructure/es_sdk/pkg/clickhouse/clickhouse.go @@ -0,0 +1,130 @@ +package clickhouse + +import ( + "context" + sql2 "database/sql" + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/base" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/cache" + proto2 "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/proto" + "github.com/1340691923/eve-plugin-sdk-go/ev_api/pkg" + "github.com/1340691923/eve-plugin-sdk-go/ev_api/proto" + "github.com/pkg/errors" + "gorm.io/driver/clickhouse" + "gorm.io/gorm" +) + +type ClickhouseClient struct { + base.BaseDatasource + db *gorm.DB +} + +func NewClickhouseClient(cfg *proto2.Config) (pkg.ClientInterface, error) { + ds, ok := cache.GetDataSourceCache(cfg.ConnectId) + + if !ok { + obj := &ClickhouseClient{} + + if len(cfg.Addresses) == 0 { + return nil, errors.New("ip和端口不能为空") + } + // 打开数据库连接 + orm, err := gorm.Open(clickhouse.Open(fmt.Sprintf( + "tcp://%s?username=%s&password=%s&dial_timeout=10s&read_timeout=10s", + cfg.Addresses[0], + cfg.Username, + cfg.Password, + ))) + if err != nil { + return nil, errors.WithStack(err) + } + obj.db = orm + + cache.SaveDataSourceCache(cfg.ConnectId, obj) + return obj, nil + } + + return ds, nil +} + +func (this *ClickhouseClient) Ping( + ctx context.Context, +) ( + res *proto.Response, + err error, +) { + db, err := this.db.WithContext(ctx).DB() + if err != nil { + return + } + err = db.Ping() + if err != nil { + return + } + + res = proto.NewResponseNotErr() + + return +} + +// todo... 表名鉴权 任何插件表名必须以 plugin_ 开头 +func (this *ClickhouseClient) MysqlExecSql(ctx context.Context, dbName, sql string, args ...interface{}) (rowsAffected int64, err error) { + + tx := this.db.Begin() // start transaction + + if dbName != "" { + tx = tx.WithContext(ctx).Exec(fmt.Sprintf("use %s", dbName)) + } + + result := tx.WithContext(ctx).Exec(sql, args...) + if result.Error != nil { + err = result.Error + return + } + rowsAffected = result.RowsAffected + + err = tx.Commit().Error // end transaction + + return +} + +// todo... 表名鉴权 +func (this *ClickhouseClient) MysqlSelectSql(ctx context.Context, dbName, sql string, args ...interface{}) (list []map[string]interface{}, err error) { + + tx := this.db.Begin() + + if dbName != "" { + tx = tx.WithContext(ctx).Exec(fmt.Sprintf("use %s", dbName)) + } + + err = tx.WithContext(ctx).Raw(sql, args...).Scan(&list).Error + + if err != nil { + return nil, err + } + + err = tx.Commit().Error + + if err != nil { + return nil, err + } + + return list, nil +} + +func (this *ClickhouseClient) MysqlFirstSql(ctx context.Context, dbName, sql string, args ...interface{}) (data map[string]interface{}, err error) { + + storeRes, err := this.MysqlSelectSql(ctx, dbName, sql, args) + if err != nil { + return + } + data = map[string]interface{}{} + if len(storeRes) > 0 { + data = storeRes[0] + } else { + err = sql2.ErrNoRows + return + } + + return +} diff --git a/pkg/infrastructure/es_sdk/pkg/es_log/logger.go b/pkg/infrastructure/es_sdk/pkg/es_log/logger.go new file mode 100644 index 0000000..2085bd3 --- /dev/null +++ b/pkg/infrastructure/es_sdk/pkg/es_log/logger.go @@ -0,0 +1,148 @@ +package es_log + +import ( + "bufio" + "bytes" + "fmt" + "go.uber.org/zap" + "io" + "net/http" + "strconv" + "strings" + "time" +) + +type Logger struct { + Enable bool + EnableRequestBody bool + EnableResponseBody bool + Logger *zap.Logger +} + +func NewLogger(enable, enableRequestBody, enableResponseBody bool, logger *zap.Logger) *Logger { + return &Logger{Enable: enable, EnableRequestBody: enableRequestBody, EnableResponseBody: enableResponseBody, Logger: logger} +} + +func (l *Logger) LogRoundTrip(req *http.Request, res *http.Response, err error, start time.Time, dur time.Duration) error { + if !l.Enable { + return nil + } + bsize := 200 + var b = bytes.NewBuffer(make([]byte, 0, bsize)) + var v = make([]byte, 0, bsize) + + appendTime := func(t time.Time) { + v = v[:0] + v = t.AppendFormat(v, time.RFC3339) + b.Write(v) + } + + appendQuote := func(s string) { + v = v[:0] + v = strconv.AppendQuote(v, s) + b.Write(v) + } + + appendInt := func(i int64) { + v = v[:0] + v = strconv.AppendInt(v, i, 10) + b.Write(v) + } + + port := req.URL.Port() + + b.WriteRune('{') + // -- Timestamp + b.WriteString(`"@timestamp":"`) + appendTime(start.UTC()) + b.WriteRune('"') + // -- Event + b.WriteString(`,"event":{`) + b.WriteString(`"lose time":`) + appendQuote(dur.Truncate(time.Millisecond).String()) + b.WriteString(`,"ev_user_id":`) + appendQuote(req.Header.Get("ev_user_id")) + b.WriteRune('}') + // -- URL + b.WriteString(`,"url":{`) + b.WriteString(`"scheme":`) + appendQuote(req.URL.Scheme) + b.WriteString(`,"domain":`) + appendQuote(req.URL.Hostname()) + if port != "" { + b.WriteString(`,"port":`) + b.WriteString(port) + } + b.WriteString(`,"path":`) + appendQuote(req.URL.Path) + b.WriteString(`,"query":`) + appendQuote(req.URL.RawQuery) + b.WriteRune('}') // Close "url" + // -- HTTP + b.WriteString(`,"http":`) + // ---- Request + b.WriteString(`{"request":{`) + b.WriteString(`"method":`) + appendQuote(req.Method) + if l.RequestBodyEnabled() && req != nil && req.Body != nil && req.Body != http.NoBody { + var buf bytes.Buffer + if req.GetBody != nil { + b, _ := req.GetBody() + buf.ReadFrom(b) + } else { + buf.ReadFrom(req.Body) + } + + b.Grow(buf.Len() + 8) + b.WriteString(`,"body":`) + appendQuote(buf.String()) + } + b.WriteRune('}') // Close "http.request" + // ---- Response + b.WriteString(`,"response":{`) + b.WriteString(`"status_code":`) + appendInt(int64(resStatusCode(res))) + if l.ResponseBodyEnabled() && res != nil && res.Body != nil && res.Body != http.NoBody { + defer res.Body.Close() + var buf bytes.Buffer + buf.ReadFrom(res.Body) + + b.Grow(buf.Len() + 8) + b.WriteString(`,"body":`) + appendQuote(buf.String()) + } + b.WriteRune('}') // Close "http.response" + b.WriteRune('}') // Close "http" + // -- Error + if err != nil { + b.WriteString(`,"error":{"message":`) + appendQuote(err.Error()) + b.WriteRune('}') // Close "error" + } + b.WriteRune('}') + l.Logger.Sugar().Infof("es请求日志", b.String()) + return nil +} + +func resStatusCode(res *http.Response) int { + if res == nil { + return -1 + } + return res.StatusCode +} + +func logBodyAsText(strBuilder *strings.Builder, body io.Reader, prefix string) { + scanner := bufio.NewScanner(body) + for scanner.Scan() { + s := scanner.Text() + if s != "" { + strBuilder.WriteString(fmt.Sprintf("%s %s\n", prefix, s)) + } + } +} + +// RequestBodyEnabled returns true when the request body should be logged. +func (l *Logger) RequestBodyEnabled() bool { return l.EnableRequestBody } + +// ResponseBodyEnabled returns true when the response body should be logged. +func (l *Logger) ResponseBodyEnabled() bool { return l.EnableResponseBody } diff --git a/pkg/infrastructure/es_sdk/pkg/factory/factory.go b/pkg/infrastructure/es_sdk/pkg/factory/factory.go new file mode 100644 index 0000000..2971224 --- /dev/null +++ b/pkg/infrastructure/es_sdk/pkg/factory/factory.go @@ -0,0 +1,46 @@ +package factory + +import ( + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/clickhouse" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/mongo" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/mysql" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/postgresql" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/proto" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/redis" + v6 "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/v6" + v7 "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/v7" + v8 "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/v8" + "github.com/1340691923/eve-plugin-sdk-go/ev_api/pkg" + "strings" +) + +var EsServiceMap = map[string]func(cfg *proto.Config) (pkg.ClientInterface, error){ + "elasticsearch6.x": v6.NewEsClient6, + "elasticsearch7.x": v7.NewEsClient7, + "elasticsearch8.x": v8.NewEsClient8, + "mysql": mysql.NewMysqlClient, + "redis": redis.NewRedisClient, + "clickhouse": clickhouse.NewClickhouseClient, + "postgres": postgresql.NewPostgresqlClient, + "mongo": mongo.NewMongoClient, +} + +func NewEsService(cfg *proto.Config) (pkg.ClientInterface, error) { + var found bool + var fn func(cfg *proto.Config) (pkg.ClientInterface, error) + if fn, found = EsServiceMap[cfg.Version]; !found { + return nil, VersionErr() + } + fn = EsServiceMap[cfg.Version] + return fn(cfg) +} + +func VersionErr() error { + datasources := []string{} + for key := range EsServiceMap { + datasources = append(datasources, key) + } + + return fmt.Errorf("暂只支持(%s)", strings.Join(datasources, ",")) +} diff --git a/pkg/infrastructure/es_sdk/pkg/mongo/mongo.go b/pkg/infrastructure/es_sdk/pkg/mongo/mongo.go new file mode 100644 index 0000000..6b0f815 --- /dev/null +++ b/pkg/infrastructure/es_sdk/pkg/mongo/mongo.go @@ -0,0 +1,115 @@ +package mongo + +import ( + "context" + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/base" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/cache" + proto2 "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/proto" + "github.com/1340691923/eve-plugin-sdk-go/ev_api/bson" + "github.com/1340691923/eve-plugin-sdk-go/ev_api/pkg" + "github.com/1340691923/eve-plugin-sdk-go/ev_api/proto" + "github.com/pkg/errors" + bson2 "go.mongodb.org/mongo-driver/bson" + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" + "time" +) + +type MongoClient struct { + base.BaseDatasource + db *mongo.Client +} + +func NewMongoClient(cfg *proto2.Config) (pkg.ClientInterface, error) { + ds, ok := cache.GetDataSourceCache(cfg.ConnectId) + + if !ok { + obj := &MongoClient{} + + if len(cfg.Addresses) == 0 { + return nil, errors.New("ip和端口不能为空") + } + + ip, port, err := obj.ExtractIPPort(cfg.Addresses[0]) + + if err != nil { + return nil, errors.WithStack(err) + } + + auth := "" + + if cfg.Username != "" && cfg.Password != "" { + auth = fmt.Sprintf("%s:%s@", cfg.Username, cfg.Password) + } + + clientOpts := options.Client().ApplyURI( + fmt.Sprintf("mongodb://%s%s:%s", + auth, ip, port), + ) + client, err := mongo.Connect(context.Background(), clientOpts) + if err != nil { + return nil, fmt.Errorf("failed to connect to MongoDB: %v", err) + } + obj.db = client + + cache.SaveDataSourceCache(cfg.ConnectId, obj) + return obj, nil + } + + return ds, nil +} + +func (this *MongoClient) Ping( + ctx context.Context, +) ( + res *proto.Response, + err error, +) { + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + err = this.db.Ping(context.Background(), nil) + if err != nil { + return + } + + res = proto.NewResponseNotErr() + + return +} + +func (this *MongoClient) ExecMongoCommand(ctx context.Context, dbName string, command bson.D, timeout time.Duration) (res bson.M, err error) { + + // 设置超时时间 + ctx, cancel := context.WithTimeout(context.Background(), timeout) + defer cancel() + + var command2 bson2.D + + for _, v := range command { + command2 = append(command2, bson2.E{ + Key: v.Key, + Value: v.Value, + }) + } + + // 执行命令 + var result bson2.M + err = this.db.Database(dbName).RunCommand(ctx, command2).Decode(&result) + if err != nil { + return nil, fmt.Errorf("failed to execute command: %v", err) + } + + res = bson.M{} + + for k, v := range result { + res[k] = v + } + + return res, nil +} + +func (this *MongoClient) ShowMongoDbs(ctx context.Context) ([]string, error) { + return this.db.ListDatabaseNames(ctx, bson2.D{}) +} diff --git a/pkg/infrastructure/es_sdk/pkg/mysql/mysql.go b/pkg/infrastructure/es_sdk/pkg/mysql/mysql.go new file mode 100644 index 0000000..fd5e696 --- /dev/null +++ b/pkg/infrastructure/es_sdk/pkg/mysql/mysql.go @@ -0,0 +1,129 @@ +package mysql + +import ( + "context" + sql2 "database/sql" + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/base" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/cache" + proto2 "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/proto" + "github.com/1340691923/eve-plugin-sdk-go/ev_api/pkg" + "github.com/1340691923/eve-plugin-sdk-go/ev_api/proto" + "github.com/pkg/errors" + "gorm.io/driver/mysql" + "gorm.io/gorm" +) + +type MysqlClient struct { + base.BaseDatasource + db *gorm.DB +} + +func NewMysqlClient(cfg *proto2.Config) (pkg.ClientInterface, error) { + ds, ok := cache.GetDataSourceCache(cfg.ConnectId) + + if !ok { + obj := &MysqlClient{} + + if len(cfg.Addresses) == 0 { + return nil, errors.New("ip和端口不能为空") + } + // 打开数据库连接 + orm, err := gorm.Open(mysql.Open(fmt.Sprintf("%s:%s@tcp(%s)/?parseTime=true", + cfg.Username, + cfg.Password, + cfg.Addresses[0], + ))) + if err != nil { + return nil, errors.WithStack(err) + } + obj.db = orm + + cache.SaveDataSourceCache(cfg.ConnectId, obj) + return obj, nil + } + + return ds, nil +} + +func (this *MysqlClient) Ping( + ctx context.Context, +) ( + res *proto.Response, + err error, +) { + db, err := this.db.WithContext(ctx).DB() + if err != nil { + return + } + err = db.Ping() + if err != nil { + return + } + + res = proto.NewResponseNotErr() + + return +} + +// todo... 表名鉴权 任何插件表名必须以 plugin_ 开头 +func (this *MysqlClient) MysqlExecSql(ctx context.Context, dbName, sql string, args ...interface{}) (rowsAffected int64, err error) { + + tx := this.db.Begin() // start transaction + + if dbName != "" { + tx = tx.WithContext(ctx).Exec(fmt.Sprintf("use %s", dbName)) + } + + result := tx.WithContext(ctx).Exec(sql, args...) + if result.Error != nil { + err = result.Error + return + } + rowsAffected = result.RowsAffected + + err = tx.Commit().Error // end transaction + + return +} + +// todo... 表名鉴权 +func (this *MysqlClient) MysqlSelectSql(ctx context.Context, dbName, sql string, args ...interface{}) (list []map[string]interface{}, err error) { + + tx := this.db.Begin() + + if dbName != "" { + tx = tx.WithContext(ctx).Exec(fmt.Sprintf("use %s", dbName)) + } + + err = tx.WithContext(ctx).Raw(sql, args...).Scan(&list).Error + + if err != nil { + return nil, err + } + + err = tx.Commit().Error + + if err != nil { + return nil, err + } + + return list, nil +} + +func (this *MysqlClient) MysqlFirstSql(ctx context.Context, dbName, sql string, args ...interface{}) (data map[string]interface{}, err error) { + + storeRes, err := this.MysqlSelectSql(ctx, dbName, sql, args) + if err != nil { + return + } + data = map[string]interface{}{} + if len(storeRes) > 0 { + data = storeRes[0] + } else { + err = sql2.ErrNoRows + return + } + + return +} diff --git a/pkg/infrastructure/es_sdk/pkg/postgresql/postgresql.go b/pkg/infrastructure/es_sdk/pkg/postgresql/postgresql.go new file mode 100644 index 0000000..d2c8d94 --- /dev/null +++ b/pkg/infrastructure/es_sdk/pkg/postgresql/postgresql.go @@ -0,0 +1,139 @@ +package postgresql + +import ( + "context" + sql2 "database/sql" + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/base" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/cache" + proto2 "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/proto" + "github.com/1340691923/eve-plugin-sdk-go/ev_api/pkg" + "github.com/1340691923/eve-plugin-sdk-go/ev_api/proto" + "github.com/pkg/errors" + "gorm.io/driver/postgres" + "gorm.io/gorm" +) + +type PostgresqlClient struct { + base.BaseDatasource + db *gorm.DB +} + +func NewPostgresqlClient(cfg *proto2.Config) (pkg.ClientInterface, error) { + ds, ok := cache.GetDataSourceCache(cfg.ConnectId) + + if !ok { + obj := &PostgresqlClient{} + + if len(cfg.Addresses) == 0 { + return nil, errors.New("ip和端口不能为空") + } + + ip, port, err := obj.ExtractIPPort(cfg.Addresses[0]) + + if err != nil { + return nil, errors.WithStack(err) + } + + dsl := fmt.Sprintf( + "host=%s user=%s password=%s port=%s sslmode=disable TimeZone=Asia/Shanghai", + ip, + cfg.Username, + cfg.Password, + port) + + // 打开数据库连接 + orm, err := gorm.Open(postgres.Open(dsl)) + if err != nil { + return nil, errors.WithStack(err) + } + obj.db = orm + + cache.SaveDataSourceCache(cfg.ConnectId, obj) + return obj, nil + } + + return ds, nil +} + +func (this *PostgresqlClient) Ping( + ctx context.Context, +) ( + res *proto.Response, + err error, +) { + db, err := this.db.WithContext(ctx).DB() + if err != nil { + return + } + err = db.Ping() + if err != nil { + return + } + + res = proto.NewResponseNotErr() + + return +} + +// todo... 表名鉴权 任何插件表名必须以 plugin_ 开头 +func (this *PostgresqlClient) MysqlExecSql(ctx context.Context, dbName, sql string, args ...interface{}) (rowsAffected int64, err error) { + + tx := this.db.Begin() // start transaction + + if dbName != "" { + tx = tx.WithContext(ctx).Exec(fmt.Sprintf("use %s", dbName)) + } + + result := tx.WithContext(ctx).Exec(sql, args...) + if result.Error != nil { + err = result.Error + return + } + rowsAffected = result.RowsAffected + + err = tx.Commit().Error // end transaction + + return +} + +// todo... 表名鉴权 +func (this *PostgresqlClient) MysqlSelectSql(ctx context.Context, dbName, sql string, args ...interface{}) (list []map[string]interface{}, err error) { + + tx := this.db.Begin() + + if dbName != "" { + tx = tx.WithContext(ctx).Exec(fmt.Sprintf("use %s", dbName)) + } + + err = tx.WithContext(ctx).Raw(sql, args...).Scan(&list).Error + + if err != nil { + return nil, err + } + + err = tx.Commit().Error + + if err != nil { + return nil, err + } + + return list, nil +} + +func (this *PostgresqlClient) MysqlFirstSql(ctx context.Context, dbName, sql string, args ...interface{}) (data map[string]interface{}, err error) { + + storeRes, err := this.MysqlSelectSql(ctx, dbName, sql, args) + if err != nil { + return + } + data = map[string]interface{}{} + if len(storeRes) > 0 { + data = storeRes[0] + } else { + err = sql2.ErrNoRows + return + } + + return +} diff --git a/pkg/infrastructure/es_sdk/pkg/proto/config.go b/pkg/infrastructure/es_sdk/pkg/proto/config.go new file mode 100644 index 0000000..37301d1 --- /dev/null +++ b/pkg/infrastructure/es_sdk/pkg/proto/config.go @@ -0,0 +1,228 @@ +package proto + +import ( + "crypto/tls" + "crypto/x509" + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + estransportV8 "github.com/elastic/elastic-transport-go/v8/elastictransport" + elasticV6 "github.com/elastic/go-elasticsearch/v6" + estransportV6 "github.com/elastic/go-elasticsearch/v6/estransport" + elasticV7 "github.com/elastic/go-elasticsearch/v7" + estransportV7 "github.com/elastic/go-elasticsearch/v7/estransport" + elasticV8 "github.com/elastic/go-elasticsearch/v8" + "net/http" + "time" +) + +type Config struct { + ConnectId int + Cfg *config.Config + Version string + Addresses []string // A list of Elasticsearch nodes to use. + Username string // Username for HTTP Basic Authentication. + Password string // Password for HTTP Basic Authentication. + + CloudID string // Endpoint for the Elastic Service (https://elastic.co/cloud). + APIKey string // Base64-encoded token for authorization; if set, overrides username/password and service token. + ServiceToken string // Service token for authorization; if set, overrides username/password. + CertificateFingerprint string // SHA256 hex fingerprint given by Elasticsearch on first launch. + + Header http.Header // Global HTTP request header. + + // PEM-encoded certificate authorities. + // When set, an empty certificate pool will be created, and the certificates will be appended to it. + // The option is only valid when the transport is not specified, or when it's http.Transport. + CACert []byte + + RetryOnStatus []int // List of status codes for retry. Default: 502, 503, 504. + DisableRetry bool // Default: false. + EnableRetryOnTimeout bool // Default: false. + MaxRetries int // Default: 3. + + CompressRequestBody bool // Default: false. + DiscoverNodesOnStart bool // Discover nodes when initializing the client. Default: false. + + DiscoverNodesInterval time.Duration // Discover nodes periodically. Default: disabled. + + EnableMetrics bool // Enable the metrics collection. + EnableDebugLogger bool // Enable the debug logging. + EnableCompatibilityMode bool // Enable sends compatibility header + + DisableMetaHeader bool // Disable the additional "X-Elastic-Client-Meta" HTTP header. + UseResponseCheckOnly bool + + Transport http.RoundTripper // The HTTP transport object. + + RootPEM string + CertPEM string + KeyPEM string +} + +// todo... 进行双向ssl验证(上传文件) + 自定义请求头 +func (this Config) getTransport() (http.RoundTripper, error) { + tlsClientConfig := &tls.Config{ + InsecureSkipVerify: true, + } + + if this.RootPEM != "" { + roots := x509.NewCertPool() + ok := roots.AppendCertsFromPEM([]byte(this.RootPEM)) + if !ok { + return nil, fmt.Errorf("failed to parse root certificate") + } + tlsClientConfig.RootCAs = roots + } + + if this.CertPEM != "" && this.KeyPEM != "" { + cert, err := tls.X509KeyPair([]byte(this.CertPEM), []byte(this.KeyPEM)) + if err != nil { + return nil, err + } + + tlsClientConfig.Certificates = []tls.Certificate{cert} + } + + transport := &http.Transport{TLSClientConfig: tlsClientConfig} + + return transport, nil +} + +type EsTransport struct { + Header http.Header + Transport http.RoundTripper +} + +func NewEsTransport(header http.Header, transport http.RoundTripper) *EsTransport { + return &EsTransport{Header: header, Transport: transport} +} + +func (t *EsTransport) RoundTrip(req *http.Request) (*http.Response, error) { + + for k, _ := range t.Header { + req.Header.Set(k, t.Header.Get(k)) + } + + return t.Transport.RoundTrip(req) +} + +func (this Config) ConvertV6( + logger estransportV6.Logger, + selector estransportV6.Selector, + connectionPoolFunc func([]*estransportV6.Connection, estransportV6.Selector) estransportV6.ConnectionPool, +) (elasticV6.Config, error) { + + cfg := elasticV6.Config{ + Addresses: this.Addresses, + Username: this.Username, + Password: this.Password, + CloudID: this.CloudID, + APIKey: this.APIKey, + Header: this.Header, + CACert: this.CACert, + RetryOnStatus: this.RetryOnStatus, + DisableRetry: this.DisableRetry, + EnableRetryOnTimeout: this.EnableRetryOnTimeout, + MaxRetries: this.MaxRetries, + DiscoverNodesOnStart: this.DiscoverNodesOnStart, + DiscoverNodesInterval: this.DiscoverNodesInterval, + EnableMetrics: this.EnableMetrics, + EnableDebugLogger: this.EnableDebugLogger, + + Transport: this.Transport, + } + + if logger != nil { + cfg.Logger = logger + } + if selector != nil { + cfg.Selector = selector + } + if connectionPoolFunc != nil { + cfg.ConnectionPoolFunc = connectionPoolFunc + } + + transport, err := this.getTransport() + if err != nil { + return cfg, err + } + + cfg.Transport = NewEsTransport(this.Header, transport) + + return cfg, nil +} + +func (this Config) ConvertV7( + logger estransportV7.Logger, +) (elasticV7.Config, error) { + + cfg := elasticV7.Config{ + Addresses: this.Addresses, + Username: this.Username, + Password: this.Password, + Transport: this.Transport, + } + + if logger != nil { + cfg.Logger = logger + } + + transport, err := this.getTransport() + if err != nil { + return cfg, err + } + + cfg.Transport = NewEsTransport(this.Header, transport) + + return cfg, nil +} + +func (this Config) ConvertV8( + logger estransportV8.Logger, + selector estransportV8.Selector, + connectionPoolFunc func([]*estransportV8.Connection, estransportV8.Selector) estransportV8.ConnectionPool, +) (elasticV8.Config, error) { + + cfg := elasticV8.Config{ + Addresses: this.Addresses, + Username: this.Username, + Password: this.Password, + CloudID: this.CloudID, + APIKey: this.APIKey, + ServiceToken: this.ServiceToken, + CertificateFingerprint: this.CertificateFingerprint, + Header: this.Header, + CACert: this.CACert, + RetryOnStatus: this.RetryOnStatus, + DisableRetry: this.DisableRetry, + MaxRetries: this.MaxRetries, + CompressRequestBody: this.CompressRequestBody, + DiscoverNodesOnStart: this.DiscoverNodesOnStart, + DiscoverNodesInterval: this.DiscoverNodesInterval, + EnableMetrics: this.EnableMetrics, + EnableDebugLogger: this.EnableDebugLogger, + EnableCompatibilityMode: this.EnableCompatibilityMode, + DisableMetaHeader: this.DisableMetaHeader, + + Transport: this.Transport, + } + + if logger != nil { + cfg.Logger = logger + } + if selector != nil { + cfg.Selector = selector + } + if connectionPoolFunc != nil { + cfg.ConnectionPoolFunc = connectionPoolFunc + } + + transport, err := this.getTransport() + if err != nil { + return cfg, err + } + + cfg.Transport = NewEsTransport(this.Header, transport) + + return cfg, nil +} diff --git a/pkg/infrastructure/es_sdk/pkg/redis/redis.go b/pkg/infrastructure/es_sdk/pkg/redis/redis.go new file mode 100644 index 0000000..d087101 --- /dev/null +++ b/pkg/infrastructure/es_sdk/pkg/redis/redis.go @@ -0,0 +1,80 @@ +package redis + +import ( + "context" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/base" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/cache" + proto2 "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/proto" + "github.com/1340691923/eve-plugin-sdk-go/ev_api/pkg" + "github.com/1340691923/eve-plugin-sdk-go/ev_api/proto" + "github.com/go-redis/redis/v8" + "github.com/pkg/errors" +) + +type RedisClient struct { + base.BaseDatasource + client *redis.Client +} + +func NewRedisClient(cfg *proto2.Config) (pkg.ClientInterface, error) { + ds, ok := cache.GetDataSourceCache(cfg.ConnectId) + + if !ok { + obj := &RedisClient{} + + if len(cfg.Addresses) == 0 { + return nil, errors.New("ip和端口不能为空") + } + + options := &redis.Options{ + Addr: cfg.Addresses[0], // Redis 服务器地址 + Password: "", + } + if cfg.Username != "" { + options.Username = cfg.Username + } + if cfg.Password != "" { + options.Password = cfg.Password + } + + // 打开数据库连接 + rdb := redis.NewClient(options) + obj.client = rdb + + cache.SaveDataSourceCache(cfg.ConnectId, obj) + return obj, nil + } + return ds, nil +} + +func (this *RedisClient) Ping( + ctx context.Context, +) ( + res *proto.Response, + err error, +) { + err = this.client.Ping(ctx).Err() + if err != nil { + return + } + + res = proto.NewResponseNotErr() + + return +} + +func (this *RedisClient) RedisExecCommand(ctx context.Context, dbName int, args ...interface{}) (data interface{}, err error) { + + err = this.client.Do(ctx, "SELECT", dbName).Err() + if err != nil { + return + } + + data, err = this.client.Do(ctx, args...).Result() + + if err != nil { + return nil, errors.WithStack(err) + } + + return +} diff --git a/pkg/infrastructure/es_sdk/pkg/v6/es.go b/pkg/infrastructure/es_sdk/pkg/v6/es.go new file mode 100644 index 0000000..31b1b6c --- /dev/null +++ b/pkg/infrastructure/es_sdk/pkg/v6/es.go @@ -0,0 +1,1202 @@ +package v6 + +import ( + "context" + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/base" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/cache" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/es_log" + proto2 "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/proto" + logger2 "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/eve-plugin-sdk-go/ev_api/pkg" + "github.com/1340691923/eve-plugin-sdk-go/ev_api/proto" + elasticV6 "github.com/elastic/go-elasticsearch/v6" + "github.com/elastic/go-elasticsearch/v7/esapi" + "github.com/elastic/go-elasticsearch/v8/esutil" + "github.com/pkg/errors" + "github.com/spf13/cast" + "net/http" +) + +type EsClient6 struct { + client *elasticV6.Client + base.BaseDatasource +} + +func NewEsClient6(cfg *proto2.Config) (pkg.ClientInterface, error) { + ds, ok := cache.GetDataSourceCache(cfg.ConnectId) + + if !ok { + obj := &EsClient6{} + esCfg, err := cfg.ConvertV6( + es_log.NewLogger(cfg.Cfg.EnableLogEs, true, cfg.Cfg.EnableLogEsRes, logger2.EsReqLog.Named("elasticsearch6.x")), + nil, nil) + if err != nil { + err = errors.WithStack(err) + return nil, err + } + obj.init(esCfg) + cache.SaveDataSourceCache(cfg.ConnectId, obj) + return obj, nil + } + return ds, nil +} + +func (this *EsClient6) init(config elasticV6.Config) (err error) { + + this.client, err = elasticV6.NewClient(config) + if err != nil { + fmt.Printf("Error creating the client: %s\n", err) + return + } + return +} + +func (this *EsClient6) EsVersion() (version int, err error) { + return 6, nil +} + +func (this *EsClient6) Ping( + ctx context.Context, +) ( + res *proto.Response, + err error, +) { + req, err := http.NewRequest(http.MethodGet, "/", nil) + if err != nil { + return + } + + res, err = this.EsPerformRequest(ctx, req) + + if err != nil { + return + } + if res.StatusCode() == 401 { + err = errors.New("ES地址OK,但是密码验证失败") + return + } + + return +} + +func (this *EsClient6) EsGetMapping( + ctx context.Context, + indexNames []string, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesGetMappingRequest{Index: indexNames} + httpRes, err := req.Do(ctx, this.client) + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + return +} + +func (this *EsClient6) EsSnapshotCreate( + ctx context.Context, + repository string, + snapshot string, + waitForCompletion *bool, + reqJson proto.Json, +) ( + res *proto.Response, err error) { + snapshotCreateService := esapi.SnapshotCreateRequest{ + Repository: repository, + Snapshot: snapshot, + Body: esutil.NewJSONReader(reqJson), + WaitForCompletion: waitForCompletion, + } + + var httpRes *esapi.Response + httpRes, err = snapshotCreateService.Do(ctx, this.client) + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsPerformRequest( + ctx context.Context, + req *http.Request, +) ( + res *proto.Response, err error) { + if req != nil { + req = req.WithContext(ctx) + } + + req.Header.Set("Content-Type", "application/json;charset=UTF-8") + + httpRes, err := this.client.Perform(req) + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + return +} + +func (this *EsClient6) EsSnapshotDelete( + ctx context.Context, + repository string, + snapshot string, +) ( + res *proto.Response, + err error) { + req := esapi.SnapshotDeleteRequest{ + Repository: repository, + Snapshot: snapshot, + } + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsRestoreSnapshot( + ctx context.Context, + repository string, + snapshot string, + waitForCompletion *bool, + reqJson proto.Json, +) ( + res *proto.Response, + err error, +) { + request := esapi.SnapshotRestoreRequest{ + Snapshot: snapshot, + Repository: repository, + Body: esutil.NewJSONReader(reqJson), + WaitForCompletion: waitForCompletion, + } + + httpRes, err := request.Do(ctx, this.client) + + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsSnapshotStatus( + ctx context.Context, + repository string, + snapshot []string, + ignoreUnavailable *bool, +) ( + res *proto.Response, + err error, +) { + request := esapi.SnapshotStatusRequest{ + Repository: repository, + Snapshot: snapshot, + IgnoreUnavailable: ignoreUnavailable, + } + + httpRes, err := request.Do(ctx, this.client) + + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsSnapshotGetRepository( + ctx context.Context, + repository []string, +) ( + res *proto.Response, + err error, +) { + request := esapi.SnapshotGetRepositoryRequest{ + Repository: repository, + } + + httpRes, err := request.Do(ctx, this.client) + + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsSnapshotCreateRepository( + ctx context.Context, + repository string, + reqJson proto.Json, +) ( + res *proto.Response, + err error, +) { + request := esapi.SnapshotCreateRepositoryRequest{ + Repository: repository, + Body: esutil.NewJSONReader(reqJson), + } + + httpRes, err := request.Do(ctx, this.client) + + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsSnapshotDeleteRepository( + ctx context.Context, + repository []string, +) ( + res *proto.Response, + err error, +) { + request := esapi.SnapshotDeleteRepositoryRequest{ + Repository: repository, + } + + httpRes, err := request.Do(ctx, this.client) + + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsGetIndices( + ctx context.Context, + catRequest proto.CatIndicesRequest, +) ( + res *proto.Response, + err error, +) { + req := esapi.CatIndicesRequest{ + Index: catRequest.Index, + Bytes: catRequest.Bytes, + Format: catRequest.Format, + H: catRequest.H, + Health: catRequest.Health, + Help: catRequest.Help, + IncludeUnloadedSegments: catRequest.IncludeUnloadedSegments, + Local: catRequest.Local, + MasterTimeout: catRequest.MasterTimeout, + Pri: catRequest.Pri, + S: catRequest.S, + V: catRequest.V, + Pretty: catRequest.Pretty, + Human: catRequest.Human, + ErrorTrace: catRequest.ErrorTrace, + FilterPath: catRequest.FilterPath, + Header: catRequest.Header, + } + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsCatHealth( + ctx context.Context, + catRequest proto.CatHealthRequest, +) ( + res *proto.Response, + err error, +) { + req := esapi.CatHealthRequest{ + Format: catRequest.Format, + H: catRequest.H, + Help: catRequest.Help, + S: catRequest.S, + Ts: catRequest.Ts, + V: catRequest.V, + Pretty: catRequest.Pretty, + Human: catRequest.Human, + ErrorTrace: catRequest.ErrorTrace, + FilterPath: catRequest.FilterPath, + Header: catRequest.Header, + } + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsCatShards( + ctx context.Context, + catRequest proto.CatShardsRequest, +) ( + res *proto.Response, + err error, +) { + req := esapi.CatShardsRequest{} + + req.Index = catRequest.Index + req.Bytes = catRequest.Bytes + req.Format = catRequest.Format + req.H = catRequest.H + req.Help = catRequest.Help + req.Local = catRequest.Local + req.MasterTimeout = catRequest.MasterTimeout + req.S = catRequest.S + req.V = catRequest.V + req.Pretty = catRequest.Pretty + req.Human = catRequest.Human + req.ErrorTrace = catRequest.ErrorTrace + req.FilterPath = catRequest.FilterPath + req.Header = catRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsCatCount( + ctx context.Context, + catRequest proto.CatCountRequest, +) ( + res *proto.Response, + err error, +) { + req := esapi.CatCountRequest{} + + req.Index = catRequest.Index + req.Format = catRequest.Format + req.H = catRequest.H + req.Help = catRequest.Help + req.S = catRequest.S + req.V = catRequest.V + req.Pretty = catRequest.Pretty + req.Human = catRequest.Human + req.ErrorTrace = catRequest.ErrorTrace + req.FilterPath = catRequest.FilterPath + req.Header = catRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsCatAllocationRequest( + ctx context.Context, + catRequest proto.CatAllocationRequest, +) ( + res *proto.Response, + err error, +) { + req := esapi.CatAllocationRequest{} + + req.NodeID = catRequest.NodeID + req.Bytes = catRequest.Bytes + req.Format = catRequest.Format + req.H = catRequest.H + req.Help = catRequest.Help + req.Local = catRequest.Local + req.MasterTimeout = catRequest.MasterTimeout + req.S = catRequest.S + req.V = catRequest.V + req.Pretty = catRequest.Pretty + req.Human = catRequest.Human + req.ErrorTrace = catRequest.ErrorTrace + req.FilterPath = catRequest.FilterPath + req.Header = catRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsCatAliases( + ctx context.Context, + catRequest proto.CatAliasesRequest, +) ( + res *proto.Response, + err error, +) { + req := esapi.CatAliasesRequest{} + + req.Name = catRequest.Name + req.Format = catRequest.Format + req.H = catRequest.H + req.Help = catRequest.Help + req.Local = catRequest.Local + req.S = catRequest.S + req.V = catRequest.V + req.Pretty = catRequest.Pretty + req.Human = catRequest.Human + req.ErrorTrace = catRequest.ErrorTrace + req.FilterPath = catRequest.FilterPath + req.Header = catRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsIndicesSegmentsRequest( + ctx context.Context, + human bool, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesSegmentsRequest{Human: human} + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsClusterStats( + ctx context.Context, + human bool, +) ( + res *proto.Response, + err error, +) { + req := esapi.ClusterStatsRequest{Human: human} + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsCatNodes( + ctx context.Context, + h []string, +) ( + res *proto.Response, + err error, +) { + req := esapi.CatNodesRequest{H: h, Format: "json"} + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsDelete( + ctx context.Context, + deleteRequest proto.DeleteRequest, +) ( + res *proto.Response, + err error, +) { + req := esapi.DeleteRequest{} + + req.Index = deleteRequest.Index + req.DocumentType = deleteRequest.DocumentType + req.DocumentID = deleteRequest.DocumentID + req.IfPrimaryTerm = deleteRequest.IfPrimaryTerm + req.IfSeqNo = deleteRequest.IfSeqNo + req.Refresh = deleteRequest.Refresh + req.Routing = deleteRequest.Routing + req.Timeout = deleteRequest.Timeout + req.Version = deleteRequest.Version + req.VersionType = deleteRequest.VersionType + req.WaitForActiveShards = deleteRequest.WaitForActiveShards + req.Pretty = deleteRequest.Pretty + req.Human = deleteRequest.Human + req.ErrorTrace = deleteRequest.ErrorTrace + req.FilterPath = deleteRequest.FilterPath + req.Header = deleteRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsRefresh( + ctx context.Context, + indexNames []string, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesRefreshRequest{Index: indexNames} + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsOpen( + ctx context.Context, + indexNames []string, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesOpenRequest{Index: indexNames} + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsFlush( + ctx context.Context, + indexNames []string, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesFlushRequest{Index: indexNames} + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsIndicesClearCache( + ctx context.Context, + indexNames []string, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesClearCacheRequest{Index: indexNames} + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsIndicesClose( + ctx context.Context, + indexNames []string, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesCloseRequest{Index: indexNames} + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsIndicesForcemerge( + ctx context.Context, + indexNames []string, + maxNumSegments *int, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesForcemergeRequest{Index: indexNames, MaxNumSegments: maxNumSegments} + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsDeleteByQuery( + ctx context.Context, + indexNames []string, + documents []string, + body interface{}, +) ( + res *proto.Response, + err error, +) { + req := esapi.DeleteByQueryRequest{Index: indexNames, DocumentType: documents, Body: esutil.NewJSONReader(body)} + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsUpdate( + ctx context.Context, + updateRequest proto.UpdateRequest, + body interface{}, +) ( + res *proto.Response, + err error, +) { + req := esapi.UpdateRequest{} + + req.Index = updateRequest.Index + req.DocumentType = updateRequest.DocumentType + req.DocumentID = updateRequest.DocumentID + req.Body = esutil.NewJSONReader(map[string]interface{}{ + "doc": body, + }) + req.IfPrimaryTerm = updateRequest.IfPrimaryTerm + req.IfSeqNo = updateRequest.IfSeqNo + req.Lang = updateRequest.Lang + req.Refresh = updateRequest.Refresh + req.RetryOnConflict = updateRequest.RetryOnConflict + req.Routing = updateRequest.Routing + req.Source = updateRequest.Source + req.SourceExcludes = updateRequest.SourceExcludes + req.SourceIncludes = updateRequest.SourceIncludes + req.Timeout = updateRequest.Timeout + req.WaitForActiveShards = updateRequest.WaitForActiveShards + req.Pretty = updateRequest.Pretty + req.Human = updateRequest.Human + req.ErrorTrace = updateRequest.ErrorTrace + req.FilterPath = updateRequest.FilterPath + req.Header = updateRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsCreate( + ctx context.Context, + createRequest proto.CreateRequest, + body interface{}, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndexRequest{} + + req.Index = createRequest.Index + req.DocumentType = createRequest.DocumentType + req.DocumentID = createRequest.DocumentID + req.Body = esutil.NewJSONReader(body) + req.Pipeline = createRequest.Pipeline + req.Refresh = createRequest.Refresh + req.Routing = createRequest.Routing + req.Timeout = createRequest.Timeout + req.Version = createRequest.Version + req.VersionType = createRequest.VersionType + req.WaitForActiveShards = createRequest.WaitForActiveShards + req.Pretty = createRequest.Pretty + req.Human = createRequest.Human + req.ErrorTrace = createRequest.ErrorTrace + req.FilterPath = createRequest.FilterPath + req.Header = createRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsSearch( + ctx context.Context, + searchRequest proto.SearchRequest, + query interface{}, +) ( + res *proto.Response, + err error, +) { + + req := esapi.SearchRequest{} + + req.Index = searchRequest.Index + req.DocumentType = searchRequest.DocumentType + req.Body = esutil.NewJSONReader(query) + req.AllowNoIndices = searchRequest.AllowNoIndices + req.AllowPartialSearchResults = searchRequest.AllowPartialSearchResults + req.Analyzer = searchRequest.Analyzer + req.AnalyzeWildcard = searchRequest.AnalyzeWildcard + req.BatchedReduceSize = searchRequest.BatchedReduceSize + req.CcsMinimizeRoundtrips = searchRequest.CcsMinimizeRoundtrips + req.DefaultOperator = searchRequest.DefaultOperator + req.Df = searchRequest.Df + req.DocvalueFields = searchRequest.DocvalueFields + req.ExpandWildcards = searchRequest.ExpandWildcards + req.Explain = searchRequest.Explain + req.From = searchRequest.From + req.IgnoreThrottled = searchRequest.IgnoreThrottled + req.IgnoreUnavailable = searchRequest.IgnoreUnavailable + req.Lenient = searchRequest.Lenient + req.MaxConcurrentShardRequests = searchRequest.MaxConcurrentShardRequests + req.Preference = searchRequest.Preference + req.PreFilterShardSize = searchRequest.PreFilterShardSize + req.Query = searchRequest.Query + req.RequestCache = searchRequest.RequestCache + req.RestTotalHitsAsInt = searchRequest.RestTotalHitsAsInt + req.Routing = searchRequest.Routing + req.Scroll = searchRequest.Scroll + req.SearchType = searchRequest.SearchType + req.SeqNoPrimaryTerm = searchRequest.SeqNoPrimaryTerm + req.Size = searchRequest.Size + req.Sort = searchRequest.Sort + req.Source = searchRequest.Source + req.SourceExcludes = searchRequest.SourceExcludes + req.SourceIncludes = searchRequest.SourceIncludes + req.Stats = searchRequest.Stats + req.StoredFields = searchRequest.StoredFields + req.SuggestField = searchRequest.SuggestField + req.SuggestMode = searchRequest.SuggestMode + req.SuggestSize = searchRequest.SuggestSize + req.SuggestText = searchRequest.SuggestText + req.TerminateAfter = searchRequest.TerminateAfter + req.Timeout = searchRequest.Timeout + req.TrackScores = searchRequest.TrackScores + req.TrackTotalHits = searchRequest.TrackTotalHits + req.TypedKeys = searchRequest.TypedKeys + req.Version = searchRequest.Version + req.Pretty = searchRequest.Pretty + req.Human = searchRequest.Human + req.ErrorTrace = searchRequest.ErrorTrace + req.FilterPath = searchRequest.FilterPath + req.Header = searchRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsIndicesPutSettingsRequest( + ctx context.Context, + indexSettingsRequest proto.IndicesPutSettingsRequest, + body interface{}, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesPutSettingsRequest{} + + req.Index = indexSettingsRequest.Index + req.Body = esutil.NewJSONReader(body) + req.AllowNoIndices = indexSettingsRequest.AllowNoIndices + req.ExpandWildcards = indexSettingsRequest.ExpandWildcards + req.FlatSettings = indexSettingsRequest.FlatSettings + req.IgnoreUnavailable = indexSettingsRequest.IgnoreUnavailable + req.MasterTimeout = indexSettingsRequest.MasterTimeout + req.PreserveExisting = indexSettingsRequest.PreserveExisting + req.Timeout = indexSettingsRequest.Timeout + req.Pretty = indexSettingsRequest.Pretty + req.Human = indexSettingsRequest.Human + req.ErrorTrace = indexSettingsRequest.ErrorTrace + req.FilterPath = indexSettingsRequest.FilterPath + req.Header = indexSettingsRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsCreateIndex( + ctx context.Context, + indexCreateRequest proto.IndicesCreateRequest, + body interface{}, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesCreateRequest{} + + req.Index = indexCreateRequest.Index + req.Body = esutil.NewJSONReader(body) + req.IncludeTypeName = indexCreateRequest.IncludeTypeName + req.MasterTimeout = indexCreateRequest.MasterTimeout + req.Timeout = indexCreateRequest.Timeout + req.WaitForActiveShards = indexCreateRequest.WaitForActiveShards + req.Pretty = indexCreateRequest.Pretty + req.Human = indexCreateRequest.Human + req.ErrorTrace = indexCreateRequest.ErrorTrace + req.FilterPath = indexCreateRequest.FilterPath + req.Header = indexCreateRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsDeleteIndex( + ctx context.Context, + indicesDeleteRequest proto.IndicesDeleteRequest, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesDeleteRequest{} + + req.Index = indicesDeleteRequest.Index + req.AllowNoIndices = indicesDeleteRequest.AllowNoIndices + req.ExpandWildcards = indicesDeleteRequest.ExpandWildcards + req.IgnoreUnavailable = indicesDeleteRequest.IgnoreUnavailable + req.MasterTimeout = indicesDeleteRequest.MasterTimeout + req.Timeout = indicesDeleteRequest.Timeout + req.Pretty = indicesDeleteRequest.Pretty + req.Human = indicesDeleteRequest.Human + req.ErrorTrace = indicesDeleteRequest.ErrorTrace + req.FilterPath = indicesDeleteRequest.FilterPath + req.Header = indicesDeleteRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsReindex( + ctx context.Context, + reindexRequest proto.ReindexRequest, + body interface{}, +) ( + res *proto.Response, + err error, +) { + req := esapi.ReindexRequest{} + + req.Body = esutil.NewJSONReader(body) + req.MaxDocs = reindexRequest.MaxDocs + req.Refresh = reindexRequest.Refresh + req.RequestsPerSecond = reindexRequest.RequestsPerSecond + req.Scroll = reindexRequest.Scroll + S := cast.ToInt(reindexRequest.Slices) + req.Slices = &S + req.Timeout = reindexRequest.Timeout + req.WaitForActiveShards = reindexRequest.WaitForActiveShards + req.WaitForCompletion = reindexRequest.WaitForCompletion + req.Pretty = reindexRequest.Pretty + req.Human = reindexRequest.Human + req.ErrorTrace = reindexRequest.ErrorTrace + req.FilterPath = reindexRequest.FilterPath + req.Header = reindexRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsIndicesGetSettingsRequest( + ctx context.Context, + indicesGetSettingsRequest proto.IndicesGetSettingsRequest, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesGetSettingsRequest{} + + req.Index = indicesGetSettingsRequest.Index + req.Name = indicesGetSettingsRequest.Name + req.AllowNoIndices = indicesGetSettingsRequest.AllowNoIndices + req.ExpandWildcards = indicesGetSettingsRequest.ExpandWildcards + req.FlatSettings = indicesGetSettingsRequest.FlatSettings + req.IgnoreUnavailable = indicesGetSettingsRequest.IgnoreUnavailable + req.IncludeDefaults = indicesGetSettingsRequest.IncludeDefaults + req.Local = indicesGetSettingsRequest.Local + req.MasterTimeout = indicesGetSettingsRequest.MasterTimeout + req.Pretty = indicesGetSettingsRequest.Pretty + req.Human = indicesGetSettingsRequest.Human + req.ErrorTrace = indicesGetSettingsRequest.ErrorTrace + req.FilterPath = indicesGetSettingsRequest.FilterPath + req.Header = indicesGetSettingsRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsPutMapping( + ctx context.Context, + indicesPutMappingRequest proto.IndicesPutMappingRequest, + body interface{}, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesPutMappingRequest{} + + req.Index = indicesPutMappingRequest.Index + req.DocumentType = indicesPutMappingRequest.DocumentType + req.Body = esutil.NewJSONReader(body) + req.AllowNoIndices = indicesPutMappingRequest.AllowNoIndices + req.ExpandWildcards = indicesPutMappingRequest.ExpandWildcards + req.IgnoreUnavailable = indicesPutMappingRequest.IgnoreUnavailable + req.IncludeTypeName = indicesPutMappingRequest.IncludeTypeName + req.MasterTimeout = indicesPutMappingRequest.MasterTimeout + req.Timeout = indicesPutMappingRequest.Timeout + req.Pretty = indicesPutMappingRequest.Pretty + req.Human = indicesPutMappingRequest.Human + req.ErrorTrace = indicesPutMappingRequest.ErrorTrace + req.FilterPath = indicesPutMappingRequest.FilterPath + req.Header = indicesPutMappingRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsGetAliases( + ctx context.Context, + indexNames []string, +) ( + res *proto.Response, + err error, +) { + + httpRes, err := this.client.Indices.GetAlias( + this.client.Indices.GetAlias.WithIndex(indexNames...), + this.client.Indices.GetAlias.WithContext(ctx), + ) + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsAddAliases( + ctx context.Context, + indexName []string, + aliasName string, +) ( + res *proto.Response, + err error, +) { + + httpRes, err := this.client.Indices.PutAlias( + indexName, + aliasName, + this.client.Indices.PutAlias.WithContext(ctx), + ) + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsRemoveAliases( + ctx context.Context, + indexName []string, + aliasName []string, +) ( + res *proto.Response, + err error, +) { + + httpRes, err := this.client.Indices.DeleteAlias( + indexName, + aliasName, + this.client.Indices.DeleteAlias.WithContext(ctx), + ) + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsMoveToAnotherIndexAliases( + ctx context.Context, + body proto.AliasAction, +) ( + res *proto.Response, + err error, +) { + + httpRes, err := this.client.Indices.UpdateAliases( + esutil.NewJSONReader(body), + this.client.Indices.UpdateAliases.WithContext(ctx), + ) + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsTaskList( + ctx context.Context, +) ( + res *proto.Response, + err error, +) { + httpRes, err := this.client.Tasks.List( + this.client.Tasks.List.WithDetailed(true), + this.client.Tasks.List.WithContext(ctx)) + if err != nil { + err = errors.WithStack(err) + return + } + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient6) EsTasksCancel( + ctx context.Context, + taskId string, +) ( + res *proto.Response, + err error, +) { + httpRes, err := this.client.Tasks.Cancel( + this.client.Tasks.Cancel.WithTaskID(taskId), + this.client.Tasks.Cancel.WithContext(ctx)) + if err != nil { + err = errors.WithStack(err) + return + } + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} diff --git a/pkg/infrastructure/es_sdk/pkg/v7/es.go b/pkg/infrastructure/es_sdk/pkg/v7/es.go new file mode 100644 index 0000000..2357c23 --- /dev/null +++ b/pkg/infrastructure/es_sdk/pkg/v7/es.go @@ -0,0 +1,1198 @@ +package v7 + +import ( + "context" + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/base" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/cache" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/es_log" + proto2 "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/proto" + logger2 "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/eve-plugin-sdk-go/ev_api/pkg" + "github.com/1340691923/eve-plugin-sdk-go/ev_api/proto" + elasticV7 "github.com/elastic/go-elasticsearch/v7" + "github.com/elastic/go-elasticsearch/v7/esapi" + "github.com/elastic/go-elasticsearch/v7/esutil" + "github.com/pkg/errors" + "github.com/spf13/cast" + "net/http" +) + +type EsClient7 struct { + client *elasticV7.Client + base.BaseDatasource +} + +func NewEsClient7(cfg *proto2.Config) (pkg.ClientInterface, error) { + ds, ok := cache.GetDataSourceCache(cfg.ConnectId) + if !ok { + obj := &EsClient7{} + esCfg, err := cfg.ConvertV7( + es_log.NewLogger(cfg.Cfg.EnableLogEs, true, cfg.Cfg.EnableLogEsRes, logger2.EsReqLog.Named("elasticsearch7.x"))) + if err != nil { + err = errors.WithStack(err) + return nil, err + } + obj.init(esCfg) + cache.SaveDataSourceCache(cfg.ConnectId, obj) + return obj, nil + } + + return ds, nil +} + +func (this *EsClient7) init(config elasticV7.Config) (err error) { + + this.client, err = elasticV7.NewClient(config) + if err != nil { + fmt.Printf("Error creating the client: %s\n", err) + return + } + return +} + +func (this *EsClient7) EsVersion() (version int, err error) { + return 7, nil +} + +func (this *EsClient7) Ping( + ctx context.Context, +) ( + res *proto.Response, + err error, +) { + req, err := http.NewRequest(http.MethodGet, "/", nil) + if err != nil { + return + } + + res, err = this.EsPerformRequest(ctx, req) + if err != nil { + return + } + if res.StatusCode() == 401 { + err = errors.New("ES地址OK,但是密码验证失败") + return + } + + return +} + +func (this *EsClient7) EsGetMapping( + ctx context.Context, + indexNames []string, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesGetMappingRequest{Index: indexNames} + httpRes, err := req.Do(ctx, this.client) + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsSnapshotCreate( + ctx context.Context, + repository string, + snapshot string, + waitForCompletion *bool, + reqJson proto.Json, +) ( + res *proto.Response, err error) { + snapshotCreateService := esapi.SnapshotCreateRequest{ + Repository: repository, + Snapshot: snapshot, + Body: esutil.NewJSONReader(reqJson), + WaitForCompletion: waitForCompletion, + } + + var httpRes *esapi.Response + httpRes, err = snapshotCreateService.Do(ctx, this.client) + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsPerformRequest( + ctx context.Context, + req *http.Request, +) ( + res *proto.Response, err error) { + if req != nil { + req = req.WithContext(ctx) + } + req.Header.Set("Content-Type", "application/json;charset=UTF-8") + httpRes, err := this.client.Perform(req) + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + return +} + +func (this *EsClient7) EsSnapshotDelete( + ctx context.Context, + repository string, + snapshot string, +) ( + res *proto.Response, + err error) { + req := esapi.SnapshotDeleteRequest{ + Repository: repository, + Snapshot: snapshot, + } + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsRestoreSnapshot( + ctx context.Context, + repository string, + snapshot string, + waitForCompletion *bool, + reqJson proto.Json, +) ( + res *proto.Response, + err error, +) { + request := esapi.SnapshotRestoreRequest{ + Snapshot: snapshot, + Repository: repository, + Body: esutil.NewJSONReader(reqJson), + WaitForCompletion: waitForCompletion, + } + + httpRes, err := request.Do(ctx, this.client) + + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsRefresh( + ctx context.Context, + indexNames []string, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesRefreshRequest{Index: indexNames} + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsOpen( + ctx context.Context, + indexNames []string, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesOpenRequest{Index: indexNames} + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsFlush( + ctx context.Context, + indexNames []string, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesFlushRequest{Index: indexNames} + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsIndicesClearCache( + ctx context.Context, + indexNames []string, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesClearCacheRequest{Index: indexNames} + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsIndicesClose( + ctx context.Context, + indexNames []string, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesCloseRequest{Index: indexNames} + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsIndicesForcemerge( + ctx context.Context, + indexNames []string, + maxNumSegments *int, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesForcemergeRequest{Index: indexNames, MaxNumSegments: maxNumSegments} + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsDeleteByQuery( + ctx context.Context, + indexNames []string, + documents []string, + body interface{}, +) ( + res *proto.Response, + err error, +) { + req := esapi.DeleteByQueryRequest{Index: indexNames, DocumentType: []string{}, Body: esutil.NewJSONReader(body)} + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsSnapshotStatus( + ctx context.Context, + repository string, + snapshot []string, + ignoreUnavailable *bool, +) ( + res *proto.Response, + err error, +) { + request := esapi.SnapshotStatusRequest{ + Repository: repository, + Snapshot: snapshot, + IgnoreUnavailable: ignoreUnavailable, + } + + httpRes, err := request.Do(ctx, this.client) + + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsSnapshotGetRepository( + ctx context.Context, + repository []string, +) ( + res *proto.Response, + err error, +) { + request := esapi.SnapshotGetRepositoryRequest{ + Repository: repository, + } + + httpRes, err := request.Do(ctx, this.client) + + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsSnapshotCreateRepository( + ctx context.Context, + repository string, + reqJson proto.Json, +) ( + res *proto.Response, + err error, +) { + request := esapi.SnapshotCreateRepositoryRequest{ + Repository: repository, + Body: esutil.NewJSONReader(reqJson), + } + + httpRes, err := request.Do(ctx, this.client) + + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsSnapshotDeleteRepository( + ctx context.Context, + repository []string, +) ( + res *proto.Response, + err error, +) { + request := esapi.SnapshotDeleteRepositoryRequest{ + Repository: repository, + } + + httpRes, err := request.Do(ctx, this.client) + + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsGetIndices( + ctx context.Context, + catRequest proto.CatIndicesRequest, +) ( + res *proto.Response, + err error, +) { + req := esapi.CatIndicesRequest{ + Index: catRequest.Index, + Bytes: catRequest.Bytes, + Format: catRequest.Format, + H: catRequest.H, + Health: catRequest.Health, + Help: catRequest.Help, + IncludeUnloadedSegments: catRequest.IncludeUnloadedSegments, + Local: catRequest.Local, + MasterTimeout: catRequest.MasterTimeout, + Pri: catRequest.Pri, + S: catRequest.S, + V: catRequest.V, + Pretty: catRequest.Pretty, + Human: catRequest.Human, + ErrorTrace: catRequest.ErrorTrace, + FilterPath: catRequest.FilterPath, + Header: catRequest.Header, + } + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsCatHealth( + ctx context.Context, + catRequest proto.CatHealthRequest, +) ( + res *proto.Response, + err error, +) { + req := esapi.CatHealthRequest{ + Format: catRequest.Format, + H: catRequest.H, + Help: catRequest.Help, + S: catRequest.S, + Ts: catRequest.Ts, + V: catRequest.V, + Pretty: catRequest.Pretty, + Human: catRequest.Human, + ErrorTrace: catRequest.ErrorTrace, + FilterPath: catRequest.FilterPath, + Header: catRequest.Header, + } + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsCatShards( + ctx context.Context, + catRequest proto.CatShardsRequest, +) ( + res *proto.Response, + err error, +) { + req := esapi.CatShardsRequest{} + + req.Index = catRequest.Index + req.Bytes = catRequest.Bytes + req.Format = catRequest.Format + req.H = catRequest.H + req.Help = catRequest.Help + req.Local = catRequest.Local + req.MasterTimeout = catRequest.MasterTimeout + req.S = catRequest.S + req.V = catRequest.V + req.Pretty = catRequest.Pretty + req.Human = catRequest.Human + req.ErrorTrace = catRequest.ErrorTrace + req.FilterPath = catRequest.FilterPath + req.Header = catRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsCatCount( + ctx context.Context, + catRequest proto.CatCountRequest, +) ( + res *proto.Response, + err error, +) { + req := esapi.CatCountRequest{} + + req.Index = catRequest.Index + req.Format = catRequest.Format + req.H = catRequest.H + req.Help = catRequest.Help + req.S = catRequest.S + req.V = catRequest.V + req.Pretty = catRequest.Pretty + req.Human = catRequest.Human + req.ErrorTrace = catRequest.ErrorTrace + req.FilterPath = catRequest.FilterPath + req.Header = catRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsCatAllocationRequest( + ctx context.Context, + catRequest proto.CatAllocationRequest, +) ( + res *proto.Response, + err error, +) { + req := esapi.CatAllocationRequest{} + + req.NodeID = catRequest.NodeID + req.Bytes = catRequest.Bytes + req.Format = catRequest.Format + req.H = catRequest.H + req.Help = catRequest.Help + req.Local = catRequest.Local + req.MasterTimeout = catRequest.MasterTimeout + req.S = catRequest.S + req.V = catRequest.V + req.Pretty = catRequest.Pretty + req.Human = catRequest.Human + req.ErrorTrace = catRequest.ErrorTrace + req.FilterPath = catRequest.FilterPath + req.Header = catRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsCatAliases( + ctx context.Context, + catRequest proto.CatAliasesRequest, +) ( + res *proto.Response, + err error, +) { + req := esapi.CatAliasesRequest{} + + req.Name = catRequest.Name + req.Format = catRequest.Format + req.H = catRequest.H + req.Help = catRequest.Help + req.Local = catRequest.Local + req.S = catRequest.S + req.V = catRequest.V + req.Pretty = catRequest.Pretty + req.Human = catRequest.Human + req.ErrorTrace = catRequest.ErrorTrace + req.FilterPath = catRequest.FilterPath + req.Header = catRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsIndicesSegmentsRequest( + ctx context.Context, + human bool, +) ( + res *proto.Response, + err error, +) { + req := esapi.CatSegmentsRequest{Human: human, Format: "json"} + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsClusterStats( + ctx context.Context, + human bool, +) ( + res *proto.Response, + err error, +) { + req := esapi.ClusterStatsRequest{Human: human} + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsCatNodes( + ctx context.Context, + h []string, +) ( + res *proto.Response, + err error, +) { + req := esapi.CatNodesRequest{H: h, Format: "json"} + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsDelete( + ctx context.Context, + deleteRequest proto.DeleteRequest, +) ( + res *proto.Response, + err error, +) { + req := esapi.DeleteRequest{} + + req.Index = deleteRequest.Index + req.DocumentType = "_doc" //deleteRequest.DocumentType + req.DocumentID = deleteRequest.DocumentID + req.IfPrimaryTerm = deleteRequest.IfPrimaryTerm + req.IfSeqNo = deleteRequest.IfSeqNo + req.Refresh = deleteRequest.Refresh + req.Routing = deleteRequest.Routing + req.Timeout = deleteRequest.Timeout + req.Version = deleteRequest.Version + req.VersionType = deleteRequest.VersionType + req.WaitForActiveShards = deleteRequest.WaitForActiveShards + req.Pretty = deleteRequest.Pretty + req.Human = deleteRequest.Human + req.ErrorTrace = deleteRequest.ErrorTrace + req.FilterPath = deleteRequest.FilterPath + req.Header = deleteRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsUpdate( + ctx context.Context, + updateRequest proto.UpdateRequest, + body interface{}, +) ( + res *proto.Response, + err error, +) { + req := esapi.UpdateRequest{} + + req.Index = updateRequest.Index + req.DocumentType = "_doc" //updateRequest.DocumentType + req.DocumentID = updateRequest.DocumentID + req.Body = esutil.NewJSONReader(map[string]interface{}{ + "doc": body, + }) + req.IfPrimaryTerm = updateRequest.IfPrimaryTerm + req.IfSeqNo = updateRequest.IfSeqNo + req.Lang = updateRequest.Lang + req.Refresh = updateRequest.Refresh + req.RetryOnConflict = updateRequest.RetryOnConflict + req.Routing = updateRequest.Routing + req.Source = updateRequest.Source + req.SourceExcludes = updateRequest.SourceExcludes + req.SourceIncludes = updateRequest.SourceIncludes + req.Timeout = updateRequest.Timeout + req.WaitForActiveShards = updateRequest.WaitForActiveShards + req.Pretty = updateRequest.Pretty + req.Human = updateRequest.Human + req.ErrorTrace = updateRequest.ErrorTrace + req.FilterPath = updateRequest.FilterPath + req.Header = updateRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsCreate( + ctx context.Context, + createRequest proto.CreateRequest, + body interface{}, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndexRequest{} + req.Index = createRequest.Index + req.DocumentType = "_doc" //createRequest.DocumentType + req.DocumentID = createRequest.DocumentID + req.Body = esutil.NewJSONReader(body) + req.Pipeline = createRequest.Pipeline + req.Refresh = createRequest.Refresh + req.Routing = createRequest.Routing + req.Timeout = createRequest.Timeout + req.Version = createRequest.Version + req.VersionType = createRequest.VersionType + req.WaitForActiveShards = createRequest.WaitForActiveShards + req.Pretty = createRequest.Pretty + req.Human = createRequest.Human + req.ErrorTrace = createRequest.ErrorTrace + req.FilterPath = createRequest.FilterPath + req.Header = createRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsSearch( + ctx context.Context, + searchRequest proto.SearchRequest, + query interface{}, +) ( + res *proto.Response, + err error, +) { + + req := esapi.SearchRequest{} + + req.Index = searchRequest.Index + req.DocumentType = []string{} //searchRequest.DocumentType + req.Body = esutil.NewJSONReader(query) + req.AllowNoIndices = searchRequest.AllowNoIndices + req.AllowPartialSearchResults = searchRequest.AllowPartialSearchResults + req.Analyzer = searchRequest.Analyzer + req.AnalyzeWildcard = searchRequest.AnalyzeWildcard + req.BatchedReduceSize = searchRequest.BatchedReduceSize + req.CcsMinimizeRoundtrips = searchRequest.CcsMinimizeRoundtrips + req.DefaultOperator = searchRequest.DefaultOperator + req.Df = searchRequest.Df + req.DocvalueFields = searchRequest.DocvalueFields + req.ExpandWildcards = searchRequest.ExpandWildcards + req.Explain = searchRequest.Explain + req.From = searchRequest.From + req.IgnoreThrottled = searchRequest.IgnoreThrottled + req.IgnoreUnavailable = searchRequest.IgnoreUnavailable + req.Lenient = searchRequest.Lenient + req.MaxConcurrentShardRequests = searchRequest.MaxConcurrentShardRequests + req.Preference = searchRequest.Preference + req.PreFilterShardSize = searchRequest.PreFilterShardSize + req.Query = searchRequest.Query + req.RequestCache = searchRequest.RequestCache + req.RestTotalHitsAsInt = searchRequest.RestTotalHitsAsInt + req.Routing = searchRequest.Routing + req.Scroll = searchRequest.Scroll + req.SearchType = searchRequest.SearchType + req.SeqNoPrimaryTerm = searchRequest.SeqNoPrimaryTerm + req.Size = searchRequest.Size + req.Sort = searchRequest.Sort + req.Source = searchRequest.Source + req.SourceExcludes = searchRequest.SourceExcludes + req.SourceIncludes = searchRequest.SourceIncludes + req.Stats = searchRequest.Stats + req.StoredFields = searchRequest.StoredFields + req.SuggestField = searchRequest.SuggestField + req.SuggestMode = searchRequest.SuggestMode + req.SuggestSize = searchRequest.SuggestSize + req.SuggestText = searchRequest.SuggestText + req.TerminateAfter = searchRequest.TerminateAfter + req.Timeout = searchRequest.Timeout + req.TrackScores = searchRequest.TrackScores + req.TrackTotalHits = searchRequest.TrackTotalHits + req.TypedKeys = searchRequest.TypedKeys + req.Version = searchRequest.Version + req.Pretty = searchRequest.Pretty + req.Human = searchRequest.Human + req.ErrorTrace = searchRequest.ErrorTrace + req.FilterPath = searchRequest.FilterPath + req.Header = searchRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsIndicesPutSettingsRequest( + ctx context.Context, + indexSettingsRequest proto.IndicesPutSettingsRequest, + body interface{}, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesPutSettingsRequest{} + + req.Index = indexSettingsRequest.Index + req.Body = esutil.NewJSONReader(body) + req.AllowNoIndices = indexSettingsRequest.AllowNoIndices + req.ExpandWildcards = indexSettingsRequest.ExpandWildcards + req.FlatSettings = indexSettingsRequest.FlatSettings + req.IgnoreUnavailable = indexSettingsRequest.IgnoreUnavailable + req.MasterTimeout = indexSettingsRequest.MasterTimeout + req.PreserveExisting = indexSettingsRequest.PreserveExisting + req.Timeout = indexSettingsRequest.Timeout + req.Pretty = indexSettingsRequest.Pretty + req.Human = indexSettingsRequest.Human + req.ErrorTrace = indexSettingsRequest.ErrorTrace + req.FilterPath = indexSettingsRequest.FilterPath + req.Header = indexSettingsRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsCreateIndex( + ctx context.Context, + indexCreateRequest proto.IndicesCreateRequest, + body interface{}, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesCreateRequest{} + + req.Index = indexCreateRequest.Index + req.Body = esutil.NewJSONReader(body) + req.IncludeTypeName = indexCreateRequest.IncludeTypeName + req.MasterTimeout = indexCreateRequest.MasterTimeout + req.Timeout = indexCreateRequest.Timeout + req.WaitForActiveShards = indexCreateRequest.WaitForActiveShards + req.Pretty = indexCreateRequest.Pretty + req.Human = indexCreateRequest.Human + req.ErrorTrace = indexCreateRequest.ErrorTrace + req.FilterPath = indexCreateRequest.FilterPath + req.Header = indexCreateRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsDeleteIndex( + ctx context.Context, + indicesDeleteRequest proto.IndicesDeleteRequest, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesDeleteRequest{} + + req.Index = indicesDeleteRequest.Index + req.AllowNoIndices = indicesDeleteRequest.AllowNoIndices + req.ExpandWildcards = indicesDeleteRequest.ExpandWildcards + req.IgnoreUnavailable = indicesDeleteRequest.IgnoreUnavailable + req.MasterTimeout = indicesDeleteRequest.MasterTimeout + req.Timeout = indicesDeleteRequest.Timeout + req.Pretty = indicesDeleteRequest.Pretty + req.Human = indicesDeleteRequest.Human + req.ErrorTrace = indicesDeleteRequest.ErrorTrace + req.FilterPath = indicesDeleteRequest.FilterPath + req.Header = indicesDeleteRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsReindex( + ctx context.Context, + reindexRequest proto.ReindexRequest, + body interface{}, +) ( + res *proto.Response, + err error, +) { + req := esapi.ReindexRequest{} + + req.Body = esutil.NewJSONReader(body) + req.MaxDocs = reindexRequest.MaxDocs + req.Refresh = reindexRequest.Refresh + req.RequestsPerSecond = reindexRequest.RequestsPerSecond + req.Scroll = reindexRequest.Scroll + S := cast.ToInt(reindexRequest.Slices) + req.Slices = &S + req.Timeout = reindexRequest.Timeout + req.WaitForActiveShards = reindexRequest.WaitForActiveShards + req.WaitForCompletion = reindexRequest.WaitForCompletion + req.Pretty = reindexRequest.Pretty + req.Human = reindexRequest.Human + req.ErrorTrace = reindexRequest.ErrorTrace + req.FilterPath = reindexRequest.FilterPath + req.Header = reindexRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsIndicesGetSettingsRequest( + ctx context.Context, + indicesGetSettingsRequest proto.IndicesGetSettingsRequest, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesGetSettingsRequest{} + + req.Index = indicesGetSettingsRequest.Index + req.Name = indicesGetSettingsRequest.Name + req.AllowNoIndices = indicesGetSettingsRequest.AllowNoIndices + req.ExpandWildcards = indicesGetSettingsRequest.ExpandWildcards + req.FlatSettings = indicesGetSettingsRequest.FlatSettings + req.IgnoreUnavailable = indicesGetSettingsRequest.IgnoreUnavailable + req.IncludeDefaults = indicesGetSettingsRequest.IncludeDefaults + req.Local = indicesGetSettingsRequest.Local + req.MasterTimeout = indicesGetSettingsRequest.MasterTimeout + req.Pretty = indicesGetSettingsRequest.Pretty + req.Human = indicesGetSettingsRequest.Human + req.ErrorTrace = indicesGetSettingsRequest.ErrorTrace + req.FilterPath = indicesGetSettingsRequest.FilterPath + req.Header = indicesGetSettingsRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsPutMapping( + ctx context.Context, + indicesPutMappingRequest proto.IndicesPutMappingRequest, + body interface{}, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesPutMappingRequest{} + + req.Index = indicesPutMappingRequest.Index + req.DocumentType = "_doc" //indicesPutMappingRequest.DocumentType + req.Body = esutil.NewJSONReader(body) + req.AllowNoIndices = indicesPutMappingRequest.AllowNoIndices + req.ExpandWildcards = indicesPutMappingRequest.ExpandWildcards + req.IgnoreUnavailable = indicesPutMappingRequest.IgnoreUnavailable + req.IncludeTypeName = indicesPutMappingRequest.IncludeTypeName + req.MasterTimeout = indicesPutMappingRequest.MasterTimeout + req.Timeout = indicesPutMappingRequest.Timeout + req.Pretty = indicesPutMappingRequest.Pretty + req.Human = indicesPutMappingRequest.Human + req.ErrorTrace = indicesPutMappingRequest.ErrorTrace + req.FilterPath = indicesPutMappingRequest.FilterPath + req.Header = indicesPutMappingRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsGetAliases( + ctx context.Context, + indexNames []string, +) ( + res *proto.Response, + err error, +) { + + httpRes, err := this.client.Indices.GetAlias( + this.client.Indices.GetAlias.WithIndex(indexNames...), + this.client.Indices.GetAlias.WithContext(ctx), + ) + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsAddAliases( + ctx context.Context, + indexName []string, + aliasName string, +) ( + res *proto.Response, + err error, +) { + + httpRes, err := this.client.Indices.PutAlias( + indexName, + aliasName, + this.client.Indices.PutAlias.WithContext(ctx), + ) + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsRemoveAliases( + ctx context.Context, + indexName []string, + aliasName []string, +) ( + res *proto.Response, + err error, +) { + + httpRes, err := this.client.Indices.DeleteAlias( + indexName, + aliasName, + this.client.Indices.DeleteAlias.WithContext(ctx), + ) + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsMoveToAnotherIndexAliases( + ctx context.Context, + body proto.AliasAction, +) ( + res *proto.Response, + err error, +) { + + httpRes, err := this.client.Indices.UpdateAliases( + esutil.NewJSONReader(body), + this.client.Indices.UpdateAliases.WithContext(ctx), + ) + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsTaskList( + ctx context.Context, +) ( + res *proto.Response, + err error, +) { + httpRes, err := this.client.Tasks.List( + this.client.Tasks.List.WithDetailed(true), + this.client.Tasks.List.WithContext(ctx)) + if err != nil { + err = errors.WithStack(err) + return + } + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient7) EsTasksCancel( + ctx context.Context, + taskId string, +) ( + res *proto.Response, + err error, +) { + httpRes, err := this.client.Tasks.Cancel( + this.client.Tasks.Cancel.WithTaskID(taskId), + this.client.Tasks.Cancel.WithContext(ctx)) + if err != nil { + err = errors.WithStack(err) + return + } + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} diff --git a/pkg/infrastructure/es_sdk/pkg/v8/es.go b/pkg/infrastructure/es_sdk/pkg/v8/es.go new file mode 100644 index 0000000..82b6233 --- /dev/null +++ b/pkg/infrastructure/es_sdk/pkg/v8/es.go @@ -0,0 +1,1208 @@ +package v8 + +import ( + "context" + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/base" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/cache" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/es_log" + proto2 "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/proto" + logger2 "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/util" + "github.com/1340691923/eve-plugin-sdk-go/ev_api/pkg" + "github.com/1340691923/eve-plugin-sdk-go/ev_api/proto" + elasticV8 "github.com/elastic/go-elasticsearch/v8" + "github.com/elastic/go-elasticsearch/v8/esapi" + "github.com/elastic/go-elasticsearch/v8/esutil" + "github.com/pkg/errors" + "net/http" +) + +type EsClient8 struct { + client *elasticV8.Client + base.BaseDatasource +} + +func NewEsClient8(cfg *proto2.Config) (pkg.ClientInterface, error) { + + ds, ok := cache.GetDataSourceCache(cfg.ConnectId) + + if !ok { + obj := &EsClient8{} + esCfg, err := cfg.ConvertV8( + es_log.NewLogger(cfg.Cfg.EnableLogEs, true, cfg.Cfg.EnableLogEsRes, logger2.EsReqLog.Named("elasticsearch8.x")), + nil, nil) + if err != nil { + err = errors.WithStack(err) + return nil, err + } + obj.init(esCfg) + + cache.SaveDataSourceCache(cfg.ConnectId, obj) + return obj, nil + } + + return ds, nil +} + +func (this *EsClient8) init(config elasticV8.Config) (err error) { + this.client, err = elasticV8.NewClient(config) + if err != nil { + fmt.Printf("Error creating the client: %s\n", err) + return + } + return +} + +func (this *EsClient8) EsVersion() (version int, err error) { + return 8, nil +} + +func (this *EsClient8) Ping( + ctx context.Context, +) ( + res *proto.Response, + err error, +) { + + req, err := http.NewRequest(http.MethodGet, "/", nil) + if err != nil { + return + } + + res, err = this.EsPerformRequest(ctx, req) + if err != nil { + return + } + + if res.StatusCode() == 401 { + err = errors.New("ES地址OK,但是密码验证失败") + return + } + + return +} + +func (this *EsClient8) EsGetMapping( + ctx context.Context, + indexNames []string, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesGetMappingRequest{Index: indexNames} + httpRes, err := req.Do(ctx, this.client) + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + return +} + +func (this *EsClient8) EsSnapshotCreate( + ctx context.Context, + repository string, + snapshot string, + waitForCompletion *bool, + reqJson proto.Json, +) ( + res *proto.Response, err error) { + snapshotCreateService := esapi.SnapshotCreateRequest{ + Repository: repository, + Snapshot: snapshot, + Body: esutil.NewJSONReader(reqJson), + WaitForCompletion: waitForCompletion, + } + + var httpRes *esapi.Response + httpRes, err = snapshotCreateService.Do(ctx, this.client) + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsPerformRequest( + ctx context.Context, + req *http.Request, +) ( + res *proto.Response, err error) { + if req != nil { + req = req.WithContext(ctx) + } + req.Header.Set("Content-Type", "application/json;charset=UTF-8") + + httpRes, err := this.client.Perform(req) + + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsSnapshotDelete( + ctx context.Context, + repository string, + snapshot string, +) ( + res *proto.Response, + err error) { + req := esapi.SnapshotDeleteRequest{ + Repository: repository, + Snapshot: []string{snapshot}, + } + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsRestoreSnapshot( + ctx context.Context, + repository string, + snapshot string, + waitForCompletion *bool, + reqJson proto.Json, +) ( + res *proto.Response, + err error, +) { + request := esapi.SnapshotRestoreRequest{ + Snapshot: snapshot, + Repository: repository, + Body: esutil.NewJSONReader(reqJson), + WaitForCompletion: waitForCompletion, + } + + httpRes, err := request.Do(ctx, this.client) + + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsRefresh( + ctx context.Context, + indexNames []string, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesRefreshRequest{Index: indexNames} + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsOpen( + ctx context.Context, + indexNames []string, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesOpenRequest{Index: indexNames} + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsFlush( + ctx context.Context, + indexNames []string, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesFlushRequest{Index: indexNames} + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsIndicesClearCache( + ctx context.Context, + indexNames []string, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesClearCacheRequest{Index: indexNames} + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsIndicesClose( + ctx context.Context, + indexNames []string, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesCloseRequest{Index: indexNames} + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsIndicesForcemerge( + ctx context.Context, + indexNames []string, + maxNumSegments *int, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesForcemergeRequest{Index: indexNames, MaxNumSegments: maxNumSegments} + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsDeleteByQuery( + ctx context.Context, + indexNames []string, + documents []string, + body interface{}, +) ( + res *proto.Response, + err error, +) { + req := esapi.DeleteByQueryRequest{Index: indexNames, Body: esutil.NewJSONReader(body)} + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsSnapshotStatus( + ctx context.Context, + repository string, + snapshot []string, + ignoreUnavailable *bool, +) ( + res *proto.Response, + err error, +) { + request := esapi.SnapshotStatusRequest{ + Repository: repository, + Snapshot: snapshot, + IgnoreUnavailable: ignoreUnavailable, + } + + httpRes, err := request.Do(ctx, this.client) + + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsSnapshotGetRepository( + ctx context.Context, + repository []string, +) ( + res *proto.Response, + err error, +) { + request := esapi.SnapshotGetRepositoryRequest{ + Repository: repository, + } + + httpRes, err := request.Do(ctx, this.client) + + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsSnapshotCreateRepository( + ctx context.Context, + repository string, + reqJson proto.Json, +) ( + res *proto.Response, + err error, +) { + request := esapi.SnapshotCreateRepositoryRequest{ + Repository: repository, + Body: esutil.NewJSONReader(reqJson), + } + + httpRes, err := request.Do(ctx, this.client) + + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsSnapshotDeleteRepository( + ctx context.Context, + repository []string, +) ( + res *proto.Response, + err error, +) { + request := esapi.SnapshotDeleteRepositoryRequest{ + Repository: repository, + } + + httpRes, err := request.Do(ctx, this.client) + + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsGetIndices( + ctx context.Context, + catRequest proto.CatIndicesRequest, +) ( + res *proto.Response, + err error, +) { + req := esapi.CatIndicesRequest{ + Index: catRequest.Index, + Bytes: catRequest.Bytes, + ExpandWildcards: catRequest.ExpandWildcards, + Format: catRequest.Format, + H: catRequest.H, + Health: catRequest.Health, + Help: catRequest.Help, + IncludeUnloadedSegments: catRequest.IncludeUnloadedSegments, + MasterTimeout: catRequest.MasterTimeout, + Pri: catRequest.Pri, + S: catRequest.S, + Time: catRequest.Time, + V: catRequest.V, + Pretty: catRequest.Pretty, + Human: catRequest.Human, + ErrorTrace: catRequest.ErrorTrace, + FilterPath: catRequest.FilterPath, + Header: catRequest.Header, + } + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsCatHealth( + ctx context.Context, + catRequest proto.CatHealthRequest, +) ( + res *proto.Response, + err error, +) { + + req := esapi.CatHealthRequest{ + Format: catRequest.Format, + H: catRequest.H, + Help: catRequest.Help, + S: catRequest.S, + Time: catRequest.Time, + Ts: catRequest.Ts, + V: catRequest.V, + Pretty: catRequest.Pretty, + Human: catRequest.Human, + ErrorTrace: catRequest.ErrorTrace, + FilterPath: catRequest.FilterPath, + Header: catRequest.Header, + } + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsCatShards( + ctx context.Context, + catRequest proto.CatShardsRequest, +) ( + res *proto.Response, + err error, +) { + req := esapi.CatShardsRequest{} + + req.Index = catRequest.Index + req.Bytes = catRequest.Bytes + req.Format = catRequest.Format + req.H = catRequest.H + req.Help = catRequest.Help + req.MasterTimeout = catRequest.MasterTimeout + req.S = catRequest.S + req.Time = catRequest.Time + req.V = catRequest.V + req.Pretty = catRequest.Pretty + req.Human = catRequest.Human + req.ErrorTrace = catRequest.ErrorTrace + req.FilterPath = catRequest.FilterPath + req.Header = catRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsCatCount( + ctx context.Context, + catRequest proto.CatCountRequest, +) ( + res *proto.Response, + err error, +) { + req := esapi.CatCountRequest{} + + req.Index = catRequest.Index + req.Format = catRequest.Format + req.H = catRequest.H + req.Help = catRequest.Help + req.S = catRequest.S + req.V = catRequest.V + req.Pretty = catRequest.Pretty + req.Human = catRequest.Human + req.ErrorTrace = catRequest.ErrorTrace + req.FilterPath = catRequest.FilterPath + req.Header = catRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsCatAllocationRequest( + ctx context.Context, + catRequest proto.CatAllocationRequest, +) ( + res *proto.Response, + err error, +) { + req := esapi.CatAllocationRequest{} + + req.NodeID = catRequest.NodeID + req.Bytes = catRequest.Bytes + req.Format = catRequest.Format + req.H = catRequest.H + req.Help = catRequest.Help + req.Local = catRequest.Local + req.MasterTimeout = catRequest.MasterTimeout + req.S = catRequest.S + req.V = catRequest.V + req.Pretty = catRequest.Pretty + req.Human = catRequest.Human + req.ErrorTrace = catRequest.ErrorTrace + req.FilterPath = catRequest.FilterPath + req.Header = catRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsCatAliases( + ctx context.Context, + catRequest proto.CatAliasesRequest, +) ( + res *proto.Response, + err error, +) { + req := esapi.CatAliasesRequest{} + + req.Name = catRequest.Name + req.ExpandWildcards = catRequest.ExpandWildcards + req.Format = catRequest.Format + req.H = catRequest.H + req.Help = catRequest.Help + req.Local = catRequest.Local + req.S = catRequest.S + req.V = catRequest.V + req.Pretty = catRequest.Pretty + req.Human = catRequest.Human + req.ErrorTrace = catRequest.ErrorTrace + req.FilterPath = catRequest.FilterPath + req.Header = catRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsIndicesSegmentsRequest( + ctx context.Context, + human bool, +) ( + res *proto.Response, + err error, +) { + req := esapi.CatSegmentsRequest{Human: human, Format: "json"} + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsClusterStats( + ctx context.Context, + human bool, +) ( + res *proto.Response, + err error, +) { + req := esapi.ClusterStatsRequest{Human: human} + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsCatNodes( + ctx context.Context, + h []string, +) ( + res *proto.Response, + err error, +) { + req := esapi.CatNodesRequest{H: h, Format: "json"} + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsDelete( + ctx context.Context, + deleteRequest proto.DeleteRequest, +) ( + res *proto.Response, + err error, +) { + req := esapi.DeleteRequest{} + + req.Index = deleteRequest.Index + req.DocumentID = deleteRequest.DocumentID + req.IfPrimaryTerm = deleteRequest.IfPrimaryTerm + req.IfSeqNo = deleteRequest.IfSeqNo + req.Refresh = deleteRequest.Refresh + req.Routing = deleteRequest.Routing + req.Timeout = deleteRequest.Timeout + req.Version = deleteRequest.Version + req.VersionType = deleteRequest.VersionType + req.WaitForActiveShards = deleteRequest.WaitForActiveShards + req.Pretty = deleteRequest.Pretty + req.Human = deleteRequest.Human + req.ErrorTrace = deleteRequest.ErrorTrace + req.FilterPath = deleteRequest.FilterPath + req.Header = deleteRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsUpdate( + ctx context.Context, + updateRequest proto.UpdateRequest, + body interface{}, +) ( + res *proto.Response, + err error, +) { + req := esapi.UpdateRequest{} + + req.Index = updateRequest.Index + req.DocumentID = updateRequest.DocumentID + req.Body = esutil.NewJSONReader(map[string]interface{}{ + "doc": body, + }) + req.IfPrimaryTerm = updateRequest.IfPrimaryTerm + req.IfSeqNo = updateRequest.IfSeqNo + req.Lang = updateRequest.Lang + req.Refresh = updateRequest.Refresh + req.RequireAlias = updateRequest.RequireAlias + req.RetryOnConflict = updateRequest.RetryOnConflict + req.Routing = updateRequest.Routing + req.Source = updateRequest.Source + req.SourceExcludes = updateRequest.SourceExcludes + req.SourceIncludes = updateRequest.SourceIncludes + req.Timeout = updateRequest.Timeout + req.WaitForActiveShards = updateRequest.WaitForActiveShards + req.Pretty = updateRequest.Pretty + req.Human = updateRequest.Human + req.ErrorTrace = updateRequest.ErrorTrace + req.FilterPath = updateRequest.FilterPath + req.Header = updateRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsCreate( + ctx context.Context, + createRequest proto.CreateRequest, + body interface{}, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndexRequest{} + + req.Index = createRequest.Index + req.DocumentID = createRequest.DocumentID + req.Body = esutil.NewJSONReader(body) + req.Pipeline = createRequest.Pipeline + req.Refresh = createRequest.Refresh + req.Routing = createRequest.Routing + req.Timeout = createRequest.Timeout + req.Version = createRequest.Version + req.VersionType = createRequest.VersionType + req.WaitForActiveShards = createRequest.WaitForActiveShards + req.Pretty = createRequest.Pretty + req.Human = createRequest.Human + req.ErrorTrace = createRequest.ErrorTrace + req.FilterPath = createRequest.FilterPath + req.Header = createRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsSearch( + ctx context.Context, + searchRequest proto.SearchRequest, + query interface{}, +) ( + res *proto.Response, + err error, +) { + + req := esapi.SearchRequest{} + + req.Index = searchRequest.Index + req.Body = esutil.NewJSONReader(query) + req.AllowNoIndices = searchRequest.AllowNoIndices + req.AllowPartialSearchResults = searchRequest.AllowPartialSearchResults + req.Analyzer = searchRequest.Analyzer + req.AnalyzeWildcard = searchRequest.AnalyzeWildcard + req.BatchedReduceSize = searchRequest.BatchedReduceSize + req.CcsMinimizeRoundtrips = searchRequest.CcsMinimizeRoundtrips + req.DefaultOperator = searchRequest.DefaultOperator + req.Df = searchRequest.Df + req.DocvalueFields = searchRequest.DocvalueFields + req.ExpandWildcards = searchRequest.ExpandWildcards + req.Explain = searchRequest.Explain + req.From = searchRequest.From + req.IgnoreThrottled = searchRequest.IgnoreThrottled + req.IgnoreUnavailable = searchRequest.IgnoreUnavailable + req.Lenient = searchRequest.Lenient + req.MaxConcurrentShardRequests = searchRequest.MaxConcurrentShardRequests + req.MinCompatibleShardNode = searchRequest.MinCompatibleShardNode + req.Preference = searchRequest.Preference + req.PreFilterShardSize = searchRequest.PreFilterShardSize + req.Query = searchRequest.Query + req.RequestCache = searchRequest.RequestCache + req.RestTotalHitsAsInt = searchRequest.RestTotalHitsAsInt + req.Routing = searchRequest.Routing + req.Scroll = searchRequest.Scroll + req.SearchType = searchRequest.SearchType + req.SeqNoPrimaryTerm = searchRequest.SeqNoPrimaryTerm + req.Size = searchRequest.Size + req.Sort = searchRequest.Sort + req.Source = searchRequest.Source + req.SourceExcludes = searchRequest.SourceExcludes + req.SourceIncludes = searchRequest.SourceIncludes + req.Stats = searchRequest.Stats + req.StoredFields = searchRequest.StoredFields + req.SuggestField = searchRequest.SuggestField + req.SuggestMode = searchRequest.SuggestMode + req.SuggestSize = searchRequest.SuggestSize + req.SuggestText = searchRequest.SuggestText + req.TerminateAfter = searchRequest.TerminateAfter + req.Timeout = searchRequest.Timeout + req.TrackScores = searchRequest.TrackScores + req.TrackTotalHits = searchRequest.TrackTotalHits + req.TypedKeys = searchRequest.TypedKeys + req.Version = searchRequest.Version + req.Pretty = searchRequest.Pretty + req.Human = searchRequest.Human + req.ErrorTrace = searchRequest.ErrorTrace + req.FilterPath = searchRequest.FilterPath + req.Header = searchRequest.Header + + t := util.NewTimeLog() + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + t.Log("EsSearch") + + t = util.NewTimeLog() + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + t.Log("NewResponse") + return +} + +func (this *EsClient8) EsIndicesPutSettingsRequest( + ctx context.Context, + indexSettingsRequest proto.IndicesPutSettingsRequest, + body interface{}, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesPutSettingsRequest{} + + req.Index = indexSettingsRequest.Index + req.Body = esutil.NewJSONReader(body) + req.AllowNoIndices = indexSettingsRequest.AllowNoIndices + req.ExpandWildcards = indexSettingsRequest.ExpandWildcards + req.FlatSettings = indexSettingsRequest.FlatSettings + req.IgnoreUnavailable = indexSettingsRequest.IgnoreUnavailable + req.MasterTimeout = indexSettingsRequest.MasterTimeout + req.PreserveExisting = indexSettingsRequest.PreserveExisting + req.Timeout = indexSettingsRequest.Timeout + req.Pretty = indexSettingsRequest.Pretty + req.Human = indexSettingsRequest.Human + req.ErrorTrace = indexSettingsRequest.ErrorTrace + req.FilterPath = indexSettingsRequest.FilterPath + req.Header = indexSettingsRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsCreateIndex( + ctx context.Context, + indexCreateRequest proto.IndicesCreateRequest, + body interface{}, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesCreateRequest{} + + req.Index = indexCreateRequest.Index + req.Body = esutil.NewJSONReader(body) + req.MasterTimeout = indexCreateRequest.MasterTimeout + req.Timeout = indexCreateRequest.Timeout + req.WaitForActiveShards = indexCreateRequest.WaitForActiveShards + req.Pretty = indexCreateRequest.Pretty + req.Human = indexCreateRequest.Human + req.ErrorTrace = indexCreateRequest.ErrorTrace + req.FilterPath = indexCreateRequest.FilterPath + req.Header = indexCreateRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsDeleteIndex( + ctx context.Context, + indicesDeleteRequest proto.IndicesDeleteRequest, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesDeleteRequest{} + + req.Index = indicesDeleteRequest.Index + req.AllowNoIndices = indicesDeleteRequest.AllowNoIndices + req.ExpandWildcards = indicesDeleteRequest.ExpandWildcards + req.IgnoreUnavailable = indicesDeleteRequest.IgnoreUnavailable + req.MasterTimeout = indicesDeleteRequest.MasterTimeout + req.Timeout = indicesDeleteRequest.Timeout + req.Pretty = indicesDeleteRequest.Pretty + req.Human = indicesDeleteRequest.Human + req.ErrorTrace = indicesDeleteRequest.ErrorTrace + req.FilterPath = indicesDeleteRequest.FilterPath + req.Header = indicesDeleteRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsReindex( + ctx context.Context, + reindexRequest proto.ReindexRequest, + body interface{}, +) ( + res *proto.Response, + err error, +) { + req := esapi.ReindexRequest{} + + req.Body = esutil.NewJSONReader(body) + req.MaxDocs = reindexRequest.MaxDocs + req.Refresh = reindexRequest.Refresh + req.RequestsPerSecond = reindexRequest.RequestsPerSecond + req.Scroll = reindexRequest.Scroll + req.Slices = reindexRequest.Slices + req.Timeout = reindexRequest.Timeout + req.WaitForActiveShards = reindexRequest.WaitForActiveShards + req.WaitForCompletion = reindexRequest.WaitForCompletion + req.Pretty = reindexRequest.Pretty + req.Human = reindexRequest.Human + req.ErrorTrace = reindexRequest.ErrorTrace + req.FilterPath = reindexRequest.FilterPath + req.Header = reindexRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsIndicesGetSettingsRequest( + ctx context.Context, + indicesGetSettingsRequest proto.IndicesGetSettingsRequest, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesGetSettingsRequest{} + + req.Index = indicesGetSettingsRequest.Index + req.Name = indicesGetSettingsRequest.Name + req.AllowNoIndices = indicesGetSettingsRequest.AllowNoIndices + req.ExpandWildcards = indicesGetSettingsRequest.ExpandWildcards + req.FlatSettings = indicesGetSettingsRequest.FlatSettings + req.IgnoreUnavailable = indicesGetSettingsRequest.IgnoreUnavailable + req.IncludeDefaults = indicesGetSettingsRequest.IncludeDefaults + req.Local = indicesGetSettingsRequest.Local + req.MasterTimeout = indicesGetSettingsRequest.MasterTimeout + req.Pretty = indicesGetSettingsRequest.Pretty + req.Human = indicesGetSettingsRequest.Human + req.ErrorTrace = indicesGetSettingsRequest.ErrorTrace + req.FilterPath = indicesGetSettingsRequest.FilterPath + req.Header = indicesGetSettingsRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsPutMapping( + ctx context.Context, + indicesPutMappingRequest proto.IndicesPutMappingRequest, + body interface{}, +) ( + res *proto.Response, + err error, +) { + req := esapi.IndicesPutMappingRequest{} + + req.Index = indicesPutMappingRequest.Index + req.Body = esutil.NewJSONReader(body) + req.AllowNoIndices = indicesPutMappingRequest.AllowNoIndices + req.ExpandWildcards = indicesPutMappingRequest.ExpandWildcards + req.IgnoreUnavailable = indicesPutMappingRequest.IgnoreUnavailable + req.MasterTimeout = indicesPutMappingRequest.MasterTimeout + req.Timeout = indicesPutMappingRequest.Timeout + req.WriteIndexOnly = indicesPutMappingRequest.WriteIndexOnly + req.Pretty = indicesPutMappingRequest.Pretty + req.Human = indicesPutMappingRequest.Human + req.ErrorTrace = indicesPutMappingRequest.ErrorTrace + req.FilterPath = indicesPutMappingRequest.FilterPath + req.Header = indicesPutMappingRequest.Header + + httpRes, err := req.Do(ctx, this.client) + if err != nil { + return nil, errors.WithStack(err) + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsGetAliases( + ctx context.Context, + indexNames []string, +) ( + res *proto.Response, + err error, +) { + + httpRes, err := this.client.Indices.GetAlias( + this.client.Indices.GetAlias.WithIndex(indexNames...), + this.client.Indices.GetAlias.WithContext(ctx), + ) + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsAddAliases( + ctx context.Context, + indexName []string, + aliasName string, +) ( + res *proto.Response, + err error, +) { + + httpRes, err := this.client.Indices.PutAlias( + indexName, + aliasName, + this.client.Indices.PutAlias.WithContext(ctx), + ) + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsRemoveAliases( + ctx context.Context, + indexName []string, + aliasName []string, +) ( + res *proto.Response, + err error, +) { + + httpRes, err := this.client.Indices.DeleteAlias( + indexName, + aliasName, + this.client.Indices.DeleteAlias.WithContext(ctx), + ) + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsMoveToAnotherIndexAliases( + ctx context.Context, + body proto.AliasAction, +) ( + res *proto.Response, + err error, +) { + + httpRes, err := this.client.Indices.UpdateAliases( + esutil.NewJSONReader(body), + this.client.Indices.UpdateAliases.WithContext(ctx), + ) + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsTaskList( + ctx context.Context, +) ( + res *proto.Response, + err error, +) { + httpRes, err := this.client.Tasks.List( + this.client.Tasks.List.WithDetailed(true), + this.client.Tasks.List.WithContext(ctx)) + if err != nil { + err = errors.WithStack(err) + return + } + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} + +func (this *EsClient8) EsTasksCancel( + ctx context.Context, + taskId string, +) ( + res *proto.Response, + err error, +) { + httpRes, err := this.client.Tasks.Cancel( + this.client.Tasks.Cancel.WithTaskID(taskId), + this.client.Tasks.Cancel.WithContext(ctx)) + if err != nil { + err = errors.WithStack(err) + return + } + res, err = proto.NewResponse(httpRes.StatusCode, httpRes.Header, httpRes.Body) + + return +} diff --git a/pkg/infrastructure/eve_api/api/api.go b/pkg/infrastructure/eve_api/api/api.go new file mode 100644 index 0000000..81545c1 --- /dev/null +++ b/pkg/infrastructure/eve_api/api/api.go @@ -0,0 +1,15 @@ +package api + +type API = string + +const ( + GetEvAccessToken API = "GetEvAccessToken" + GetPluginList API = "GetPluginList" + GetPluginInfo API = "GetPluginInfo" + GetPluginDownloadUrl API = "GetPluginDownloadUrl" + GetEvPluginMaxVersion API = "GetEvPluginMaxVersion" + GetEvMaxVersion API = "GetEvMaxVersion" + GetEvPluginsMaxVersion API = "GetEvPluginsMaxVersion" + StarPlugin API = "StarPlugin" + GetWxArticleList API = "GetWxArticleList" +) diff --git a/pkg/infrastructure/eve_api/doc.go b/pkg/infrastructure/eve_api/doc.go new file mode 100644 index 0000000..d2eb274 --- /dev/null +++ b/pkg/infrastructure/eve_api/doc.go @@ -0,0 +1 @@ +package eve_api diff --git a/pkg/infrastructure/eve_api/dto/ev_key.go b/pkg/infrastructure/eve_api/dto/ev_key.go new file mode 100644 index 0000000..bc473c1 --- /dev/null +++ b/pkg/infrastructure/eve_api/dto/ev_key.go @@ -0,0 +1,43 @@ +package dto + +type EvKeyReq struct { + EvKey string `json:"ev_key"` +} + +type Empty struct { +} + +type FromEvPluginReq struct { + SearchTxt string `json:"search_txt"` + OrderByCol string `json:"order_by_col"` + OrderByDesc bool `json:"order_by_desc"` + Page int `json:"page"` + Limit int `json:"limit"` + HasDownloadPlugins []string `json:"has_download_plugins"` + HasDownloadType *bool `json:"has_download_type"` +} + +type StarPlugin struct { + PluginId int64 `json:"plugin_id"` +} + +type FormEvPluginInfoReq struct { + PluginId int64 `json:"plugin_id"` + Page int `json:"page"` + Limit int `json:"limit"` +} + +type GetPluginDownloadUrlReq struct { + PluginAlias string `json:"plugin_alias"` + Version string `json:"version"` + Os string `json:"os"` + Arch string `json:"arch"` +} + +type GetEvPluginMaxVersion struct { + PluginAlias string `json:"plugin_alias"` +} + +type GetEvPluginsMaxVersion struct { + PluginIds []string `json:"plugin_ids"` +} diff --git a/pkg/infrastructure/eve_api/ev_api.go b/pkg/infrastructure/eve_api/ev_api.go new file mode 100644 index 0000000..1ccd35e --- /dev/null +++ b/pkg/infrastructure/eve_api/ev_api.go @@ -0,0 +1,71 @@ +package eve_api + +import ( + "context" + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/eve_api/api" + "github.com/1340691923/ElasticView/pkg/infrastructure/eve_api/vo" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/imroc/req/v2" + "sync" +) + +type EvEApi struct { + log *logger.AppLogger + client *req.Client + accessToken string + lock *sync.RWMutex + isDebug bool +} + +func NewEvApi(cfg *config.Config, log *logger.AppLogger) *EvEApi { + + var client *req.Client + + if cfg.DeBug { + client = req.C().DevMode() + } else { + client = req.C() + } + + return &EvEApi{log: log, client: client, lock: new(sync.RWMutex), isDebug: cfg.DeBug} +} + +func (this *EvEApi) Request(ctx context.Context, api api.API, requestData interface{}, result *vo.ApiCommonRes) error { + + header := map[string]string{} + if this.GetAccessToken() != "" { + header["Ev-Token"] = this.GetAccessToken() + } + + _, err := this.client.R(). + SetContext(ctx). + SetBody(requestData). + SetHeaders(header). + SetResult(&result). + Post(fmt.Sprintf("%s%s", this.GetEvBackDomain(), api)) + if err != nil { + return err + } + return result.Error() +} + +func (this *EvEApi) SetAccessToken(token string) { + this.lock.Lock() + defer this.lock.Unlock() + this.accessToken = token +} + +func (this *EvEApi) GetAccessToken() string { + this.lock.RLock() + defer this.lock.RUnlock() + return this.accessToken +} + +func (this *EvEApi) GetEvBackDomain() string { + if this.isDebug { + return "http://127.0.0.1:8199/v1/api/" + } + return "http://dev.elastic-view.cn/v1/api/" +} diff --git a/pkg/infrastructure/eve_api/vo/common.go b/pkg/infrastructure/eve_api/vo/common.go new file mode 100644 index 0000000..065ca40 --- /dev/null +++ b/pkg/infrastructure/eve_api/vo/common.go @@ -0,0 +1,107 @@ +package vo + +import ( + "errors" +) + +type ApiCommonRes struct { + Code int `json:"code"` + Msg string `json:"msg"` + Data interface{} `json:"data"` +} + +func (this *ApiCommonRes) Error() error { + if this.Code != 0 { + return errors.New(this.Msg) + } + return nil +} + +type OpenApiPlugin struct { + ID int `db:"id" json:"id"` + PluginAlias string `db:"plugin_alias" json:"plugin_alias"` + PluginName string `db:"plugin_name" json:"plugin_name"` + Realname string `db:"realname" json:"realname"` + Describe string `db:"p_desc" json:"describe"` + Readme string `db:"readme" json:"readme"` + CreateTime string `db:"create_time" json:"create_time"` + UpdateTime string `db:"update_time" json:"update_time"` + Logo string `db:"logo" json:"logo"` + DownloadCnt int `db:"download_cnt" json:"download_cnt"` + StarCnt int `db:"star_cnt" json:"star_cnt"` + PublishTime string `db:"publish_time" json:"publish_time"` + DownloadUserCnt int `db:"download_user_cnt" json:"download_user_cnt"` + StarState *int `db:"star_state" json:"star_state"` + HasDownload bool `json:"has_download" ` +} + +type PluginListRes struct { + List []OpenApiPlugin `json:"list"` + Count int `json:"count"` +} + +type WxArticleModel struct { + ID int `json:"id" db:"id"` + Title string `json:"title" db:"title"` + Link string `json:"link" db:"link"` + CreateTime string `json:"create_time" db:"create_time"` + Typ string `json:"typ" db:"typ"` // info/warning/success/danger/primary + TagName string `json:"tag_name" db:"tag_name"` +} + +type WxArticleList struct { + Data []WxArticleModel +} + +type PublishData struct { + PluginName string `json:"plugin_name"` + PluginPublish +} + +type GetLocalPlugin struct { + PluginID string `json:"plugin_id"` + PluginName string `json:"plugin_name"` + Version string `json:"version"` + HasUpdate bool `json:"has_update"` + UpdateVersion string `json:"update_version"` +} + +type PublishRes struct { + List []PublishData `json:"list"` + Count int `json:"count"` +} + +type PluginPublish struct { + ID int64 `json:"id" db:"id"` + PluginId int64 `json:"plugin_id" db:"plugin_id"` + Version string `json:"version" db:"version"` + SourceCodeUrl string `json:"source_code_url" db:"source_code_url"` + Changelog string `json:"changelog" db:"changelog"` + CdnSourceCodeURL string `json:"cdn_source_code_url" db:"cdn_source_code_url"` + CreateTime string `json:"create_time" db:"create_time"` + UpdateTime string `json:"update_time" db:"update_time"` + CreateBy int64 `json:"create_by" db:"create_by"` + GteEvDependencyVer string `json:"gte_ev_dependency_ver" db:"gte_ev_dependency_ver"` + LteEvDependencyVer string `json:"lte_ev_dependency_ver" db:"lte_ev_dependency_ver"` + LinuxAmd64Crc string `json:"linux_amd64_crc" db:"linux_amd64_crc"` + WindowsCrc string `json:"windows_crc" db:"windows_crc"` + LinuxArm64Crc string `json:"linux_arm64_crc" db:"linux_arm64_crc"` + DarwinCrc string `json:"darwin_crc" db:"darwin_crc"` + State int8 `json:"state" db:"state"` + Msg string `json:"msg" db:"msg"` + DarwinURL string `json:"darwin_url" db:"darwin_url"` + WindowsURL string `json:"windows_url" db:"windows_url"` + LinuxAmd64URL string `json:"linux_amd64_url" db:"linux_amd64_url"` + LinuxArm64URL string `json:"linux_arm64_url" db:"linux_arm64_url"` + DownloadCount int64 `json:"download_count" db:"download_count"` +} + +type GetPluginDownloadUrlRes struct { + DownloadUrl string `json:"downloadUrl"` + DonwloadCrc string `json:"downloadCrc"` +} + +type GetEvMaxVersionRes struct { + DownloadUrl string `json:"downloadUrl"` + Version string `json:"version"` +} diff --git a/pkg/infrastructure/jwt_svr/errors.go b/pkg/infrastructure/jwt_svr/errors.go new file mode 100644 index 0000000..b779865 --- /dev/null +++ b/pkg/infrastructure/jwt_svr/errors.go @@ -0,0 +1,7 @@ +package jwt_svr + +import ( + "errors" +) + +var TokenExpiredErr = errors.New("token has invalid claims: token is expired") diff --git a/pkg/infrastructure/jwt_svr/exception_msg.go b/pkg/infrastructure/jwt_svr/exception_msg.go new file mode 100644 index 0000000..a01b19f --- /dev/null +++ b/pkg/infrastructure/jwt_svr/exception_msg.go @@ -0,0 +1,10 @@ +package jwt_svr + +// 内置异常 +const ( + ERROR_AUTH_TOKEN = 40006 +) + +var TOKEN_ERROR = map[int]string{ + ERROR_AUTH_TOKEN: "Token生成失败", +} diff --git a/pkg/infrastructure/jwt_svr/jwt.go b/pkg/infrastructure/jwt_svr/jwt.go new file mode 100644 index 0000000..4fea4a7 --- /dev/null +++ b/pkg/infrastructure/jwt_svr/jwt.go @@ -0,0 +1,109 @@ +// JSON WEB TOKEN 层 +package jwt_svr + +import ( + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/model" + "github.com/1340691923/ElasticView/pkg/infrastructure/my_error" + "github.com/1340691923/ElasticView/pkg/util" + "github.com/golang-jwt/jwt/v5" + "time" +) + +type Jwt struct { + cfg *config.Config + log *logger.AppLogger + jwtSecret string +} + +func NewJwt(cfg *config.Config, log *logger.AppLogger) *Jwt { + obj := &Jwt{cfg: cfg, log: log} + obj.jwtSecret = cfg.AppSecret + return obj +} + +type Claims struct { + UserID int `json:"id"` + Username string `json:"username"` + Avatar string `json:"avatar"` + RealName string `json:"real_name"` + jwt.RegisteredClaims +} + +// 生成token +func (this *Jwt) CreateToken(gmUser model.GmUserModel) (string, error) { + + nowTime := time.Now() + expireTime := nowTime.Add(7 * 24 * time.Hour) + //expireTime := nowTime.Add(60 * time.Second) + //加入保存信息 + claims := Claims{ + gmUser.Id, + gmUser.Username, + gmUser.Avatar, + gmUser.Realname, + jwt.RegisteredClaims{ + ExpiresAt: jwt.NewNumericDate(expireTime), + Issuer: "xiao-wen-long", + }, + } + tokenClaims := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) //jwt.SigningMethodHS256 加密规则 + /*NewWithClaims(method SigningMethod, claims Claims),method对应着SigningMethodHMAC struct{} + ,其包含SigningMethodHS256、SigningMethodHS384、SigningMethodHS512三种crypto.Hash方案 + */ + + token, err := tokenClaims.SignedString(util.Str2bytes(this.cfg.AppSecret)) // SignedString 该方法内部生成签名字符串,再用于获取完整、已签名的token + if err != nil { + err = my_error.NewBusiness(TOKEN_ERROR, ERROR_AUTH_TOKEN) + return token, err + } + return token, err +} + +func (this *Jwt) CreateTokenByCliams(claims Claims) (string, error) { + nowTime := time.Now() + expireTime := nowTime.Add(7 * 24 * time.Hour) //token过期时间24小时 + //加入保存信息 + claims = Claims{ + claims.UserID, + claims.Username, + claims.Avatar, + claims.RealName, + jwt.RegisteredClaims{ + ExpiresAt: jwt.NewNumericDate(expireTime), + Issuer: "xiao-wen-long", + }, + } + + tokenClaims := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) //jwt.SigningMethodHS256 加密规则 + /*NewWithClaims(method SigningMethod, claims Claims),method对应着SigningMethodHMAC struct{} + ,其包含SigningMethodHS256、SigningMethodHS384、SigningMethodHS512三种crypto.Hash方案 + */ + + token, err := tokenClaims.SignedString(util.Str2bytes(this.cfg.AppSecret)) // SignedString 该方法内部生成签名字符串,再用于获取完整、已签名的token + if err != nil { + err = my_error.NewBusiness(TOKEN_ERROR, ERROR_AUTH_TOKEN) + return token, err + } + return token, err +} + +// 解析token +func (this *Jwt) ParseToken(token string) (*Claims, error) { + tokenClaims, err := jwt.ParseWithClaims(token, &Claims{}, func(token *jwt.Token) (interface{}, error) { //ParseWithClaims 用于解析鉴权的声明,方法内部主要是具体的解码和校验的过程,最终返回*Token + return util.Str2bytes(this.cfg.AppSecret), nil + }) + + if tokenClaims != nil { + if claims, ok := tokenClaims.Claims.(*Claims); ok { + if tokenClaims.Valid { + //Valid 验证基于时间的声明exp, iat, nbf,注意如果没有任何声明在令牌中,仍然会被认为是有效的。并且对于时区偏差没有计算方法 + return claims, nil + } else { + return claims, err + } + } + } + return nil, err +} diff --git a/pkg/infrastructure/logger/log.go b/pkg/infrastructure/logger/log.go new file mode 100644 index 0000000..85ffc61 --- /dev/null +++ b/pkg/infrastructure/logger/log.go @@ -0,0 +1,241 @@ +// 日志引擎层 +package logger + +import ( + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/util" + "github.com/hashicorp/go-hclog" + "github.com/pkg/errors" + "io" + "log" + "os" + "path/filepath" + "sync" + + "time" + + rotatelogs "github.com/lestrrat-go/file-rotatelogs" + "go.uber.org/zap" + "go.uber.org/zap/zapcore" +) + +type AppLogger = zap.Logger + +// 初始化日志 logger +func InitLog(cfg *config.Config) (logger *AppLogger, err error) { + + getWriter := func(filename string, storageDays int) (io.Writer, error) { + // 生成rotatelogs的Logger 实际生成的文件名 info.log.YYmmddHH + hook, err := rotatelogs.New( + filename+".%Y%m%d", // 没有使用go风格反人类的format格式 + rotatelogs.WithLinkName(filename), + rotatelogs.WithMaxAge(time.Hour*24*time.Duration(storageDays)), // 保存3天 + rotatelogs.WithRotationTime(time.Hour*24), //切割频率 24小时 + ) + if err != nil { + return nil, errors.New(fmt.Sprintf("日志启动异常:%s", err)) + } + return hook, nil + } + zapConfig := zapcore.EncoderConfig{ + MessageKey: "msg", + TimeKey: "ts", + NameKey: "logger", + EncodeTime: func(t time.Time, enc zapcore.PrimitiveArrayEncoder) { + enc.AppendString(t.Format(util.TimeFormat)) + }, + CallerKey: "file", + EncodeCaller: zapcore.ShortCallerEncoder, + EncodeDuration: zapcore.SecondsDurationEncoder, + } + encoder := zapcore.NewConsoleEncoder(zapConfig) + + infoLevel := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool { + return lvl == zapcore.InfoLevel + }) + errorLevel := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool { + return lvl == zapcore.ErrorLevel + }) + debugLevel := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool { + return lvl == zapcore.DebugLevel + }) + warnLevel := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool { + return lvl == zapcore.WarnLevel + }) + allLevel := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool { + return lvl >= zapcore.DebugLevel + }) + + logPath := filepath.Join(cfg.HomePath, "logs") + + if cfg.Log.LogDir != "" { + logPath = cfg.Log.LogDir + } + + evlogPath := filepath.Join(logPath, cfg.CmdName) + esReqLogPath := filepath.Join(logPath, "es_req") + dbSqlLogPath := filepath.Join(logPath, "db_sql") + + storageDays := 3 + if cfg.Log.StorageDays != 0 { + storageDays = cfg.Log.StorageDays + } + + infoWriter, err := getWriter(filepath.Join(evlogPath, "info.log"), storageDays) + if err != nil { + return nil, errors.New(fmt.Sprintf("日志启动异常:%s", err)) + } + errWriter, err := getWriter(filepath.Join(evlogPath, "err.log"), storageDays) + if err != nil { + return nil, errors.New(fmt.Sprintf("日志启动异常:%s", err)) + } + + debugWriter, err := getWriter(filepath.Join(evlogPath, "debug.log"), storageDays) + if err != nil { + return nil, errors.New(fmt.Sprintf("日志启动异常:%s", err)) + } + + warnWriter, err := getWriter(filepath.Join(evlogPath, "warn.log"), storageDays) + if err != nil { + return nil, errors.New(fmt.Sprintf("日志启动异常:%s", err)) + } + + esInfoWriter, err := getWriter(filepath.Join(esReqLogPath, "info.log"), storageDays) + if err != nil { + return nil, errors.New(fmt.Sprintf("日志启动异常:%s", err)) + } + esErrWriter, err := getWriter(filepath.Join(esReqLogPath, "err.log"), storageDays) + if err != nil { + return nil, errors.New(fmt.Sprintf("日志启动异常:%s", err)) + } + esWarnWriter, err := getWriter(filepath.Join(esReqLogPath, "warn.log"), storageDays) + if err != nil { + return nil, errors.New(fmt.Sprintf("日志启动异常:%s", err)) + } + dbSqlInfoWriter, err := getWriter(filepath.Join(dbSqlLogPath, "info.log"), storageDays) + if err != nil { + return nil, errors.New(fmt.Sprintf("日志启动异常:%s", err)) + } + dbSqlErrWriter, err := getWriter(filepath.Join(dbSqlLogPath, "err.log"), storageDays) + if err != nil { + return nil, errors.New(fmt.Sprintf("日志启动异常:%s", err)) + } + dbSqlWarnWriter, err := getWriter(filepath.Join(dbSqlLogPath, "warn.log"), storageDays) + if err != nil { + return nil, errors.New(fmt.Sprintf("日志启动异常:%s", err)) + } + + var core zapcore.Core + var esReqCore zapcore.Core + var dbSqlCore zapcore.Core + + if cfg.DeBug { + core = zapcore.NewTee( + zapcore.NewCore(encoder, zapcore.AddSync(infoWriter), infoLevel), + zapcore.NewCore(encoder, zapcore.AddSync(errWriter), errorLevel), + zapcore.NewCore(encoder, zapcore.AddSync(debugWriter), debugLevel), + zapcore.NewCore(encoder, zapcore.AddSync(warnWriter), warnLevel), + zapcore.NewCore(encoder, zapcore.Lock(os.Stdout), allLevel), + ) + esReqCore = zapcore.NewTee( + zapcore.NewCore(encoder, zapcore.AddSync(esInfoWriter), infoLevel), + zapcore.NewCore(encoder, zapcore.AddSync(esErrWriter), errorLevel), + zapcore.NewCore(encoder, zapcore.AddSync(esWarnWriter), warnLevel), + zapcore.NewCore(encoder, zapcore.Lock(os.Stdout), allLevel), + ) + + dbSqlCore = zapcore.NewTee( + zapcore.NewCore(encoder, zapcore.AddSync(dbSqlInfoWriter), infoLevel), + zapcore.NewCore(encoder, zapcore.AddSync(dbSqlErrWriter), errorLevel), + zapcore.NewCore(encoder, zapcore.AddSync(dbSqlWarnWriter), warnLevel), + zapcore.NewCore(encoder, zapcore.Lock(os.Stdout), allLevel), + ) + + } else { + core = zapcore.NewTee( + zapcore.NewCore(encoder, zapcore.AddSync(infoWriter), infoLevel), + zapcore.NewCore(encoder, zapcore.AddSync(errWriter), errorLevel), + zapcore.NewCore(encoder, zapcore.AddSync(debugWriter), debugLevel), + zapcore.NewCore(encoder, zapcore.AddSync(warnWriter), warnLevel), + ) + esReqCore = zapcore.NewTee( + zapcore.NewCore(encoder, zapcore.AddSync(esInfoWriter), infoLevel), + zapcore.NewCore(encoder, zapcore.AddSync(esErrWriter), errorLevel), + zapcore.NewCore(encoder, zapcore.AddSync(esWarnWriter), warnLevel), + ) + dbSqlCore = zapcore.NewTee( + zapcore.NewCore(encoder, zapcore.AddSync(dbSqlInfoWriter), infoLevel), + zapcore.NewCore(encoder, zapcore.AddSync(dbSqlErrWriter), errorLevel), + zapcore.NewCore(encoder, zapcore.AddSync(dbSqlWarnWriter), warnLevel), + ) + + } + + once.Do(func() { + EsReqLog = zap.New(esReqCore, zap.AddCaller(), zap.Development()) + DbSqlLog = zap.New(dbSqlCore, zap.AddCaller(), zap.Development()) + }) + + log.Println("日志组件加载成功", logPath) + return zap.New(core, zap.AddCaller(), zap.Development()), nil +} + +func InitPluginLog(cfg *config.Config, pluginName string) (logger hclog.Logger, closeWriteCallback func() error, err error) { + + logPath := filepath.Join(cfg.HomePath, "plugin_logs") + + if cfg.Log.PluginLogDir != "" { + logPath = cfg.Log.PluginLogDir + } + + pluginlogPath := filepath.Join(logPath, fmt.Sprintf("%s.log", pluginName)) + + err = os.MkdirAll(logPath, os.ModePerm) // 0755 是目录权限 + if err != nil { + return nil, nil, errors.WithStack(err) + } + + if _, err = os.Stat(pluginlogPath); os.IsNotExist(err) { + // 文件不存在,创建新文件 + _, err = os.Create(pluginlogPath) + if err != nil { + return nil, nil, errors.WithStack(err) + } + } else if err != nil { + // os.Stat() 出错 + return nil, nil, errors.WithStack(err) + } + + writer, err := os.OpenFile(pluginlogPath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) + if err != nil { + return nil, nil, errors.WithStack(err) + } + log.Println("插件日志组件加载成功", pluginlogPath) + + return hclog.New(&hclog.LoggerOptions{ + Name: "plugin", + Output: writer, + Level: hclog.Debug, + }), func() error { + return writer.Close() + }, nil +} + +func InitDebugLog() (logger *AppLogger) { + return zap.NewExample() +} + +func ZapLog2AppLog(logger *zap.Logger) *AppLogger { + return logger +} + +var ( + EsReqLog *AppLogger + DbSqlLog *AppLogger + once *sync.Once +) + +func init() { + once = new(sync.Once) +} diff --git a/pkg/infrastructure/middleware/Exception.go b/pkg/infrastructure/middleware/Exception.go new file mode 100644 index 0000000..4ff8e64 --- /dev/null +++ b/pkg/infrastructure/middleware/Exception.go @@ -0,0 +1,25 @@ +package middleware + +// 内置异常 +const ( + INVALID_PARAMS int = 40001 + ERROR_AUTH_CHECK_TOKEN_FAIL int = 40002 + ERROR_AUTH_CHECK_TOKEN_TIMEOUT int = 40003 + ERROR_RBAC_LOAD int = 40004 + ERROR_RBAC_AUTH int = 40005 + ERROR_Will_TIMEOUT int = 40006 + ERROR_CEHCK_VERSION_FAIL int = 40007 + ERROR_CEHCK_USER_EXITS int = 40008 +) + +// 内置异常表 TOKEN_ERROR +var TOKEN_ERROR = map[int]string{ + INVALID_PARAMS: "Token不能为空", + ERROR_AUTH_CHECK_TOKEN_FAIL: "Token鉴权失败", + ERROR_AUTH_CHECK_TOKEN_TIMEOUT: "Token已超时", + ERROR_RBAC_LOAD: "读取rdbc权限列表失败", + ERROR_RBAC_AUTH: "您没有该资源的访问权限", + ERROR_Will_TIMEOUT: "Token即将超时,已续约", + ERROR_CEHCK_VERSION_FAIL: "客户端版本落后服务器版本", + ERROR_CEHCK_USER_EXITS: "该用户已被删除或封禁", +} diff --git a/pkg/infrastructure/middleware/middleware_svr.go b/pkg/infrastructure/middleware/middleware_svr.go new file mode 100644 index 0000000..97491e0 --- /dev/null +++ b/pkg/infrastructure/middleware/middleware_svr.go @@ -0,0 +1,270 @@ +package middleware + +import ( + "bytes" + "context" + "crypto/hmac" + "crypto/sha256" + "encoding/base64" + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/access_control" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/jwt_svr" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/model" + "github.com/1340691923/ElasticView/pkg/infrastructure/my_error" + "github.com/1340691923/ElasticView/pkg/infrastructure/plugins/manager" + "github.com/1340691923/ElasticView/pkg/infrastructure/response" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore" + "github.com/1340691923/ElasticView/pkg/infrastructure/web_engine" + "github.com/1340691923/ElasticView/pkg/services/gm_user" + "github.com/1340691923/ElasticView/pkg/util" + "github.com/gin-gonic/gin" + "github.com/pkg/errors" + "github.com/spf13/cast" + "go.uber.org/zap" + "io/ioutil" + "sort" + "strconv" + "strings" + "time" +) + +type MiddleWareService struct { + cfg *config.Config + orm *sqlstore.SqlStore + log *logger.AppLogger + jwtSvr *jwt_svr.Jwt + res *response.Response + gmUserService *gm_user.GmUserService + rbac *access_control.Rbac + routerEngine *web_engine.WebEngine + pluginRegistry manager.Service +} + +func NewMiddleWareService(cfg *config.Config, orm *sqlstore.SqlStore, log *logger.AppLogger, jwtSvr *jwt_svr.Jwt, res *response.Response, gmUserService *gm_user.GmUserService, rbac *access_control.Rbac, routerEngine *web_engine.WebEngine, pluginRegistry manager.Service) *MiddleWareService { + return &MiddleWareService{cfg: cfg, orm: orm, log: log, jwtSvr: jwtSvr, res: res, gmUserService: gmUserService, rbac: rbac, routerEngine: routerEngine, pluginRegistry: pluginRegistry} +} + +func (this *MiddleWareService) JwtMiddleware(c *gin.Context) { + + var err error + var claims *jwt_svr.Claims + token := util.GetToken(c) + + if _, logoff := util.TokenBucket.Load(token); logoff { + err = my_error.NewBusiness(TOKEN_ERROR, ERROR_AUTH_CHECK_TOKEN_FAIL) + this.res.Error(c, err) + c.Abort() + return + } + if util.GetToken(c) == "" { + err = my_error.NewBusiness(TOKEN_ERROR, INVALID_PARAMS) + this.res.Error(c, err) + c.Abort() + return + } + + service := this.gmUserService + claims, err = this.jwtSvr.ParseToken(token) + if err != nil { + if err.Error() == "token has invalid claims: token is expired" { + err = my_error.NewBusiness(TOKEN_ERROR, ERROR_AUTH_CHECK_TOKEN_TIMEOUT) + + newToken, _ := this.jwtSvr.CreateTokenByCliams(*claims) + + this.res.Output(c.Writer, map[string]interface{}{ + "code": ERROR_AUTH_CHECK_TOKEN_TIMEOUT, + "msg": err.Error(), + "newToken": newToken, + }) + c.Abort() + return + } else { + err = my_error.NewBusiness(TOKEN_ERROR, ERROR_AUTH_CHECK_TOKEN_FAIL) + this.res.Error(c, err) + c.Abort() + return + } + } + + isExsitUser, err := service.IsExsitUser(c, claims) + + if err != nil { + this.res.Error(c, errors.WithStack(err)) + c.Abort() + return + } + + if !isExsitUser { + this.res.Error(c, my_error.NewBusiness(TOKEN_ERROR, ERROR_CEHCK_USER_EXITS)) + c.Abort() + return + } + + c.Set("userName", claims.Username) + c.Set("userId", claims.UserID) + //c.Set("roleId", claims.RoleId) + + c.Next() + return +} + +func (this *MiddleWareService) OperaterLog(ctx *gin.Context) { + + var err error + token := util.GetToken(ctx) + var claims *jwt_svr.Claims + claims, err = this.jwtSvr.ParseToken(token) + if err != nil { + this.log.Error("OperaterLog jwt err", zap.Error(err)) + ctx.Abort() + return + } + contentType := ctx.GetHeader("Content-Type") + + if strings.Contains(contentType, "application/json") { + var b []byte + b, _ = ctx.GetRawData() + + body, err := util.GzipCompress(util.Bytes2str(b)) + if err != nil { + return + } + + ctx.Request.Body = ioutil.NopCloser(bytes.NewBuffer(b)) + gmOperaterLog := &model.GmOperaterLog{ + OperaterName: cast.ToString(claims.Username), + OperaterId: cast.ToInt(claims.UserID), + OperaterAction: ctx.Request.URL.Path, + Method: ctx.Request.Method, + Body: body, + Created: time.Now(), + } + + err = this.orm.Create([]*model.GmOperaterLog{gmOperaterLog}).Error + + if err != nil { + this.log.Error("OperaterLog", zap.Error(err)) + } + } + + ctx.Next() + return +} + +func (this *MiddleWareService) Rbac(ctx *gin.Context) { + var err error + token := util.GetToken(ctx) + var claims *jwt_svr.Claims + claims, err = this.jwtSvr.ParseToken(token) + + if err != nil { + this.log.Error("Rbac ", zap.Error(err)) + return + } + obj := ctx.Request.RequestURI + + roleids, err := this.gmUserService.GetRolesByUserID(claims.UserID) + if err != nil { + this.log.Error("Rbac ", zap.Error(err)) + return + } + + ctx.Set("ev_roles", roleids) + + sort.Ints(roleids) + + for _, rg := range this.routerEngine.GetRouterConfigGroups() { + for _, routerConfig := range rg.RouterConfigs { + if obj == routerConfig.Url && routerConfig.NeedAuth { + for _, roleId := range roleids { + ok, err := this.rbac.Enforce(strconv.Itoa(roleId), obj, "*") + if err != nil { + this.res.Error(ctx, my_error.NewBusiness(TOKEN_ERROR, ERROR_RBAC_LOAD)) + ctx.Abort() + return + } + if !ok { + this.res.Error(ctx, errors.New(fmt.Sprintf("您没有操作该资源的权限:%s", routerConfig.Remark))) + ctx.Abort() + return + } + break + } + } + } + } + + ctx.Next() + return +} + +func (this *MiddleWareService) ValidatePluginSign(ctx *gin.Context) { + + pluginID := ctx.GetHeader("X-Plugin-ID") + pluginSign := ctx.GetHeader("X-Plugin-Signature") + p, hasPlugin := this.pluginRegistry.Plugin(context.Background(), pluginID) + if !hasPlugin { + this.res.Error(ctx, errors.New(fmt.Sprintf("没有找到该插件信息:%s", pluginID))) + ctx.Abort() + return + } + if !p.PluginData().PluginJsonData.BackendDebug { + var b []byte + b, _ = ctx.GetRawData() + ctx.Request.Body = ioutil.NopCloser(bytes.NewBuffer(b)) + + if !verifySignature(pluginSign, p.SignKey, string(b)) { + this.res.Error(ctx, errors.New(fmt.Sprintf("插件签名校验失败:%s", pluginID))) + ctx.Abort() + return + } + } + + ctx.Next() + return +} + +func verifySignature(signature, signatureKey, jsonString string) bool { + // 计算 HMAC-SHA256 签名 + mac := hmac.New(sha256.New, []byte(signatureKey)) + mac.Write([]byte(jsonString)) + expectedSignatureBytes := mac.Sum(nil) + + // 将期望的签名转换为 Base64 编码的字符串 + expectedSignature := base64.StdEncoding.EncodeToString(expectedSignatureBytes) + + // 比较期望的签名与实际签名是否相同 + return signature == expectedSignature +} + +func (this *MiddleWareService) CheckVersion(c *gin.Context) { + if !this.cfg.DeBug && config.Version != c.GetHeader("X-Version") && c.GetHeader("X-Version") != "test" { + err := my_error.NewError(fmt.Sprintf("后台已更新版本(新版本:%s,您的版本:%s),请刷新页面", config.Version, c.GetHeader("X-Version")), ERROR_CEHCK_VERSION_FAIL) + this.res.Error(c, err) + c.Abort() + return + } + + // 处理请求 + c.Next() +} + +/*func (this *MiddleWareService) Timer(ctx *gin.Context) { + + // start timer + start := time.Now() + // next routes + err := ctx.Next() + // stop timer + stop := time.Now() + + this.log.Info("时间拦截器", + zap.String("访问资源", ctx.Path()), + zap.Reflect("body", string(this.getPostBody(ctx))), + zap.String("消耗时间:", stop.Sub(start).String())) + return err + +} +*/ diff --git a/pkg/infrastructure/model/datax_link_info_model.go b/pkg/infrastructure/model/datax_link_info_model.go new file mode 100644 index 0000000..fcaa9f5 --- /dev/null +++ b/pkg/infrastructure/model/datax_link_info_model.go @@ -0,0 +1,20 @@ +package model + +import "time" + +type DataxLinkInfo struct { + Id int `gorm:"column:id;primaryKey;autoIncrement;NOT NULL" json:"id"` + Ip string `gorm:"column:ip;default:'';NOT NULL" json:"ip"` + Port int `gorm:"column:port;default:0;NOT NULL" json:"port"` + DbName string `gorm:"column:db_name;default:'';NOT NULL" json:"db_name"` + Username string `gorm:"column:username;default:'';NOT NULL" json:"username"` + Pwd string `gorm:"column:pwd;default:'';NOT NULL" json:"pwd"` + Remark string `gorm:"column:remark;default:;NOT NULL;index:link_remark_uniq,unique" json:"remark"` + Typ string `gorm:"column:typ;default:;NOT NULL;index:link_remark_uniq,unique" json:"typ"` + Updated time.Time `gorm:"column:updated;type:timestamp;default:CURRENT_TIMESTAMP;NOT NULL" json:"updated"` + Created time.Time `gorm:"column:created;type:timestamp;default:CURRENT_TIMESTAMP;NOT NULL" json:"created"` +} + +func (d *DataxLinkInfo) TableName() string { + return "datax_link_info" +} diff --git a/pkg/infrastructure/model/datax_list_model.go b/pkg/infrastructure/model/datax_list_model.go new file mode 100644 index 0000000..50fa363 --- /dev/null +++ b/pkg/infrastructure/model/datax_list_model.go @@ -0,0 +1,23 @@ +package model + +import "time" + +type DataxTransferList struct { + Id int `gorm:"column:id;primary_key;NOT NULL" json:"id"` + FormData string `gorm:"column:form_data;default:NULL" json:"form_data"` + Remark string `gorm:"column:remark;default:;NOT NULL;index:datax_transfer_list_remark,unique" json:"remark"` + TableName2 string `gorm:"column:table_name;default:'';NOT NULL" json:"table_name"` + IndexName string `gorm:"column:index_name;default:'';NOT NULL" json:"index_name"` + ErrorMsg string `gorm:"column:error_msg;default:'';NOT NULL" json:"error_msg"` + CrontabSpec string `gorm:"column:crontab_spec;default:'';NOT NULL" json:"crontab_spec"` + Dbcount int `gorm:"column:dbcount;default:0;NOT NULL" json:"dbcount"` + Escount int `gorm:"column:escount;default:0;NOT NULL" json:"escount"` + EsConnect int `gorm:"column:es_connect;default:0;NOT NULL;index:datax_transfer_list_remark,unique" json:"es_connect"` + Status string `gorm:"column:status;default:'任务运行中...';NOT NULL" json:"status"` + Updated time.Time `gorm:"column:updated;type:timestamp;default:CURRENT_TIMESTAMP;NOT NULL" json:"updated"` + Created time.Time `gorm:"column:created;type:timestamp;default:CURRENT_TIMESTAMP;NOT NULL" json:"created"` +} + +func (d *DataxTransferList) TableName() string { + return "datax_transfer_list" +} diff --git a/pkg/infrastructure/model/es_connect.go b/pkg/infrastructure/model/es_connect.go new file mode 100644 index 0000000..a8d46b6 --- /dev/null +++ b/pkg/infrastructure/model/es_connect.go @@ -0,0 +1,65 @@ +package model + +import ( + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/proto" + "github.com/1340691923/ElasticView/pkg/infrastructure/vo" + "github.com/goccy/go-json" + "net/http" + "strings" +) + +type EsConnect struct { + Ip string `json:"ip" db:"ip"` + User string `json:"user" db:"user"` + Pwd string `json:"pwd" db:"pwd"` + Version string `json:"version" db:"version"` + RootPEM string `json:"rootpem" db:"rootpem"` + CertPEM string `json:"certpem" db:"certpem"` + KeyPEM string `json:"keypem" db:"keypem"` + Header string `json:"header" db:"header"` +} + +func (this *EsConnect) ToEsSdkCfg(cfg *config.Config, connectId int) *proto.Config { + + header := []vo.HeaderKv{} + + json.Unmarshal([]byte(this.Header), &header) + + httpHeader := http.Header{} + + for _, v := range header { + httpHeader.Set(v.Key, v.Value) + } + + return &proto.Config{ + ConnectId: connectId, + Cfg: cfg, + Version: this.Version, + Addresses: strings.Split(this.Ip, ","), + Username: this.User, + Password: this.Pwd, + CloudID: "", + APIKey: "", + ServiceToken: "", + CertificateFingerprint: "", + Header: httpHeader, + CACert: nil, + RetryOnStatus: nil, + DisableRetry: false, + EnableRetryOnTimeout: false, + MaxRetries: 0, + CompressRequestBody: false, + DiscoverNodesOnStart: false, + DiscoverNodesInterval: 0, + EnableMetrics: false, + EnableDebugLogger: false, + EnableCompatibilityMode: false, + DisableMetaHeader: false, + UseResponseCheckOnly: false, + Transport: nil, + RootPEM: this.RootPEM, + CertPEM: this.CertPEM, + KeyPEM: this.KeyPEM, + } +} diff --git a/pkg/infrastructure/model/es_link_model.go b/pkg/infrastructure/model/es_link_model.go new file mode 100644 index 0000000..d693fab --- /dev/null +++ b/pkg/infrastructure/model/es_link_model.go @@ -0,0 +1,28 @@ +package model + +import "time" + +// EsLinkModel es连接信息表 +type EsLinkV2 struct { + Id int `gorm:"column:id;primary_key;NOT NULL" json:"id"` + Ip string `gorm:"column:ip;default:'';NOT NULL" json:"ip"` + Created time.Time `gorm:"column:created;type:timestamp;default:CURRENT_TIMESTAMP;NOT NULL" json:"created"` + Updated time.Time `gorm:"column:updated;type:timestamp;default:CURRENT_TIMESTAMP;NOT NULL" json:"updated"` + Remark string `gorm:"column:remark;default:默认连接;index:es_link_v2_remark,unique" json:"remark"` + Version string `gorm:"column:version;default:'elasticsearch6.x';NOT NULL" json:"version"` + CreateBy int `gorm:"column:create_by;default:0;NOT NULL;index:es_link_v2_remark,unique" json:"create_by"` +} + +func (e *EsLinkV2) TableName() string { + return "es_link_v2" +} + +type EsLinkV2Tmp struct { + Id int `gorm:"column:id;primary_key;NOT NULL" json:"id"` + Ip string `gorm:"column:ip;default:'';NOT NULL" json:"ip"` + Created time.Time `gorm:"column:created;type:timestamp;default:CURRENT_TIMESTAMP;NOT NULL" json:"created"` + Updated time.Time `gorm:"column:updated;type:timestamp;default:CURRENT_TIMESTAMP;NOT NULL" json:"updated"` + Remark string `gorm:"column:remark;default:默认连接;index:es_link_v2_remark,unique" json:"remark"` + Version string `gorm:"column:version;default:'elasticsearch6.x';NOT NULL" json:"version"` + CreateBy int `gorm:"column:create_by;default:0;NOT NULL;index:es_link_v2_remark,unique" json:"create_by"` +} diff --git a/pkg/infrastructure/model/eslink_cfg.go b/pkg/infrastructure/model/eslink_cfg.go new file mode 100644 index 0000000..d284b6d --- /dev/null +++ b/pkg/infrastructure/model/eslink_cfg.go @@ -0,0 +1,37 @@ +package model + +import "time" + +type EslinkCfgModelTmp struct { + RelationId int `json:"relation_id" db:"relation_id"` + ID int `gorm:"column:id" json:"id" db:"id"` + RoleCfgId int `json:"role_cfg_id" db:"role_cfg_id"` + EsLinkId int `gorm:"column:es_link_id" json:"es_link_id" db:"es_link_id"` + User string `gorm:"column:user" json:"user" db:"user"` + Pwd string `gorm:"column:pwd" json:"pwd" db:"pwd"` + Created time.Time `gorm:"column:created" json:"created" db:"created"` + Updated time.Time `gorm:"column:updated" json:"updated" db:"updated"` + Remark string `gorm:"column:remark" json:"remark" db:"cfg_remark"` + RootPEM string `gorm:"column:rootpem" json:"rootpem" db:"rootpem"` + CertPEM string `gorm:"column:certpem" json:"certpem" db:"certpem"` + KeyPEM string `gorm:"column:keypem" json:"keypem" db:"keypem"` + Header string `gorm:"column:header" json:"header" db:"header"` +} + +type EslinkCfgV2 struct { + Id int `gorm:"column:id;primary_key;NOT NULL" json:"id"` + User string `gorm:"column:user;default:'';NOT NULL" json:"user"` + Pwd string `gorm:"column:pwd;default:'';NOT NULL" json:"pwd"` + Rootpem *string `gorm:"column:rootpem" json:"rootpem"` + Certpem *string `gorm:"column:certpem" json:"certpem"` + Keypem *string `gorm:"column:keypem" json:"keypem"` + Created time.Time `gorm:"column:created;type:timestamp;default:CURRENT_TIMESTAMP;NOT NULL" json:"created"` + Updated time.Time `gorm:"column:updated;type:timestamp;default:CURRENT_TIMESTAMP;NOT NULL" json:"updated"` + CreateBy int `gorm:"column:create_by;NOT NULL" json:"create_by"` + Remark string `gorm:"column:remark;default:默认配置" json:"remark"` + Header string `gorm:"column:header;default:'[]';NOT NULL" json:"header"` +} + +func (e *EslinkCfgV2) TableName() string { + return "eslink_cfg_v2" +} diff --git a/pkg/infrastructure/model/eslink_role_cfg_reletion.go b/pkg/infrastructure/model/eslink_role_cfg_reletion.go new file mode 100644 index 0000000..9fd4a09 --- /dev/null +++ b/pkg/infrastructure/model/eslink_role_cfg_reletion.go @@ -0,0 +1,15 @@ +package model + +import "time" + +type EslinkRoleCfgReletion struct { + Id int `gorm:"column:id;primary_key;NOT NULL" json:"id"` + EsLinkId int `gorm:"column:es_link_id;default:0;NOT NULL" json:"es_link_id"` + RoleCfgId int `gorm:"column:role_cfg_id;default:0;NOT NULL" json:"role_cfg_id"` + Created time.Time `gorm:"column:created;type:timestamp;default:CURRENT_TIMESTAMP;NOT NULL" json:"created"` + Updated time.Time `gorm:"column:updated;type:timestamp;default:CURRENT_TIMESTAMP;NOT NULL" json:"updated"` +} + +func (e *EslinkRoleCfgReletion) TableName() string { + return "eslink_role_cfg_reletion" +} diff --git a/pkg/infrastructure/model/gm_operater_log.go b/pkg/infrastructure/model/gm_operater_log.go new file mode 100644 index 0000000..59d1a7e --- /dev/null +++ b/pkg/infrastructure/model/gm_operater_log.go @@ -0,0 +1,17 @@ +package model + +import "time" + +type GmOperaterLog struct { + Id int `gorm:"column:id;primary_key;NOT NULL" json:"id"` + OperaterId int `gorm:"column:operater_id;default:0;NOT NULL" json:"operater_id"` + OperaterName string `gorm:"column:operater_name;default:'';NOT NULL" json:"operater_name"` + OperaterAction string `gorm:"column:operater_action;default:'';NOT NULL" json:"operater_action"` + Method string `gorm:"column:method;default:'';NOT NULL" json:"method"` + Body []byte `gorm:"column:body;NOT NULL" json:"body"` + Created time.Time `gorm:"column:created;type:timestamp;default:CURRENT_TIMESTAMP;NOT NULL" json:"created"` +} + +func (g *GmOperaterLog) TableName() string { + return "gm_operater_log" +} diff --git a/pkg/infrastructure/model/gm_role.go b/pkg/infrastructure/model/gm_role.go new file mode 100644 index 0000000..6f51fb4 --- /dev/null +++ b/pkg/infrastructure/model/gm_role.go @@ -0,0 +1,12 @@ +package model + +type GmRole struct { + Id int `gorm:"column:id;primary_key;NOT NULL" json:"id"` + RoleName string `gorm:"column:role_name;default:NULL" json:"name"` + Description string `gorm:"column:description;default:NULL" json:"description"` + RoleList *string `gorm:"column:role_list" json:"role_list"` +} + +func (g *GmRole) TableName() string { + return "gm_role" +} diff --git a/pkg/infrastructure/model/gm_role_eslink_cfg.go b/pkg/infrastructure/model/gm_role_eslink_cfg.go new file mode 100644 index 0000000..92c9710 --- /dev/null +++ b/pkg/infrastructure/model/gm_role_eslink_cfg.go @@ -0,0 +1,16 @@ +package model + +import "time" + +type GmRoleEslinkCfgV2 struct { + Id int32 `gorm:"column:id;primary_key;NOT NULL" json:"id"` + RoleId int32 `gorm:"column:role_id;default:0;NOT NULL" json:"role_id"` + EsLinkCfgId int32 `gorm:"column:es_link_cfg_id;default:0;NOT NULL" json:"es_link_cfg_id"` + EsLinkId int32 `gorm:"column:es_link_id;default:0;NOT NULL" json:"es_link_id"` + Created time.Time `gorm:"column:created;type:timestamp;default:CURRENT_TIMESTAMP;NOT NULL" json:"created"` + Updated time.Time `gorm:"column:updated;type:timestamp;default:CURRENT_TIMESTAMP;NOT NULL" json:"updated"` +} + +func (g *GmRoleEslinkCfgV2) TableName() string { + return "gm_role_eslink_cfg_v2" +} diff --git a/pkg/infrastructure/model/gm_user.go b/pkg/infrastructure/model/gm_user.go new file mode 100644 index 0000000..da87424 --- /dev/null +++ b/pkg/infrastructure/model/gm_user.go @@ -0,0 +1,34 @@ +package model + +import ( + "github.com/1340691923/ElasticView/pkg/util" + "time" +) + +// GmUserModel BI用户 +type GmUserModel struct { + Id int `gorm:"column:id;primary_key;NOT NULL" json:"id"` + Username string `gorm:"column:username;default:NULL;index:gm_user_username,unique" json:"username"` + Password string `gorm:"column:password;default:NULL" json:"password"` + + Avatar string `gorm:"column:avatar;default:NULL" json:"avatar"` + + Realname string `gorm:"column:realname;default:" json:"realname"` + Email string `gorm:"column:email;default:" json:"email"` + WorkWechatUid string `gorm:"column:work_wechat_uid;default:" json:"work_wechat_uid"` + + UpdateTime time.Time `gorm:"column:update_time;type:timestamp;default:CURRENT_TIMESTAMP;NOT NULL" json:"update_time"` + CreateTime time.Time `gorm:"column:create_time;type:timestamp;default:CURRENT_TIMESTAMP;NOT NULL" json:"create_time"` + LastLoginTime time.Time `gorm:"column:last_login_time;type:timestamp;default:CURRENT_TIMESTAMP;NOT NULL" json:"last_login_time"` + + IsBan int32 `gorm:"column:is_ban;default:0;NOT NULL" json:"is_ban"` +} + +func (g *GmUserModel) TableName() string { + return "gm_user" +} + +// 密码进行md5混淆 +func (this *GmUserModel) GetPassword() string { + return util.MD5HexHash(util.Str2bytes(this.Password)) +} diff --git a/pkg/infrastructure/model/guid_model.go b/pkg/infrastructure/model/guid_model.go new file mode 100644 index 0000000..ca74311 --- /dev/null +++ b/pkg/infrastructure/model/guid_model.go @@ -0,0 +1,14 @@ +package model + +import "time" + +type GmGuid struct { + Id int `gorm:"column:id;primary_key;NOT NULL" json:"id"` + Uid int `gorm:"column:uid;NOT NULL;index:guid_name,unique" json:"uid"` + GuidName string `gorm:"column:guid_name;NOT NULL;index:guid_name,unique" json:"guid_name"` + Created time.Time `gorm:"column:created;type:timestamp;default:CURRENT_TIMESTAMP;NOT NULL" json:"created"` +} + +func (g *GmGuid) TableName() string { + return "gm_guid" +} diff --git a/pkg/infrastructure/model/user_role_relation.go b/pkg/infrastructure/model/user_role_relation.go new file mode 100644 index 0000000..16071ec --- /dev/null +++ b/pkg/infrastructure/model/user_role_relation.go @@ -0,0 +1,16 @@ +package model + +import "time" + +type UserRoleRelationModel struct { + Id int `gorm:"column:id;primary_key;NOT NULL" json:"id"` + UserId int `gorm:"column:user_id;default:0;index:user_role_id,unique" json:"user_id"` + RoleId int `gorm:"column:role_id;default:0;index:user_role_id,unique" json:"role_id"` + + UpdateTime time.Time `gorm:"column:update_time;type:timestamp;default:CURRENT_TIMESTAMP;NOT NULL" json:"update_time"` + CreateTime time.Time `gorm:"column:create_time;type:timestamp;default:CURRENT_TIMESTAMP;NOT NULL" json:"create_time"` +} + +func (g *UserRoleRelationModel) TableName() string { + return "user_role_relation" +} diff --git a/pkg/infrastructure/my_error/es_index.go b/pkg/infrastructure/my_error/es_index.go new file mode 100644 index 0000000..89be8ad --- /dev/null +++ b/pkg/infrastructure/my_error/es_index.go @@ -0,0 +1,11 @@ +package my_error + +const ( + IndexNameNullError = 200001 + AliasNameNullError = 200002 +) + +var ParmasNullError = map[int]string{ + IndexNameNullError: "索引名不能为空", + AliasNameNullError: "别名不能为空", +} diff --git a/pkg/infrastructure/my_error/my_error.go b/pkg/infrastructure/my_error/my_error.go new file mode 100644 index 0000000..46c2a7b --- /dev/null +++ b/pkg/infrastructure/my_error/my_error.go @@ -0,0 +1,26 @@ +//自定义异常层 +package my_error + +//自定义异常结构体 实现Error方法 +type MyError struct { + code int + msg string +} + +// 自定义业务异常 +func NewBusiness(ErrEnum map[int]string, code int) error { + text := ErrEnum[code] + return &MyError{code, text} +} + +func NewError(text string, code int) error { + return &MyError{code, text} +} + +func (this *MyError) Error() string { + return this.msg +} + +func (this *MyError) Code() int { + return this.code +} diff --git a/pkg/infrastructure/plugin_rpc/plugin_rpc_server.go b/pkg/infrastructure/plugin_rpc/plugin_rpc_server.go new file mode 100644 index 0000000..7bb5fc9 --- /dev/null +++ b/pkg/infrastructure/plugin_rpc/plugin_rpc_server.go @@ -0,0 +1,72 @@ +package plugin_rpc + +import ( + "context" + "fmt" + _ "github.com/1340691923/ElasticView/docs" + "github.com/1340691923/ElasticView/pkg/api" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/middleware" + "github.com/1340691923/ElasticView/pkg/infrastructure/web_engine" + "github.com/gin-gonic/gin" + "go.uber.org/zap" + "net/http" +) + +type PluginRpcServer struct { + engine *web_engine.WebEngine + log *logger.AppLogger + cfg *config.Config + middleWareService *middleware.MiddleWareService + pluginUtilController *api.PluginUtilController +} + +func NewPluginRpcServer(log *logger.AppLogger, cfg *config.Config, middleWareService *middleware.MiddleWareService, pluginUtilController *api.PluginUtilController) *PluginRpcServer { + return &PluginRpcServer{engine: web_engine.NewWebEngine(), log: log, cfg: cfg, middleWareService: middleWareService, pluginUtilController: pluginUtilController} +} + +type Config struct { + Name string +} + +func (this *PluginRpcServer) runRouter() { + + this.runPluginUtil() + + this.engine.GetGinEngine().NoRoute(func(c *gin.Context) { + c.JSON(200, map[string]interface{}{ + "code": 500, + "msg": "路由不存在", + }) + }) + +} + +func (this *PluginRpcServer) Run(ctx context.Context) (err error) { + + this.runRouter() + + srv := &http.Server{ + Addr: fmt.Sprintf("127.0.0.1:%d", this.cfg.PluginRpcPort), + Handler: this.engine.GetGinEngine(), + } + + go func() { + this.log.Info("PluginRpcServer RUN ", zap.String("端口号", fmt.Sprintf(":%d", this.cfg.PluginRpcPort))) + if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed { + this.log.Error("PluginRpcServer RUN err", zap.Error(err)) + panic(err) + } + }() + + <-ctx.Done() + if srv == nil { + return + } + err = srv.Shutdown(context.Background()) + if err != nil { + return + } + return +} diff --git a/pkg/infrastructure/plugin_rpc/plugin_util.go b/pkg/infrastructure/plugin_rpc/plugin_util.go new file mode 100644 index 0000000..c9ff970 --- /dev/null +++ b/pkg/infrastructure/plugin_rpc/plugin_util.go @@ -0,0 +1,72 @@ +package plugin_rpc + +// 插件工具api +func (this *PluginRpcServer) runPluginUtil() { + + const AbsolutePath = "/api/plugin_util" + + engine := this.engine.GetGinEngine() + + group := engine.Group(AbsolutePath) + { + group.POST("/LoadDebugPlugin", this.pluginUtilController.LoadDebugPlugin) + group.POST("/StopDebugPlugin", this.pluginUtilController.StopDebugPlugin) + + group.POST("/ExecSql", this.pluginUtilController.ExecSql) + group.POST("/SelectSql", this.pluginUtilController.SelectSql) + group.POST("/FirstSql", this.pluginUtilController.FirstSql) + group.POST("/EsVersion", this.pluginUtilController.EsVersion) + group.POST("/Ping", this.pluginUtilController.Ping) + group.POST("/EsCatNodes", this.pluginUtilController.EsCatNodes) + group.POST("/EsClusterStats", this.pluginUtilController.EsClusterStats) + group.POST("/EsIndicesSegmentsRequest", this.pluginUtilController.EsIndicesSegmentsRequest) + group.POST("/EsRefresh", this.pluginUtilController.EsRefresh) + group.POST("/EsOpen", this.pluginUtilController.EsOpen) + group.POST("/EsFlush", this.pluginUtilController.EsFlush) + group.POST("/EsIndicesClearCache", this.pluginUtilController.EsIndicesClearCache) + group.POST("/EsIndicesClose", this.pluginUtilController.EsIndicesClose) + group.POST("/EsIndicesForcemerge", this.pluginUtilController.EsIndicesForcemerge) + group.POST("/EsDeleteByQuery", this.pluginUtilController.EsDeleteByQuery) + group.POST("/EsSnapshotCreate", this.pluginUtilController.EsSnapshotCreate) + group.POST("/EsSnapshotDelete", this.pluginUtilController.EsSnapshotDelete) + group.POST("/EsRestoreSnapshot", this.pluginUtilController.EsRestoreSnapshot) + group.POST("/EsSnapshotStatus", this.pluginUtilController.EsSnapshotStatus) + group.POST("/EsSnapshotGetRepository", this.pluginUtilController.EsSnapshotGetRepository) + group.POST("/EsSnapshotCreateRepository", this.pluginUtilController.EsSnapshotCreateRepository) + group.POST("/EsSnapshotDeleteRepository", this.pluginUtilController.EsSnapshotDeleteRepository) + group.POST("/EsGetIndices", this.pluginUtilController.EsGetIndices) + group.POST("/EsCatHealth", this.pluginUtilController.EsCatHealth) + group.POST("/EsCatShards", this.pluginUtilController.EsCatShards) + group.POST("/EsCatCount", this.pluginUtilController.EsCatCount) + group.POST("/EsCatAllocationRequest", this.pluginUtilController.EsCatAllocationRequest) + group.POST("/EsCatAliases", this.pluginUtilController.EsCatAliases) + + group.POST("/EsPerformRequest", this.pluginUtilController.EsPerformRequest) + + group.POST("/EsDelete", this.pluginUtilController.EsDelete) + group.POST("/EsUpdate", this.pluginUtilController.EsUpdate) + group.POST("/EsCreate", this.pluginUtilController.EsCreate) + group.POST("/EsSearch", this.pluginUtilController.EsSearch) + group.POST("/EsIndicesPutSettingsRequest", this.pluginUtilController.EsIndicesPutSettingsRequest) + group.POST("/EsCreateIndex", this.pluginUtilController.EsCreateIndex) + group.POST("/EsDeleteIndex", this.pluginUtilController.EsDeleteIndex) + group.POST("/EsReindex", this.pluginUtilController.EsReindex) + group.POST("/EsIndicesGetSettingsRequest", this.pluginUtilController.EsIndicesGetSettingsRequest) + group.POST("/EsPutMapping", this.pluginUtilController.EsPutMapping) + group.POST("/EsGetMapping", this.pluginUtilController.EsGetMapping) + group.POST("/EsGetAliases", this.pluginUtilController.EsGetAliases) + group.POST("/EsAddAliases", this.pluginUtilController.EsAddAliases) + group.POST("/EsRemoveAliases", this.pluginUtilController.EsRemoveAliases) + group.POST("/EsMoveToAnotherIndexAliases", this.pluginUtilController.EsMoveToAnotherIndexAliases) + group.POST("/EsTaskList", this.pluginUtilController.EsTaskList) + group.POST("/EsTasksCancel", this.pluginUtilController.EsTasksCancel) + group.POST("/EsRunDsl", this.pluginUtilController.EsRunDsl) + group.POST("/MysqlExecSql", this.pluginUtilController.MysqlExecSql) + group.POST("/MysqlSelectSql", this.pluginUtilController.MysqlSelectSql) + group.POST("/MysqlFirstSql", this.pluginUtilController.MysqlFirstSql) + group.POST("/RedisExecCommand", this.pluginUtilController.RedisExecCommand) + group.POST("/MongoExecCommand", this.pluginUtilController.MongoExecCommand) + group.POST("/ShowMongoDbs", this.pluginUtilController.ShowMongoDbs) + + } +} diff --git a/pkg/infrastructure/plugins/backendplugin/grpc_plugin/client.go b/pkg/infrastructure/plugins/backendplugin/grpc_plugin/client.go new file mode 100644 index 0000000..27b9fbc --- /dev/null +++ b/pkg/infrastructure/plugins/backendplugin/grpc_plugin/client.go @@ -0,0 +1,116 @@ +package grpcplugin + +import ( + "github.com/1340691923/eve-plugin-sdk-go/backend/grpcplugin" + "github.com/hashicorp/go-hclog" + "os" + + goplugin "github.com/hashicorp/go-plugin" + "os/exec" +) + +type PluginDescriptor struct { + pluginID string + executablePath string + executableArgs []string + versionedPlugins map[int]goplugin.PluginSet + isDebug bool + pluginAddr string + pid int +} + +func newProductClientConfig( + executablePath string, + args []string, + env []string, + log hclog.Logger, + versionedPlugins map[int]goplugin.PluginSet) *goplugin.ClientConfig { + + cmd := exec.Command(executablePath, args...) + cmd.Env = env + os.Chmod(executablePath, 0755) + + return &goplugin.ClientConfig{ + Cmd: cmd, + HandshakeConfig: handshake, + VersionedPlugins: versionedPlugins, + Logger: log, + AllowedProtocols: []goplugin.Protocol{goplugin.ProtocolGRPC}, + } +} + +var handshake = goplugin.HandshakeConfig{ + ProtocolVersion: grpcplugin.ProtocolVersion, + MagicCookieKey: grpcplugin.MagicCookieKey, + MagicCookieValue: grpcplugin.MagicCookieValue, +} + +type PluginAddr struct { + Net string + Address string +} + +func NewPluginAddr(net string, address string) *PluginAddr { + return &PluginAddr{Net: net, Address: address} +} + +func (p PluginAddr) Network() string { + return p.Net +} + +func (p PluginAddr) String() string { + return p.Address +} + +func newTestClientConfig(address string, pid int, log hclog.Logger, versionedPlugins map[int]goplugin.PluginSet) *goplugin.ClientConfig { + + logger := hclog.New(&hclog.LoggerOptions{ + Name: log.Name(), + Output: os.Stdout, + Level: hclog.Debug, + }) + + return &goplugin.ClientConfig{ + Reattach: &goplugin.ReattachConfig{ + Addr: NewPluginAddr("tcp", address), + Pid: pid, + Protocol: goplugin.ProtocolGRPC, + Test: true, + ProtocolVersion: 2, + }, + Logger: logger, + Plugins: versionedPlugins[grpcplugin.ProtocolVersion], + HandshakeConfig: handshake, + VersionedPlugins: versionedPlugins, + AllowedProtocols: []goplugin.Protocol{goplugin.ProtocolGRPC}, + } +} + +func getV2PluginSet() goplugin.PluginSet { + return goplugin.PluginSet{ + "resource": &grpcplugin.ResourceGRPCPlugin{}, + "basic": &grpcplugin.PluginInfoGRPCPlugin{}, + } +} + +func NewBackendPlugin( + log hclog.Logger, + closeLogWriteCallback func() error, + pluginID, + executablePath string, + isDebug bool, + testPluginTcpAddr string, + testPluginPid int, + executableArgs []string) *GrpcPlugin { + return newPlugin(PluginDescriptor{ + pluginID: pluginID, + executablePath: executablePath, + executableArgs: executableArgs, + pluginAddr: testPluginTcpAddr, + pid: testPluginPid, + isDebug: isDebug, + versionedPlugins: map[int]goplugin.PluginSet{ + grpcplugin.ProtocolVersion: getV2PluginSet(), + }, + }, []string{}, log, closeLogWriteCallback) +} diff --git a/pkg/infrastructure/plugins/backendplugin/grpc_plugin/client_v2.go b/pkg/infrastructure/plugins/backendplugin/grpc_plugin/client_v2.go new file mode 100644 index 0000000..f3c1410 --- /dev/null +++ b/pkg/infrastructure/plugins/backendplugin/grpc_plugin/client_v2.go @@ -0,0 +1,102 @@ +package grpcplugin + +import ( + "context" + "errors" + "fmt" + "github.com/1340691923/eve-plugin-sdk-go/backend" + "github.com/1340691923/eve-plugin-sdk-go/backend/grpcplugin" + "github.com/1340691923/eve-plugin-sdk-go/genproto/pluginv2" + "github.com/hashicorp/go-plugin" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + "io" +) + +type ClientV2 struct { + grpcplugin.PluginInfoClient + grpcplugin.ResourceClient +} + +func newClientV2(rpcClient plugin.ClientProtocol) (pluginClient, error) { + rawBasic, err := rpcClient.Dispense("basic") + if err != nil { + return nil, err + } + + rawResource, err := rpcClient.Dispense("resource") + if err != nil { + return nil, err + } + + c := ClientV2{} + if rawBasic != nil { + if basicClient, ok := rawBasic.(grpcplugin.PluginInfoClient); ok { + c.PluginInfoClient = basicClient + } + } + + if rawResource != nil { + if resourceClient, ok := rawResource.(grpcplugin.ResourceClient); ok { + c.ResourceClient = resourceClient + } + } + + return &c, nil +} + +func (c *ClientV2) CheckHealth(ctx context.Context, req *backend.CheckHealthRequest) (*backend.CheckHealthResult, error) { + if c.PluginInfoClient == nil { + return nil, errors.New("该插件没有实现CheckHealth接口") + } + + protoContext := backend.ToProto().PluginContext(req.PluginContext) + protoResp, err := c.PluginInfoClient.CheckHealth(ctx, &pluginv2.CheckHealthRequest{PluginContext: protoContext, Headers: req.Headers}) + + if err != nil { + if status.Code(err) == codes.Unimplemented { + return &backend.CheckHealthResult{ + Status: backend.HealthStatusUnknown, + Message: "该插件没有实现CheckHealth接口", + }, nil + } + return nil, err + } + + return backend.FromProto().CheckHealthResponse(protoResp), nil +} + +func (c *ClientV2) CallResource(ctx context.Context, req *backend.CallResourceRequest, sender backend.CallResourceResponseSender) error { + if c.ResourceClient == nil { + return errors.New("该插件没有实现CallResource接口") + } + + protoReq := backend.ToProto().CallResourceRequest(req) + protoStream, err := c.ResourceClient.CallResource(ctx, protoReq) + if err != nil { + if status.Code(err) == codes.Unimplemented { + return errors.New("该插件没有实现CallResource接口") + } + + return fmt.Errorf("%v: %w", "Failed to call resource", err) + } + + for { + protoResp, err := protoStream.Recv() + if err != nil { + if status.Code(err) == codes.Unimplemented { + return errors.New("该插件没有实现CallResource接口") + } + + if errors.Is(err, io.EOF) { + return nil + } + + return fmt.Errorf("%v: %w", "failed to receive call resource response", err) + } + + if err := sender.Send(backend.FromProto().CallResourceResponse(protoResp)); err != nil { + return err + } + } +} diff --git a/pkg/infrastructure/plugins/backendplugin/grpc_plugin/grpc_plugin.go b/pkg/infrastructure/plugins/backendplugin/grpc_plugin/grpc_plugin.go new file mode 100644 index 0000000..7678903 --- /dev/null +++ b/pkg/infrastructure/plugins/backendplugin/grpc_plugin/grpc_plugin.go @@ -0,0 +1,160 @@ +package grpcplugin + +import ( + "context" + "github.com/1340691923/ElasticView/pkg/infrastructure/process" + "github.com/1340691923/eve-plugin-sdk-go/backend" + "github.com/hashicorp/go-hclog" + "github.com/hashicorp/go-plugin" + goplugin "github.com/hashicorp/go-plugin" + "github.com/pkg/errors" + "sync" +) + +type pluginClient interface { + backend.CheckHealthHandler + backend.CallResourceHandler +} + +type GrpcPlugin struct { + descriptor PluginDescriptor + clientFactory func() *plugin.Client + client *plugin.Client + pluginClient pluginClient + logger hclog.Logger + mutex sync.RWMutex + closeLogWriteCallback func() error + decommissioned bool +} + +func newPlugin(descriptor PluginDescriptor, env []string, log hclog.Logger, closeLogWriteCallback func() error) *GrpcPlugin { + return &GrpcPlugin{ + descriptor: descriptor, + logger: log, + clientFactory: func() *plugin.Client { + var clientConfig *goplugin.ClientConfig + if descriptor.isDebug { + clientConfig = newTestClientConfig( + descriptor.pluginAddr, + descriptor.pid, + log, + descriptor.versionedPlugins, + ) + } else { + clientConfig = newProductClientConfig( + descriptor.executablePath, + descriptor.executableArgs, + env, + log, + descriptor.versionedPlugins, + ) + } + + return plugin.NewClient(clientConfig) + }, + closeLogWriteCallback: closeLogWriteCallback, + } +} + +func (p *GrpcPlugin) PluginID() string { + return p.descriptor.pluginID +} + +func (p *GrpcPlugin) Logger() hclog.Logger { + return p.logger +} + +func (p *GrpcPlugin) Start(_ context.Context) error { + p.mutex.Lock() + defer p.mutex.Unlock() + + p.client = p.clientFactory() + + rpcClient, err := p.client.Client() + if err != nil { + return err + } + + if p.client.NegotiatedVersion() < 2 { + return errors.New("plugin protocol version not supported") + } + p.pluginClient, err = newClientV2(rpcClient) + if err != nil { + return err + } + + if p.pluginClient == nil { + return errors.New("no compatible plugin implementation found") + } + + elevated, err := process.IsRunningWithElevatedPrivileges() + if err != nil { + p.logger.Error("Error checking plugin process execution privilege", "error", err) + } + if elevated { + p.logger.Warn("Plugin process is running with elevated privileges. This is not recommended") + } + + return nil +} + +func (p *GrpcPlugin) Stop(_ context.Context) error { + p.mutex.Lock() + defer p.mutex.Unlock() + p.closeLogWriteCallback() + if p.client != nil { + p.client.Kill() + } + return nil +} + +func (p *GrpcPlugin) Exited() bool { + p.mutex.RLock() + defer p.mutex.RUnlock() + if p.client != nil { + return p.client.Exited() + } + return true +} + +func (p *GrpcPlugin) Decommission() error { + p.mutex.Lock() + defer p.mutex.Unlock() + + p.decommissioned = true + + return nil +} + +func (p *GrpcPlugin) IsDecommissioned() bool { + p.mutex.RLock() + defer p.mutex.RUnlock() + return p.decommissioned +} + +func (p *GrpcPlugin) getPluginClient() (pluginClient, bool) { + p.mutex.RLock() + if p.client == nil || p.client.Exited() || p.pluginClient == nil { + p.mutex.RUnlock() + return nil, false + } + pluginClient := p.pluginClient + p.mutex.RUnlock() + return pluginClient, true +} + +func (p *GrpcPlugin) CheckHealth(ctx context.Context, req *backend.CheckHealthRequest) (*backend.CheckHealthResult, error) { + pluginClient, ok := p.getPluginClient() + if !ok { + return nil, errors.New("该插件没有实现CheckHealth接口") + } + return pluginClient.CheckHealth(ctx, req) +} + +func (p *GrpcPlugin) CallResource(ctx context.Context, req *backend.CallResourceRequest, sender backend.CallResourceResponseSender) error { + pluginClient, ok := p.getPluginClient() + if !ok { + return errors.New("该插件没有实现CallResource接口") + } + return pluginClient.CallResource(ctx, req, sender) +} diff --git a/pkg/infrastructure/plugins/backendplugin/grpc_plugin/log_wrapper.go b/pkg/infrastructure/plugins/backendplugin/grpc_plugin/log_wrapper.go new file mode 100644 index 0000000..c284b12 --- /dev/null +++ b/pkg/infrastructure/plugins/backendplugin/grpc_plugin/log_wrapper.go @@ -0,0 +1,180 @@ +package grpcplugin + +import ( + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/spf13/cast" + "go.uber.org/zap" + "io" + "log" + + "github.com/hashicorp/go-hclog" +) + +type logWrapper struct { + Logger *logger.AppLogger + + name string + impliedArgs []interface{} +} + +func formatArgs(args ...interface{}) []zap.Field { + if len(args) == 0 || len(args)%2 != 0 { + return nil + } + + res := []zap.Field{} + + for n := 0; n < len(args); n += 2 { + key := args[n] + + if stringKey, ok := key.(string); ok && stringKey == "timestamp" { + continue + } + res = append(res, zap.Any(cast.ToString(key), args[n+1])) + } + + return res +} + +// Emit a message and key/value pairs at a provided log level +func (lw logWrapper) Log(level hclog.Level, msg string, args ...interface{}) { + switch level { + case hclog.Trace: + lw.Trace(msg, args...) + case hclog.Debug: + lw.Debug(msg, args...) + case hclog.Info: + lw.Info(msg, args...) + case hclog.Warn: + lw.Warn(msg, args...) + case hclog.Error: + lw.Error(msg, args...) + default: + // TODO: Handle hclog.NoLevel + } +} + +// Emit a message and key/value pairs at the TRACE level +func (lw logWrapper) Trace(msg string, args ...interface{}) { + lw.Logger.Debug(msg, formatArgs(args...)...) +} + +// Emit a message and key/value pairs at the DEBUG level +func (lw logWrapper) Debug(msg string, args ...interface{}) { + lw.Logger.Debug(msg, formatArgs(args...)...) +} + +// Emit a message and key/value pairs at the INFO level +func (lw logWrapper) Info(msg string, args ...interface{}) { + lw.Logger.Info(msg, formatArgs(args...)...) +} + +// Emit a message and key/value pairs at the WARN level +func (lw logWrapper) Warn(msg string, args ...interface{}) { + lw.Logger.Warn(msg, formatArgs(args...)...) +} + +// Emit a message and key/value pairs at the ERROR level +func (lw logWrapper) Error(msg string, args ...interface{}) { + lw.Logger.Error(msg, formatArgs(args...)...) +} + +// Indicate if TRACE logs would be emitted. +func (lw logWrapper) IsTrace() bool { return true } + +// Indicate if DEBUG logs would be emitted. +func (lw logWrapper) IsDebug() bool { return true } + +// Indicate if INFO logs would be emitted. +func (lw logWrapper) IsInfo() bool { return true } + +// Indicate if WARN logs would be emitted. +func (lw logWrapper) IsWarn() bool { return true } + +// Indicate if ERROR logs would be emitted. +func (lw logWrapper) IsError() bool { return true } + +// ImpliedArgs returns With key/value pairs +func (lw logWrapper) ImpliedArgs() []interface{} { + return lw.impliedArgs +} + +// Creates a sublogger that will always have the given key/value pairs +func (lw logWrapper) With(args ...interface{}) hclog.Logger { + + res := []zap.Field{} + if len(args) > 0 && len(args)%2 == 0 { + for n := 0; n < len(args); n += 2 { + key := args[n] + + if stringKey, ok := key.(string); ok && stringKey == "timestamp" { + continue + } + res = append(res, zap.Any(cast.ToString(key), args[n+1])) + } + } + + return logWrapper{ + Logger: lw.Logger.With(res...), + name: lw.name, + impliedArgs: args, + } +} + +// Returns the Name of the logger +func (lw logWrapper) Name() string { + return lw.name +} + +// Create a logger that will prepend the name string on the front of all messages. +// If the logger already has a name, the new value will be appended to the current +// name. +func (lw logWrapper) Named(name string) hclog.Logger { + if name == "stdio" { + // discard logs from stdio hashicorp/go-plugin gRPC service since + // it's not enabled/in use per default. + // discard debug log of "waiting for stdio data". + // discard warn log of "received EOF, stopping recv loop". + return hclog.NewNullLogger() + } + + if lw.name != "" { + name = fmt.Sprintf("%s.%s", lw.name, name) + } + + return logWrapper{ + Logger: lw.Logger.Named(name), + name: name, + impliedArgs: lw.impliedArgs, + } +} + +// Create a logger that will prepend the name string on the front of all messages. +// This sets the name of the logger to the value directly, unlike Named which honor +// the current name as well. +func (lw logWrapper) ResetNamed(name string) hclog.Logger { + return logWrapper{ + Logger: lw.Logger.Named(name), + name: name, + impliedArgs: lw.impliedArgs, + } +} + +// No-op. The wrapped logger implementation cannot update the level on the fly. +func (lw logWrapper) GetLevel() hclog.Level { + return hclog.Trace +} + +// No-op. The wrapped logger implementation cannot update the level on the fly. +func (lw logWrapper) SetLevel(level hclog.Level) {} + +// Return a value that conforms to the stdlib log.Logger interface +func (lw logWrapper) StandardLogger(ops *hclog.StandardLoggerOptions) *log.Logger { + return nil +} + +// Return a value that conforms to io.Writer, which can be passed into log.SetOutput() +func (lw logWrapper) StandardWriter(opts *hclog.StandardLoggerOptions) io.Writer { + return io.Discard +} diff --git a/pkg/infrastructure/plugins/backendplugin/plugin.go b/pkg/infrastructure/plugins/backendplugin/plugin.go new file mode 100644 index 0000000..81af6d6 --- /dev/null +++ b/pkg/infrastructure/plugins/backendplugin/plugin.go @@ -0,0 +1,19 @@ +package backendplugin + +import ( + "context" + "github.com/1340691923/eve-plugin-sdk-go/backend" + "github.com/hashicorp/go-hclog" +) + +type Plugin interface { + PluginID() string + Logger() hclog.Logger + Start(ctx context.Context) error + Stop(ctx context.Context) error + Exited() bool + Decommission() error + IsDecommissioned() bool + backend.CheckHealthHandler + backend.CallResourceHandler +} diff --git a/pkg/infrastructure/plugins/backendplugin/provider/provider.go b/pkg/infrastructure/plugins/backendplugin/provider/provider.go new file mode 100644 index 0000000..d0afdd1 --- /dev/null +++ b/pkg/infrastructure/plugins/backendplugin/provider/provider.go @@ -0,0 +1,40 @@ +package provider + +import ( + "context" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + grpcplugin "github.com/1340691923/ElasticView/pkg/infrastructure/plugins/backendplugin/grpc_plugin" + "github.com/1340691923/ElasticView/pkg/infrastructure/plugins/plugin" + "github.com/hashicorp/go-hclog" + "path" +) + +type Config struct { + SignKey string + ID string + PluginDir string + PluginFileName string + ExecArgs []string + IsDebug bool + TestAddr string + TestPid int +} + +func (p *Config) ExecutablePath() string { + return path.Join(p.PluginDir, p.PluginFileName) +} + +func DefaultProvider(_ context.Context, log hclog.Logger, closeLogWriteCallback func() error, provideCfg *Config, cfg *config.Config) *plugin.Plugin { + p := new(plugin.Plugin) + p.PluginDir = provideCfg.PluginDir + p.PluginFileName = provideCfg.PluginFileName + p.ID = provideCfg.ID + p.SignKey = provideCfg.SignKey + p.Cfg = cfg + p.RegisterClient(grpcplugin.NewBackendPlugin( + log, closeLogWriteCallback, provideCfg.ID, provideCfg.ExecutablePath(), provideCfg.IsDebug, + provideCfg.TestAddr, provideCfg.TestPid, provideCfg.ExecArgs)) + + p.SetLogger(log) + return p +} diff --git a/pkg/infrastructure/plugins/datasource.go b/pkg/infrastructure/plugins/datasource.go new file mode 100644 index 0000000..194e103 --- /dev/null +++ b/pkg/infrastructure/plugins/datasource.go @@ -0,0 +1,224 @@ +package plugins + +import ( + "context" + "errors" + "fmt" + "github.com/1340691923/ElasticView/pkg/util/proxyutil" + "github.com/1340691923/ElasticView/pkg/util/response" + "github.com/1340691923/eve-plugin-sdk-go/backend" + "github.com/gin-gonic/gin" + "io" + "log" + "net/http" + "net/url" + "sync" +) + +type DataSourcePlugin struct { + ginCtx *gin.Context + rpcPlugin backend.CallResourceHandler +} + +func NewDataSourcePlugin(ginCtx *gin.Context, rpcPlugin backend.CallResourceHandler) *DataSourcePlugin { + return &DataSourcePlugin{ginCtx: ginCtx, rpcPlugin: rpcPlugin} +} + +func (this *DataSourcePlugin) CallPluginResource() { + req, err := this.pluginResourceRequest() + if err != nil { + this.ginCtx.String(http.StatusBadRequest, "Failed for create plugin resource request", err) + return + } + + if err = this.makePluginResourceRequest(req); err != nil { + handleCallResourceError(err, this.ginCtx) + } + +} + +func (this *DataSourcePlugin) makePluginResourceRequest(req *http.Request) error { + keepCookieModel := struct { + KeepCookies []string `json:"keepCookies"` + }{} + + proxyutil.ClearCookieHeader(req, keepCookieModel.KeepCookies) + proxyutil.PrepareProxyRequest(req) + + body, err := io.ReadAll(req.Body) + if err != nil { + return fmt.Errorf("failed to read request body: %w", err) + } + + crReq := &backend.CallResourceRequest{ + Path: req.URL.Path, + Method: req.Method, + URL: req.URL.String(), + Headers: req.Header, + Body: body, + } + + childCtx, cancel := context.WithCancel(req.Context()) + defer cancel() + stream := newCallResourceResponseStream(childCtx) + + var wg sync.WaitGroup + wg.Add(1) + + defer func() { + if err := stream.Close(); err != nil { + log.Println("Failed to close plugin resource stream", "err", err) + } + wg.Wait() + }() + + var flushStreamErr error + go func() { + flushStreamErr = flushStream(stream, this.ginCtx.Writer) + wg.Done() + }() + + if err := this.CallResource(crReq, stream); err != nil { + return err + } + + return flushStreamErr +} + +type callResourceClientResponseStream interface { + Recv() (*backend.CallResourceResponse, error) + Close() error +} + +func flushStream(stream callResourceClientResponseStream, w http.ResponseWriter) error { + processedStreams := 0 + + for { + resp, err := stream.Recv() + if errors.Is(err, io.EOF) { + if processedStreams == 0 { + return errors.New("received empty resource response") + } + return nil + } + if err != nil { + if processedStreams == 0 { + return fmt.Errorf("%v: %w", "failed to receive response from resource call", err) + } + + log.Println("Failed to receive response from resource call", "err", err) + return stream.Close() + } + + // Expected that headers and status are only part of first stream + if processedStreams == 0 && resp.Headers != nil { + // Make sure a content type always is returned in response + if _, exists := resp.Headers["Content-Type"]; !exists { + resp.Headers["Content-Type"] = []string{"application/json"} + } + + for k, values := range resp.Headers { + // Due to security reasons we don't want to forward + // cookies from a backend plugin to clients/browsers. + if k == "Set-Cookie" { + continue + } + + for _, v := range values { + // TODO: Figure out if we should use Set here instead + // nolint:gocritic + w.Header().Add(k, v) + } + } + + proxyutil.SetProxyResponseHeaders(w.Header()) + + w.WriteHeader(resp.Status) + } + + if _, err := w.Write(resp.Body); err != nil { + log.Println("Failed to write resource response", "err", err) + } + + if flusher, ok := w.(http.Flusher); ok { + flusher.Flush() + } + processedStreams++ + } +} + +func (this *DataSourcePlugin) pluginResourceRequest() (*http.Request, error) { + clonedReq := this.ginCtx.Request.Clone(this.ginCtx.Request.Context()) + rawURL := this.ginCtx.Param("action") + + if clonedReq.URL.RawQuery != "" { + rawURL += "?" + clonedReq.URL.RawQuery + } + urlPath, err := url.Parse(rawURL) + if err != nil { + return nil, err + } + clonedReq.URL = urlPath + return clonedReq, nil +} + +type callResourceResponseStream struct { + ctx context.Context + stream chan *backend.CallResourceResponse + closed bool +} + +func newCallResourceResponseStream(ctx context.Context) *callResourceResponseStream { + return &callResourceResponseStream{ + ctx: ctx, + stream: make(chan *backend.CallResourceResponse), + } +} + +func (s *callResourceResponseStream) Send(res *backend.CallResourceResponse) error { + if s.closed { + return errors.New("cannot send to a closed stream") + } + + select { + case <-s.ctx.Done(): + return errors.New("cancelled") + case s.stream <- res: + return nil + } +} + +func (s *callResourceResponseStream) Recv() (*backend.CallResourceResponse, error) { + select { + case <-s.ctx.Done(): + return nil, s.ctx.Err() + case res, ok := <-s.stream: + if !ok { + return nil, io.EOF + } + return res, nil + } +} + +func (s *callResourceResponseStream) Close() error { + if s.closed { + return errors.New("cannot close a closed stream") + } + + close(s.stream) + s.closed = true + return nil +} + +func handleCallResourceError(err error, reqCtx *gin.Context) { + response.JsonApiErr(reqCtx, 500, "Failed to call resource", err) +} + +func (this DataSourcePlugin) CallResource(req *backend.CallResourceRequest, sender backend.CallResourceResponseSender) error { + err := this.rpcPlugin.CallResource(this.ginCtx, req, sender) + if err != nil { + return fmt.Errorf("%v: %w", "Failed to call resource", err) + } + + return nil +} diff --git a/pkg/infrastructure/plugins/manager/interfaces.go b/pkg/infrastructure/plugins/manager/interfaces.go new file mode 100644 index 0000000..63273fb --- /dev/null +++ b/pkg/infrastructure/plugins/manager/interfaces.go @@ -0,0 +1,17 @@ +package manager + +import ( + "context" + "github.com/1340691923/ElasticView/pkg/infrastructure/plugins/plugin" +) + +type Service interface { + //插件通过ID查找插件。 + Plugin(ctx context.Context, id string) (*plugin.Plugin, bool) + //Plugins返回所有插件。 + Plugins(ctx context.Context) []*plugin.Plugin + //Add将提供的插件添加到注册表中。 + Add(ctx context.Context, plugin *plugin.Plugin) error + //Remove从注册表中删除请求的插件。 + Remove(ctx context.Context, id string) error +} diff --git a/pkg/infrastructure/plugins/manager/plugin_manager.go b/pkg/infrastructure/plugins/manager/plugin_manager.go new file mode 100644 index 0000000..8a20d7f --- /dev/null +++ b/pkg/infrastructure/plugins/manager/plugin_manager.go @@ -0,0 +1,78 @@ +package manager + +import ( + "context" + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/plugins/plugin" + "sync" +) + +type PluginManager struct { + store map[string]*plugin.Plugin + mu sync.RWMutex +} + +func NewPluginManager() (pluginManager *PluginManager) { + return &PluginManager{store: map[string]*plugin.Plugin{}} +} + +func (this *PluginManager) Plugin(_ context.Context, pluginID string) (*plugin.Plugin, bool) { + return this.plugin(pluginID) +} + +func (this *PluginManager) Plugins(_ context.Context) []*plugin.Plugin { + this.mu.RLock() + defer this.mu.RUnlock() + + res := make([]*plugin.Plugin, 0, len(this.store)) + for _, p := range this.store { + res = append(res, p) + } + + return res +} + +func (this *PluginManager) Add(_ context.Context, p *plugin.Plugin) error { + if this.isRegistered(p.ID) { + return fmt.Errorf("plugin %s is already registered", p.ID) + } + + this.mu.Lock() + this.store[p.ID] = p + + this.mu.Unlock() + + return nil +} + +func (this *PluginManager) Remove(_ context.Context, pluginID string) error { + _, ok := this.plugin(pluginID) + if !ok { + return fmt.Errorf("plugin %s is not registered", pluginID) + } + + this.mu.Lock() + delete(this.store, pluginID) + this.mu.Unlock() + + return nil +} + +func (this *PluginManager) plugin(pluginID string) (*plugin.Plugin, bool) { + this.mu.RLock() + defer this.mu.RUnlock() + p, exists := this.store[pluginID] + + if !exists { + return nil, false + } + + return p, true +} + +func (this *PluginManager) isRegistered(pluginID string) bool { + p, exists := this.plugin(pluginID) + + // This may have matched based on an alias + return exists && p.ID == pluginID +} diff --git a/pkg/infrastructure/plugins/manager/process/ifaces.go b/pkg/infrastructure/plugins/manager/process/ifaces.go new file mode 100644 index 0000000..5ac216c --- /dev/null +++ b/pkg/infrastructure/plugins/manager/process/ifaces.go @@ -0,0 +1,11 @@ +package process + +import ( + "context" + "github.com/1340691923/ElasticView/pkg/infrastructure/plugins/plugin" +) + +type Manager interface { + Start(ctx context.Context, p *plugin.Plugin) error + Stop(ctx context.Context, p *plugin.Plugin) error +} diff --git a/pkg/infrastructure/plugins/manager/process/process.go b/pkg/infrastructure/plugins/manager/process/process.go new file mode 100644 index 0000000..3d222a7 --- /dev/null +++ b/pkg/infrastructure/plugins/manager/process/process.go @@ -0,0 +1,81 @@ +package process + +import ( + "context" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/plugins/plugin" + "time" +) + +var ( + keepPluginAliveTickerDuration = time.Second * 1 +) + +type Service struct { + log *logger.AppLogger +} + +func ProvideService(log *logger.AppLogger) *Service { + return &Service{log: log} +} + +func (this *Service) Start(ctx context.Context, p *plugin.Plugin) error { + + if err := startPluginAndKeepItAlive(ctx, p); err != nil { + return err + } + + p.Logger().Debug("Successfully started backend plugin process") + return nil +} + +func (this *Service) Stop(ctx context.Context, p *plugin.Plugin) error { + p.Logger().Debug("Stopping plugin process") + if err := p.Decommission(); err != nil { + return err + } + + if err := p.Stop(ctx); err != nil { + return err + } + + return nil +} + +func startPluginAndKeepItAlive(ctx context.Context, p *plugin.Plugin) error { + if err := p.Start(ctx); err != nil { + return err + } + + go func(p *plugin.Plugin) { + if err := keepPluginAlive(p); err != nil { + p.Logger().Error("Attempt to restart killed plugin process failed", "error", err) + } + }(p) + + return nil +} + +// keepPluginAlive will restart the plugin if the process is killed or exits +func keepPluginAlive(p *plugin.Plugin) error { + ticker := time.NewTicker(keepPluginAliveTickerDuration) + + for { + <-ticker.C + if p.IsDecommissioned() { + p.Logger().Debug("Plugin decommissioned") + return nil + } + + if !p.Exited() { + continue + } + + p.Logger().Debug("Restarting plugin") + if err := p.Start(context.Background()); err != nil { + p.Logger().Error("Failed to restart plugin", "error", err) + continue + } + p.Logger().Debug("Plugin restarted") + } +} diff --git a/pkg/infrastructure/plugins/plugin/plugin.go b/pkg/infrastructure/plugins/plugin/plugin.go new file mode 100644 index 0000000..daf41e7 --- /dev/null +++ b/pkg/infrastructure/plugins/plugin/plugin.go @@ -0,0 +1,353 @@ +package plugin + +import ( + "context" + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/plugins/backendplugin" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore" + "github.com/1340691923/eve-plugin-sdk-go/backend" + "github.com/1340691923/eve-plugin-sdk-go/build" + "github.com/1340691923/eve-plugin-sdk-go/util" + "github.com/go-gormigrate/gormigrate/v2" + "github.com/goccy/go-json" + "github.com/hashicorp/go-hclog" + "github.com/pkg/errors" + "go.uber.org/zap" + "gorm.io/gorm" + "sort" + "sync" +) + +type Plugin struct { + ID string + mu sync.Mutex + sqlExecLock sync.Mutex + PluginDir string + PluginFileName string + log hclog.Logger + client backendplugin.Plugin + orm *sqlstore.SqlStore + Cfg *config.Config + pluginData *build.PluginInitRespData + SignKey string +} + +func (p *Plugin) GetPluginFileName() string { + return p.PluginFileName +} + +func (p *Plugin) PluginID() string { + return p.ID +} + +func (p *Plugin) PluginData() *build.PluginInitRespData { + return p.pluginData +} + +func (p *Plugin) Logger() hclog.Logger { + return p.log +} + +func (p *Plugin) Gorm() *sqlstore.SqlStore { + return p.orm +} + +func (p *Plugin) DbLock() { + p.sqlExecLock.Lock() +} + +func (p *Plugin) DbUnlock() { + p.sqlExecLock.Unlock() +} + +func (p *Plugin) SetLogger(l hclog.Logger) { + p.log = l +} + +func (p *Plugin) getSqlLiteDbName() string { + if p.PluginData().PluginJsonData.BackendDebug { + return fmt.Sprintf("%s-test", p.ID) + } + return p.ID +} + +func (p *Plugin) Start(ctx context.Context) error { + p.mu.Lock() + defer p.mu.Unlock() + + if p.client == nil { + return fmt.Errorf("could not start plugin %s as no plugin client exists", p.ID) + } + + err := p.client.Start(ctx) + + if err != nil { + return errors.WithStack(err) + } + + checkResultRes, err := p.client.CheckHealth(ctx, &backend.CheckHealthRequest{}) + if err != nil { + return errors.WithStack(err) + } + + if checkResultRes == nil { + return errors.New("插件没有返回心跳返回值") + } + + p.pluginData = new(build.PluginInitRespData) + err = json.Unmarshal(checkResultRes.JSONDetails, &p.pluginData) + if err != nil { + return errors.New("插件信息返回异常") + } + + var pluginOrm *sqlstore.SqlStore + + pluginOrm, err = sqlstore.NewPluginSqlStore(p.Cfg.Plugin.StorePath, p.getSqlLiteDbName(), p.Logger()) + + if err != nil { + return errors.WithStack(err) + } + + p.orm = pluginOrm + + p.Migrator() + + return nil +} + +func (p *Plugin) Stop(ctx context.Context) error { + p.mu.Lock() + defer p.mu.Unlock() + p.orm = nil + + if p.client == nil { + return nil + } + + return p.client.Stop(ctx) +} + +func (p *Plugin) Decommission() error { + p.mu.Lock() + defer p.mu.Unlock() + + if p.client != nil { + return p.client.Decommission() + } + return nil +} + +func (p *Plugin) IsDecommissioned() bool { + if p.client != nil { + return p.client.IsDecommissioned() + } + return false +} + +func (p *Plugin) Exited() bool { + if p.client != nil { + return p.client.Exited() + } + return false +} + +func (p *Plugin) CallResource(ctx context.Context, req *backend.CallResourceRequest, sender backend.CallResourceResponseSender) error { + pluginClient, ok := p.Client() + if !ok { + return errors.New("插件没有实现CallResource接口") + } + return pluginClient.CallResource(ctx, req, sender) +} + +func (p *Plugin) CheckHealth(ctx context.Context, req *backend.CheckHealthRequest) (*backend.CheckHealthResult, error) { + pluginClient, ok := p.Client() + if !ok { + return nil, errors.New("插件没有实现CheckHealth接口") + } + return pluginClient.CheckHealth(ctx, req) +} + +func (p *Plugin) RegisterClient(c backendplugin.Plugin) { + p.client = c +} + +func (p *Plugin) Client() (backendplugin.Plugin, bool) { + if p.client != nil { + return p.client, true + } + return nil, false +} + +func (p *Plugin) Version() string { + return p.pluginData.PluginJsonData.Version +} + +func (p *Plugin) BackendDebug() bool { + return p.pluginData.PluginJsonData.BackendDebug +} + +func (p *Plugin) getMigratorTable() string { + return "migrations" +} + +func (p *Plugin) Migrator() { + migrationsTable := p.getMigratorTable() + currentPluginVersion := p.Version() + type EvMigrateSql struct { + Id string `gorm:"primaryKey"` + Sql string + } + + type PluginInfo struct { + Id int `gorm:"primaryKey"` + LocalVersion string + } + + var evMigrateSql EvMigrateSql + if !p.Gorm().Migrator().HasTable(&evMigrateSql) { + p.orm.AutoMigrate(&evMigrateSql) + } + + for _, v2 := range p.pluginData.Gormigrate.Migrations { + v := v2 + js, _ := json.Marshal(v2) + data := EvMigrateSql{Id: v.ID, Sql: string(js)} + err := p.orm.Save(&data).Error + if err != nil { + p.Logger().Error("err", zap.Error(err)) + } + } + + var evMigrateSqls []EvMigrateSql + + p.orm.Find(&evMigrateSqls) + + if len(evMigrateSqls) == 0 { + return + } + + sort.Slice(evMigrateSqls, func(i, j int) bool { + return util.LessThan(evMigrateSqls[i].Id, evMigrateSqls[j].Id) + }) + + storeMaxVersion := evMigrateSqls[0].Id + + var plugininfo PluginInfo + hasPluginInfo := p.Gorm().Migrator().HasTable(&plugininfo) + if !hasPluginInfo { + err := p.Gorm().AutoMigrate(&plugininfo) + if err != nil { + p.Logger().Error("err", zap.Error(err)) + } + } else { + err := p.Gorm().First(&plugininfo).Error + if err != nil { + p.Logger().Error("err", zap.Error(err)) + } + storeMaxVersion = plugininfo.LocalVersion + } + + if hasPluginInfo && (storeMaxVersion == currentPluginVersion) { + return + } + + defer func() { + plugininfo.Id = 1 + plugininfo.LocalVersion = currentPluginVersion + p.Gorm().Save(&plugininfo) + }() + + migrations := []*gormigrate.Migration{} + + for _, v2 := range evMigrateSqls { + v := v2 + var migration build.Migration + err := json.Unmarshal([]byte(v.Sql), &migration) + if err != nil { + p.Logger().Error("err", zap.Error(err)) + } + mig := &gormigrate.Migration{ + ID: v.Id, + Migrate: func(tx *gorm.DB) error { + for _, migrateSql := range migration.MigrateSqls { + err := tx.Exec(migrateSql.Sql, migrateSql.Args...).Error + if err != nil { + p.Logger().Error("err", zap.Error(err)) + } + } + return nil + }, + Rollback: func(tx *gorm.DB) error { + for _, sql := range migration.Rollback { + + err := tx.Exec(sql.Sql, sql.Args...).Error + if err != nil { + p.Logger().Error("err", zap.Error(err)) + } + } + return nil + }, + } + migrations = append(migrations, mig) + } + + m := gormigrate.New(p.orm.DB, gormigrate.DefaultOptions, migrations) + + if !p.orm.Migrator().HasTable(migrationsTable) { + + for _, v := range evMigrateSqls { + + if util.LessThan(currentPluginVersion, v.Id) { + break + } + err := m.MigrateTo(v.Id) + if err != nil { + p.Logger().Error("err", zap.Error(err)) + } + } + return + } + + isRollback := util.LessThan(currentPluginVersion, storeMaxVersion) + + if isRollback { + sort.Slice(evMigrateSqls, func(i, j int) bool { + return util.LessThan(evMigrateSqls[j].Id, evMigrateSqls[i].Id) + }) + + for _, v := range evMigrateSqls { + if util.LessThan(storeMaxVersion, v.Id) { + continue + } + if util.LessThan(v.Id, currentPluginVersion) { + break + } + + err := m.RollbackTo(v.Id) + if err != nil { + p.Logger().Error("err", zap.Error(err)) + } + } + return + } + + sort.Slice(evMigrateSqls, func(i, j int) bool { + return util.LessThan(evMigrateSqls[i].Id, evMigrateSqls[j].Id) + }) + + for _, v := range evMigrateSqls { + if util.LessThan(v.Id, storeMaxVersion) { + continue + } + if util.LessThan(currentPluginVersion, v.Id) { + break + } + + err := m.MigrateTo(v.Id) + if err != nil { + p.Logger().Error("err", zap.Error(err)) + } + } + +} diff --git a/pkg/infrastructure/pluginstore/plugin_store_service.go b/pkg/infrastructure/pluginstore/plugin_store_service.go new file mode 100644 index 0000000..bae8208 --- /dev/null +++ b/pkg/infrastructure/pluginstore/plugin_store_service.go @@ -0,0 +1,146 @@ +package pluginstore + +import ( + "context" + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/plugins/backendplugin/provider" + "github.com/1340691923/ElasticView/pkg/infrastructure/plugins/manager" + "github.com/1340691923/ElasticView/pkg/infrastructure/plugins/manager/process" + "github.com/1340691923/ElasticView/pkg/infrastructure/plugins/plugin" + "github.com/1340691923/ElasticView/pkg/util" + "github.com/pkg/errors" + "go.uber.org/zap" + "os" + "path/filepath" + "runtime" + "strings" + "sync" +) + +type PluginStoreService struct { + pluginRegistry manager.Service + cfg *config.Config + progressSvr *process.Service + log *logger.AppLogger +} + +func NewPluginStoreService(pluginRegistry manager.Service, cfg *config.Config, progressSvr *process.Service, log *logger.AppLogger) *PluginStoreService { + return &PluginStoreService{pluginRegistry: pluginRegistry, cfg: cfg, progressSvr: progressSvr, log: log.Named("pluginStore")} +} + +func (this *PluginStoreService) Run(ctx context.Context) error { + + err := this.init(ctx) + if err != nil { + return errors.WithStack(err) + } + + <-ctx.Done() + this.shutdown(ctx) + return ctx.Err() +} + +func (this *PluginStoreService) init(ctx context.Context) (err error) { + + if err = this.cfg.Plugin.Error(); err != nil { + return errors.WithStack(err) + } + + err = filepath.Walk(this.cfg.Plugin.LoadPath, func(path string, info os.FileInfo, err error) error { + + if err != nil { + return errors.WithStack(err) + } + + if info.IsDir() { + return nil + } + + return this.FastInitPlugin(ctx, info.Name()) + }) + + if err != nil { + return errors.WithStack(err) + } + + return nil +} + +func (s *PluginStoreService) shutdown(ctx context.Context) { + var wg sync.WaitGroup + for _, v := range s.pluginRegistry.Plugins(ctx) { + wg.Add(1) + go func(ctx context.Context, plugin *plugin.Plugin) { + defer wg.Done() + s.FastShutdown(ctx, plugin) + }(ctx, v) + } + wg.Wait() +} + +func (this *PluginStoreService) FastInitPlugin(ctx context.Context, fileName string) error { + buildOs := runtime.GOOS + buildArch := runtime.GOARCH + + if !strings.Contains(fileName, buildOs) || !strings.Contains(fileName, buildArch) { + return nil + } + + tmpArr := strings.Split(fileName, "_") + + if len(tmpArr) == 0 { + return nil + } + pluginAlias := tmpArr[0] + pluginLog, closeLogWrite, err := logger.InitPluginLog(this.cfg, pluginAlias) + if err != nil { + return errors.WithStack(err) + } + + signKey := pluginAlias + util.GetUUid() + + p := provider.DefaultProvider(ctx, pluginLog, closeLogWrite, &provider.Config{ + ID: pluginAlias, + PluginDir: this.cfg.Plugin.LoadPath, + PluginFileName: fileName, + ExecArgs: []string{ + fmt.Sprintf("-evRpcKey=%s", signKey), + fmt.Sprintf("-tmpFileStorePath=%s", this.cfg.GetStorePath(pluginAlias)), + fmt.Sprintf("-evRpcPort=%d", this.cfg.PluginRpcPort), + }, + SignKey: signKey, + }, this.cfg) + err = this.progressSvr.Start(ctx, p) + if err != nil { + this.log.Error("插件启动失败", zap.Error(err)) + return errors.WithStack(err) + } + + err = this.pluginRegistry.Add(ctx, p) + + if err != nil { + this.log.Error("插件添加失败", zap.Error(err)) + return err + } + + return nil + +} + +func (this *PluginStoreService) FastShutdown(ctx context.Context, plugin *plugin.Plugin) (err error) { + + plugin.Logger().Debug("Stopping plugin", plugin.ID) + + if err = this.progressSvr.Stop(ctx, plugin); err != nil { + plugin.Logger().Error("Failed to stop plugin", "error", err) + } + + if err = this.pluginRegistry.Remove(ctx, plugin.ID); err != nil { + plugin.Logger().Error("Failed to stop plugin", "error", err) + } + plugin.Logger().Debug("Plugin stopped", plugin.ID) + + return err +} diff --git a/pkg/infrastructure/process/process.go b/pkg/infrastructure/process/process.go new file mode 100644 index 0000000..9d2aafd --- /dev/null +++ b/pkg/infrastructure/process/process.go @@ -0,0 +1,5 @@ +package process + +func IsRunningWithElevatedPrivileges() (bool, error) { + return elevatedPrivilegesCheck() +} diff --git a/pkg/infrastructure/process/root_check.go b/pkg/infrastructure/process/root_check.go new file mode 100644 index 0000000..20b2556 --- /dev/null +++ b/pkg/infrastructure/process/root_check.go @@ -0,0 +1,21 @@ +//go:build !windows +// +build !windows + +package process + +import ( + "fmt" + "os" + "os/user" +) + +func elevatedPrivilegesCheck() (bool, error) { + u, err := user.Current() + if err != nil { + return false, fmt.Errorf("could not get current OS user to detect process privileges") + } + + return (u != nil && u.Username == "root") || + os.Geteuid() != os.Getuid() || + os.Geteuid() == 0, nil +} diff --git a/pkg/infrastructure/process/root_check_windows.go b/pkg/infrastructure/process/root_check_windows.go new file mode 100644 index 0000000..3b1eb3b --- /dev/null +++ b/pkg/infrastructure/process/root_check_windows.go @@ -0,0 +1,9 @@ +//go:build windows +// +build windows + +package process + +func elevatedPrivilegesCheck() (bool, error) { + // TODO implement Windows process root check + return false, nil +} diff --git a/pkg/infrastructure/request/Request.go b/pkg/infrastructure/request/Request.go new file mode 100644 index 0000000..8b66170 --- /dev/null +++ b/pkg/infrastructure/request/Request.go @@ -0,0 +1,18 @@ +package request + +import ( + "github.com/gin-gonic/gin" +) + +// 自定义请求 辅助方法 +type Request struct { +} + +func NewRequest() *Request { + return &Request{} +} + +// 获取用户token信息 +func (this Request) GetToken(ctx *gin.Context) (token string) { + return ctx.GetHeader("X-Token") +} diff --git a/pkg/infrastructure/response/response.go b/pkg/infrastructure/response/response.go new file mode 100644 index 0000000..3bb09ee --- /dev/null +++ b/pkg/infrastructure/response/response.go @@ -0,0 +1,184 @@ +// 自定义响应 辅助方法层 +package response + +import ( + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + . "github.com/1340691923/ElasticView/pkg/infrastructure/my_error" + proto2 "github.com/1340691923/eve-plugin-sdk-go/ev_api/proto" + "github.com/1340691923/eve-plugin-sdk-go/genproto/pluginv2" + "github.com/gin-gonic/gin" + "github.com/goccy/go-json" + "google.golang.org/protobuf/proto" + "io" + "net/http" +) + +type ResponseData struct { + Code int `json:"code"` //消息码 + Msg string `json:"msg"` //消息提示 + Data interface{} `json:"data"` //附加信息 +} + +// 自定义响应方法 +type Response struct { + log *logger.AppLogger +} + +func NewResponse(log *logger.AppLogger) *Response { + return &Response{log: log.Named("response")} +} + +const ( + SUCCESS = 0 + ERROR = 500 +) + +const ( + SearchSuccess = "查询成功" + DeleteSuccess = "删除成功" + OperateSuccess = "操作成功" + LogoutSuccess = "注销成功" + ChangeLayoutSuccess = "修改布局成功" +) + +// 正确信息 +func (this *Response) Success(ctx *gin.Context, msg string, data interface{}) error { + responseData := new(ResponseData) + responseData.Msg = msg + responseData.Data = data + responseData.send(ctx, SUCCESS) + return nil +} + +func (this *Response) SuccessProtobuf(ctx *gin.Context, msg string, data *proto2.Response) error { + responseData := new(pluginv2.CallResourceResponse) + responseData.Code = int32(data.StatusCode()) + responseData.Headers = map[string]*pluginv2.StringList{ + "EV-MSG": {Values: []string{msg}}, + } + responseData.Body = data.ResByte() + + b, err := proto.Marshal(responseData) + + if err != nil { + return err + } + + ctx.Writer.Write(b) + + return nil +} + +func (this *Response) SuccessProtobufByAny(ctx *gin.Context, msg string, data interface{}) error { + responseData := new(pluginv2.CallResourceResponse) + responseData.Code = 200 + responseData.Headers = map[string]*pluginv2.StringList{ + "EV-MSG": {Values: []string{msg}}, + } + + dataBytes, err := json.Marshal(data) + + if err != nil { + return err + } + + responseData.Body = dataBytes + + b, err := proto.Marshal(responseData) + + if err != nil { + return err + } + + ctx.Writer.Write(b) + + return nil +} + +func (this *Response) ErrorProtobuf(ctx *gin.Context, err error) error { + + req, _ := ctx.GetRawData() + + this.log.Sugar().Errorf("\n请求接口地址:%s\n请求Body:%s\n异常堆栈\n:%+v", ctx.Request.URL.Path, string(req), err) + + responseData := new(pluginv2.CallResourceResponse) + responseData.Code = 202 + responseData.Headers = map[string]*pluginv2.StringList{ + "EV-MSG": {Values: []string{err.Error()}}, + } + b, err := proto.Marshal(responseData) + + if err != nil { + return err + } + + ctx.Writer.Write(b) + + return nil +} + +// 错误信息 +func (this *Response) FastError(write io.Writer, err error) error { + myErr := ErrorToErrorCode(err) + + this.Output(write, map[string]interface{}{ + "code": myErr.Code(), + "msg": myErr.Error(), + }) + return nil +} + +// 错误信息 +func (this *Response) Error(ctx *gin.Context, err error) error { + + myErr := ErrorToErrorCode(err) + + var b []byte + b, _ = ctx.GetRawData() + + this.log.Sugar().Errorf("\n请求接口地址:%s\n请求Body:%s\n异常堆栈\n:%+v", ctx.Request.URL.Path, string(b), err) + responseData := new(ResponseData) + responseData.Msg = myErr.Error() + responseData.send(ctx, myErr.Code()) + return nil +} + +// 输出 +func (this *ResponseData) send(ctx *gin.Context, code int) error { + this.Code = code + + b, err := json.Marshal(this) + + if err != nil { + ctx.JSON(http.StatusAccepted, map[string]interface{}{"msg": err, "code": 500}) + return nil + } + if this.Code != 0 { + ctx.Status(http.StatusAccepted) + } else { + ctx.Status(http.StatusOK) + } + ctx.Writer.Write(b) + return nil +} + +// 输出 +func (this *Response) Output(write io.Writer, data map[string]interface{}) error { + b, _ := json.Marshal(data) + write.Write(b) + return nil +} + +// 处理异常(业务异常和默认异常) +func ErrorToErrorCode(err error) *MyError { + if err == nil { + return nil + } + + errorCode, ok := err.(*MyError) + + if ok { + return errorCode + } + return NewError(err.Error(), ERROR).(*MyError) +} diff --git a/pkg/infrastructure/sqlstore/gorm_log.go b/pkg/infrastructure/sqlstore/gorm_log.go new file mode 100644 index 0000000..8026a7f --- /dev/null +++ b/pkg/infrastructure/sqlstore/gorm_log.go @@ -0,0 +1,73 @@ +package sqlstore + +import ( + "context" + "fmt" + "github.com/hashicorp/go-hclog" + "github.com/pkg/errors" + "gorm.io/gorm" + gormLogger "gorm.io/gorm/logger" + "gorm.io/gorm/utils" + "time" +) + +type GormLogI struct { + level gormLogger.LogLevel + log hclog.Logger +} + +func NewGormLogI(log hclog.Logger) *GormLogI { + return &GormLogI{log: log} +} + +func (g *GormLogI) LogMode(level gormLogger.LogLevel) gormLogger.Interface { + logI := NewGormLogI(g.log) + logI.level = level + return logI +} + +func (g *GormLogI) Info(ctx context.Context, s string, i ...interface{}) { + if g.level >= gormLogger.Info { + g.log.Info(s, i...) + } +} + +func (g *GormLogI) Warn(ctx context.Context, s string, i ...interface{}) { + if g.level >= gormLogger.Warn { + g.log.Warn(s, i...) + } +} + +func (g *GormLogI) Error(ctx context.Context, s string, i ...interface{}) { + if g.level >= gormLogger.Error { + g.log.Error(s, i...) + } +} + +func (g *GormLogI) Trace(ctx context.Context, begin time.Time, fc func() (sql string, rowsAffected int64), err error) { + elapsed := time.Since(begin) + switch { + case err != nil && g.level >= gormLogger.Error && (!errors.Is(err, gorm.ErrRecordNotFound)): + sql, rows := fc() + if rows == -1 { + g.log.Error("%s %s\n[%.3fms] [rows:%v] %s", utils.FileWithLineNum(), err, float64(elapsed.Nanoseconds())/1e6, "-", sql) + } else { + g.log.Error("%s %s\n[%.3fms] [rows:%v] %s", utils.FileWithLineNum(), err, float64(elapsed.Nanoseconds())/1e6, rows, sql) + } + case elapsed > 200*time.Millisecond && g.level >= gormLogger.Warn: + sql, rows := fc() + slowLog := fmt.Sprintf("SLOW SQL >= %v", 200*time.Millisecond) + if rows == -1 { + g.log.Warn("%s %s\n[%.3fms] [rows:%v] %s", utils.FileWithLineNum(), slowLog, float64(elapsed.Nanoseconds())/1e6, "-", sql) + } else { + g.log.Warn("%s %s\n[%.3fms] [rows:%v] %s", utils.FileWithLineNum(), slowLog, float64(elapsed.Nanoseconds())/1e6, rows, sql) + } + case g.level <= gormLogger.Info: + sql, rows := fc() + if rows == -1 { + g.log.Info("%s\n[%.3fms] [rows:%v] %s", utils.FileWithLineNum(), float64(elapsed.Nanoseconds())/1e6, "-", sql) + } else { + g.log.Info("%s\n[%.3fms] [rows:%v] %s", utils.FileWithLineNum(), float64(elapsed.Nanoseconds())/1e6, rows, sql) + } + } +} diff --git a/pkg/infrastructure/sqlstore/migrator/migrator.go b/pkg/infrastructure/sqlstore/migrator/migrator.go new file mode 100644 index 0000000..d2741e0 --- /dev/null +++ b/pkg/infrastructure/sqlstore/migrator/migrator.go @@ -0,0 +1,247 @@ +package migrator + +import ( + "github.com/1340691923/ElasticView/pkg/infrastructure/access_control" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/model" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore" + util2 "github.com/1340691923/ElasticView/pkg/util" + "github.com/1340691923/eve-plugin-sdk-go/util" + "github.com/go-gormigrate/gormigrate/v2" + "github.com/pkg/errors" + "go.uber.org/zap" + "golang.org/x/sync/errgroup" + "gorm.io/gorm" + "sort" + "strconv" + "time" +) + +var rbacInstance *access_control.Rbac + +var migrators = []*gormigrate.Migration{ + { + ID: "0.0.1", + Migrate: func(tx *gorm.DB) error { + err := tx.AutoMigrate( + &model.EsLinkV2{}, + &model.GmUserModel{}, + &model.EslinkRoleCfgReletion{}, + &model.EslinkCfgV2{}, + &model.GmOperaterLog{}, + &model.GmRole{}, + &model.GmRoleEslinkCfgV2{}, + &model.GmGuid{}, + ) + if err != nil { + return err + } + + if err := tx.Exec("INSERT INTO gm_user (id, username, password, realname) VALUES(1, 'admin', '21232f297a57a5a743894a0e4a801fc3', '肖文龙');").Error; err != nil { + return err + } + if err := tx.Exec(`INSERT INTO gm_role (id,role_name,description,role_list) VALUES (1,'admin','超级管理员','[{"path":"/permission","component":"layout","redirect":"/permission/role","alwaysShow":true,"meta":{"title":"权限","icon":"system"},"children":[{"path":"role","name":"role","component":"views/permission/role","meta":{"title":"角色管理","icon":"role"},"children":[]},{"path":"user","name":"user","component":"views/permission/user","meta":{"title":"用户管理","icon":"el-icon-user"},"children":[]},{"path":"operater_log","name":"operater_log","component":"views/permission/operater_log","meta":{"title":"操作日志列表","icon":"dict"},"children":[]}]},{"path":"/connect-tree","component":"layout","redirect":"/connect-tree/link","alwaysShow":false,"meta":{"title":"数据源管理","icon":"el-icon-link"},"children":[{"path":"link","name":"link","component":"views/connect-tree/link","meta":{"title":"数据源管理","icon":"el-icon-link"},"children":[]},{"path":"auth","name":"auth","component":"views/connect-tree/auth","meta":{"title":"鉴权管理","icon":"el-icon-user"},"children":[]}]},{"path":"/plugins","component":"layout","redirect":"/plugins/market","alwaysShow":false,"meta":{"title":"插件","icon":"el-icon-link"},"children":[{"path":"/plugins/market","name":"market","component":"views/plugins/market","meta":{"title":"插件市场","icon":"el-icon-link"},"children":[]}]}]');`).Error; err != nil { + return err + } + + now := time.Now().Format(time.DateTime) + + if err := tx.Exec("INSERT INTO es_link_v2 (id,ip,created,updated,remark,version,create_by) VALUES (1,'http://127.0.0.1:9200',?,?,'默认连接','elasticsearch6.x',1);", now, now).Error; err != nil { + return err + } + + if err := tx.Exec("INSERT INTO eslink_cfg_v2(id, `user`, pwd, rootpem, certpem, keypem, created, updated, create_by, remark) VALUES(1, '', '', '', '', '', ?, ?, 1, '空鉴权');", now, now).Error; err != nil { + return err + } + + if err := tx.Exec("INSERT INTO eslink_role_cfg_reletion(id, es_link_id, role_cfg_id, created, updated) VALUES(1, 1, 1, ?, ?);", now, now).Error; err != nil { + return err + } + + if err := tx.Exec("INSERT INTO gm_role_eslink_cfg_v2 (id,role_id,es_link_cfg_id,es_link_id,created,updated) VALUES (1,1,1,1,?,?);", now, now).Error; err != nil { + return err + } + return nil + }, + Rollback: func(tx *gorm.DB) error { + return nil + }, + }, //0.0.1 + { + ID: "0.0.4", + Migrate: func(tx *gorm.DB) error { + err := tx.AutoMigrate(&model.GmUserModel{}, &model.UserRoleRelationModel{}) + if err != nil { + return errors.WithStack(err) + } + + err = tx.Create(&model.UserRoleRelationModel{ + UserId: 1, + RoleId: 1, + UpdateTime: time.Now(), + CreateTime: time.Now(), + }).Error + if err != nil { + return errors.WithStack(err) + } + + baseRole := &model.GmRole{ + RoleName: "基础角色", + Description: "可以进行数据源设置操作", + RoleList: util2.StringPtr(`[{"path":"/connect-tree","component":"layout","redirect":"/connect-tree/link","alwaysShow":false,"meta":{"title":"数据源管理","icon":"el-icon-link"},"children":[{"path":"link","name":"link","component":"views/connect-tree/link","meta":{"title":"数据源管理","icon":"el-icon-link"},"children":[]},{"path":"auth","name":"auth","component":"views/connect-tree/auth","meta":{"title":"鉴权管理","icon":"el-icon-user"},"children":[]}]}]`), + } + + err = tx.Create(baseRole).Error + if err != nil { + return errors.WithStack(err) + } + + rbacInstance.RemoveFilteredPolicy(0, strconv.Itoa(baseRole.Id)) //先全清掉 + eg := errgroup.Group{} + + apis := []string{"/api/es_link/InsertAction", "/api/es_link/DeleteAction", "/api/es_link/UpdateAction", "/api/es_link/InsertEsCfgAction", "/api/es_link/UpdateEsCfgAction", "/api/es_link/DeleteEsCfgAction"} + + for _, api := range apis { + api := api + roleId := baseRole.Id + eg.Go(func() error { + _, err = rbacInstance.AddPolicy(strconv.Itoa(roleId), api, "*") + if err != nil { + return errors.WithStack(err) + } + return nil + }) + } + + err = eg.Wait() + if err != nil { + return errors.WithStack(err) + } + + return nil + }, + Rollback: func(tx *gorm.DB) error { + return nil + }, + }, //0.0.1 +} + +type Migrator struct { + orm *gorm.DB + cfg *config.Config + log *logger.AppLogger + rbac *access_control.Rbac +} + +func NewMigrator(orm *sqlstore.SqlStore, cfg *config.Config, log *logger.AppLogger, rbac *access_control.Rbac) *Migrator { + rbacInstance = rbac + return &Migrator{orm: orm.DB, cfg: cfg, log: log, rbac: rbac} +} + +func (this *Migrator) Start() error { + + storeMaxVersion := "0.0.0" + currentVersion := config.Version + type VersionInfo struct { + Id int `gorm:"primaryKey"` + LocalVersion string + } + var versionInfo VersionInfo + + hasVersionInfo := this.orm.Migrator().HasTable(&versionInfo) + + if hasVersionInfo { + err := this.orm.First(&versionInfo).Error + if err != nil { + this.log.Error("err", zap.Error(err)) + } else { + storeMaxVersion = versionInfo.LocalVersion + } + } + + if !hasVersionInfo { + err := this.orm.AutoMigrate(&versionInfo) + if err != nil { + this.log.Error("err", zap.Error(err)) + } + } else { + err := this.orm.First(&versionInfo).Error + if err != nil { + this.log.Error("err", zap.Error(err)) + } else { + storeMaxVersion = versionInfo.LocalVersion + } + } + + if hasVersionInfo && (storeMaxVersion == currentVersion) { + return nil + } + + defer func() { + versionInfo.Id = 1 + versionInfo.LocalVersion = currentVersion + this.orm.Save(&versionInfo) + }() + + m := gormigrate.New(this.orm, gormigrate.DefaultOptions, migrators) + + isRollback := util.LessThan(currentVersion, storeMaxVersion) + + type IDs struct { + ID string + } + + var ids []IDs + for _, v := range migrators { + ids = append(ids, IDs{ID: v.ID}) + } + + if isRollback { + sort.Slice(ids, func(i, j int) bool { + return util.LessThan(ids[j].ID, ids[i].ID) + }) + + for _, v := range ids { + if util.LessThan(storeMaxVersion, v.ID) { + continue + } + if util.LessThan(v.ID, currentVersion) { + break + } + + err := m.RollbackTo(v.ID) + if err != nil { + this.log.Error("err", zap.Error(err)) + } + } + return nil + } + sort.Slice(ids, func(i, j int) bool { + return util.LessThan(ids[i].ID, ids[j].ID) + }) + + for _, v := range ids { + if util.LessThan(v.ID, storeMaxVersion) { + continue + } + if util.LessThan(currentVersion, v.ID) { + break + } + + err := m.MigrateTo(v.ID) + if err != nil { + this.log.Error("err", zap.Error(err)) + } + } + + return nil +} + +func (this *Migrator) GetMigratorsVersions() []string { + versions := []string{} + for _, v := range migrators { + versions = append(versions, v.ID) + } + return versions +} diff --git a/pkg/infrastructure/sqlstore/orm.go b/pkg/infrastructure/sqlstore/orm.go new file mode 100644 index 0000000..dab35c0 --- /dev/null +++ b/pkg/infrastructure/sqlstore/orm.go @@ -0,0 +1,77 @@ +package sqlstore + +import ( + _ "embed" + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + logger2 "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore/sqlite" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore/svr_log" + "github.com/hashicorp/go-hclog" + "github.com/pkg/errors" + "gorm.io/driver/mysql" + "gorm.io/gorm" + "path/filepath" +) + +type SqlStore struct { + *gorm.DB +} + +func newSqlStore(DB *gorm.DB) *SqlStore { + return &SqlStore{DB: DB} +} + +// NewMy 创建一个连接My的实体池 +func NewSqlStore(cfg *config.Config, logger *logger2.AppLogger) (db *SqlStore, err error) { + + gromCfg := &gorm.Config{} + + if cfg.DeBug { + gromCfg.Logger = svr_log.NewGormLogI(logger) + } + + orm, err := gorm.Open(createDbDialector(cfg), gromCfg) + + if err != nil { + err = errors.Wrap(err, fmt.Sprintf("%s连接失败", cfg.DbType)) + return + } + + db = newSqlStore(orm) + logger.Info("sqlStore组件初始化成功") + + return +} + +func createDbDialector(cfg *config.Config) gorm.Dialector { + var dialector gorm.Dialector + if cfg.DbType == config.SqliteDbTyp { + dialector = sqlite.Open(cfg.CreateDbDSN()) + } else { + dialector = mysql.Open(cfg.CreateDbDSN()) + } + + return dialector +} + +func NewPluginSqlStore(pluginStorePath, pluginName string, log hclog.Logger) (db *SqlStore, err error) { + + dsn := filepath.Join(pluginStorePath, fmt.Sprintf("%s.db", pluginName)) + + "?_pragma=charset(utf8)&_pragma=parse_time(true)&_pragma=_busy_timeout(9999999)" + + orm, err := gorm.Open(sqlite.Open(dsn), &gorm.Config{ + Logger: NewGormLogI(log), + }) + + if err != nil { + err = errors.Wrap(err, fmt.Sprintf("插件存储系统:%s连接失败", pluginName)) + return + } + + db = newSqlStore(orm) + + log.Debug(fmt.Sprintf("插件存储系统:%s连接成功", pluginName)) + + return +} diff --git a/pkg/infrastructure/sqlstore/sqlite/ddlmod.go b/pkg/infrastructure/sqlstore/sqlite/ddlmod.go new file mode 100644 index 0000000..39cc13a --- /dev/null +++ b/pkg/infrastructure/sqlstore/sqlite/ddlmod.go @@ -0,0 +1,242 @@ +package sqlite + +import ( + "database/sql" + "errors" + "fmt" + "regexp" + "strconv" + "strings" + + "gorm.io/gorm/migrator" +) + +var ( + sqliteSeparator = "`|\"|'|\t" + indexRegexp = regexp.MustCompile(fmt.Sprintf(`(?is)CREATE(?: UNIQUE)? INDEX [%v]?[\w\d-]+[%v]? ON (.*)$`, sqliteSeparator, sqliteSeparator)) + tableRegexp = regexp.MustCompile(fmt.Sprintf(`(?is)(CREATE TABLE [%v]?[\w\d-]+[%v]?)(?:\s*\((.*)\))?`, sqliteSeparator, sqliteSeparator)) + separatorRegexp = regexp.MustCompile(fmt.Sprintf("[%v]", sqliteSeparator)) + columnsRegexp = regexp.MustCompile(fmt.Sprintf(`[(,][%v]?(\w+)[%v]?`, sqliteSeparator, sqliteSeparator)) + columnRegexp = regexp.MustCompile(fmt.Sprintf(`^[%v]?([\w\d]+)[%v]?\s+([\w\(\)\d]+)(.*)$`, sqliteSeparator, sqliteSeparator)) + defaultValueRegexp = regexp.MustCompile(`(?i) DEFAULT \(?(.+)?\)?( |COLLATE|GENERATED|$)`) + regRealDataType = regexp.MustCompile(`[^\d](\d+)[^\d]?`) +) + +func getAllColumns(s string) []string { + allMatches := columnsRegexp.FindAllStringSubmatch(s, -1) + columns := make([]string, 0, len(allMatches)) + for _, matches := range allMatches { + if len(matches) > 1 { + columns = append(columns, matches[1]) + } + } + return columns +} + +type ddl struct { + head string + fields []string + columns []migrator.ColumnType +} + +func parseDDL(strs ...string) (*ddl, error) { + var result ddl + for _, str := range strs { + if sections := tableRegexp.FindStringSubmatch(str); len(sections) > 0 { + var ( + ddlBody = sections[2] + ddlBodyRunes = []rune(ddlBody) + bracketLevel int + quote rune + buf string + ) + ddlBodyRunesLen := len(ddlBodyRunes) + + result.head = sections[1] + + for idx := 0; idx < ddlBodyRunesLen; idx++ { + var ( + next rune = 0 + c = ddlBodyRunes[idx] + ) + if idx+1 < ddlBodyRunesLen { + next = ddlBodyRunes[idx+1] + } + + if sc := string(c); separatorRegexp.MatchString(sc) { + if c == next { + buf += sc // Skip escaped quote + idx++ + } else if quote > 0 { + quote = 0 + } else { + quote = c + } + } else if quote == 0 { + if c == '(' { + bracketLevel++ + } else if c == ')' { + bracketLevel-- + } else if bracketLevel == 0 { + if c == ',' { + result.fields = append(result.fields, strings.TrimSpace(buf)) + buf = "" + continue + } + } + } + + if bracketLevel < 0 { + return nil, errors.New("invalid DDL, unbalanced brackets") + } + + buf += string(c) + } + + if bracketLevel != 0 { + return nil, errors.New("invalid DDL, unbalanced brackets") + } + + if buf != "" { + result.fields = append(result.fields, strings.TrimSpace(buf)) + } + + for _, f := range result.fields { + fUpper := strings.ToUpper(f) + if strings.HasPrefix(fUpper, "CHECK") || + strings.HasPrefix(fUpper, "CONSTRAINT") { + continue + } + + if strings.HasPrefix(fUpper, "PRIMARY KEY") { + for _, name := range getAllColumns(f) { + for idx, column := range result.columns { + if column.NameValue.String == name { + column.PrimaryKeyValue = sql.NullBool{Bool: true, Valid: true} + result.columns[idx] = column + break + } + } + } + } else if matches := columnRegexp.FindStringSubmatch(f); len(matches) > 0 { + columnType := migrator.ColumnType{ + NameValue: sql.NullString{String: matches[1], Valid: true}, + DataTypeValue: sql.NullString{String: matches[2], Valid: true}, + ColumnTypeValue: sql.NullString{String: matches[2], Valid: true}, + PrimaryKeyValue: sql.NullBool{Valid: true}, + UniqueValue: sql.NullBool{Valid: true}, + NullableValue: sql.NullBool{Valid: true}, + DefaultValueValue: sql.NullString{Valid: false}, + } + + matchUpper := strings.ToUpper(matches[3]) + if strings.Contains(matchUpper, " NOT NULL") { + columnType.NullableValue = sql.NullBool{Bool: false, Valid: true} + } else if strings.Contains(matchUpper, " NULL") { + columnType.NullableValue = sql.NullBool{Bool: true, Valid: true} + } + if strings.Contains(matchUpper, " UNIQUE") { + columnType.UniqueValue = sql.NullBool{Bool: true, Valid: true} + } + if strings.Contains(matchUpper, " PRIMARY") { + columnType.PrimaryKeyValue = sql.NullBool{Bool: true, Valid: true} + } + if defaultMatches := defaultValueRegexp.FindStringSubmatch(matches[3]); len(defaultMatches) > 1 { + if strings.ToLower(defaultMatches[1]) != "null" { + columnType.DefaultValueValue = sql.NullString{String: strings.Trim(defaultMatches[1], `"`), Valid: true} + } + } + + // data type length + matches := regRealDataType.FindAllStringSubmatch(columnType.DataTypeValue.String, -1) + if len(matches) == 1 && len(matches[0]) == 2 { + size, _ := strconv.Atoi(matches[0][1]) + columnType.LengthValue = sql.NullInt64{Valid: true, Int64: int64(size)} + columnType.DataTypeValue.String = strings.TrimSuffix(columnType.DataTypeValue.String, matches[0][0]) + } + + result.columns = append(result.columns, columnType) + } + } + } else if matches := indexRegexp.FindStringSubmatch(str); len(matches) > 0 { + for _, column := range getAllColumns(matches[1]) { + for idx, c := range result.columns { + if c.NameValue.String == column { + c.UniqueValue = sql.NullBool{Bool: strings.ToUpper(strings.Fields(str)[1]) == "UNIQUE", Valid: true} + result.columns[idx] = c + } + } + } + } else { + return nil, errors.New("invalid DDL") + } + } + + return &result, nil +} + +func (d *ddl) compile() string { + if len(d.fields) == 0 { + return d.head + } + + return fmt.Sprintf("%s (%s)", d.head, strings.Join(d.fields, ",")) +} + +func (d *ddl) addConstraint(name string, sql string) { + reg := regexp.MustCompile("^CONSTRAINT [\"`]?" + regexp.QuoteMeta(name) + "[\"` ]") + + for i := 0; i < len(d.fields); i++ { + if reg.MatchString(d.fields[i]) { + d.fields[i] = sql + return + } + } + + d.fields = append(d.fields, sql) +} + +func (d *ddl) removeConstraint(name string) bool { + reg := regexp.MustCompile("^CONSTRAINT [\"`]?" + regexp.QuoteMeta(name) + "[\"` ]") + + for i := 0; i < len(d.fields); i++ { + if reg.MatchString(d.fields[i]) { + d.fields = append(d.fields[:i], d.fields[i+1:]...) + return true + } + } + return false +} + +func (d *ddl) hasConstraint(name string) bool { + reg := regexp.MustCompile("^CONSTRAINT [\"`]?" + regexp.QuoteMeta(name) + "[\"` ]") + + for _, f := range d.fields { + if reg.MatchString(f) { + return true + } + } + return false +} + +func (d *ddl) getColumns() []string { + res := []string{} + + for _, f := range d.fields { + fUpper := strings.ToUpper(f) + if strings.HasPrefix(fUpper, "PRIMARY KEY") || + strings.HasPrefix(fUpper, "CHECK") || + strings.HasPrefix(fUpper, "CONSTRAINT") || + strings.Contains(fUpper, "GENERATED ALWAYS AS") { + continue + } + + reg := regexp.MustCompile("^[\"`']?([\\w\\d]+)[\"`']?") + match := reg.FindStringSubmatch(f) + + if match != nil { + res = append(res, "`"+match[1]+"`") + } + } + return res +} diff --git a/pkg/infrastructure/sqlstore/sqlite/errors.go b/pkg/infrastructure/sqlstore/sqlite/errors.go new file mode 100644 index 0000000..67b4d98 --- /dev/null +++ b/pkg/infrastructure/sqlstore/sqlite/errors.go @@ -0,0 +1,7 @@ +package sqlite + +import "errors" + +var ( + ErrConstraintsNotImplemented = errors.New("constraints not implemented on sqlite, consider using DisableForeignKeyConstraintWhenMigrating, more details https://github.com/go-gorm/gorm/wiki/GORM-V2-Release-Note-Draft#all-new-migrator") +) diff --git a/pkg/infrastructure/sqlstore/sqlite/migrator.go b/pkg/infrastructure/sqlstore/sqlite/migrator.go new file mode 100644 index 0000000..e1e7e2e --- /dev/null +++ b/pkg/infrastructure/sqlstore/sqlite/migrator.go @@ -0,0 +1,433 @@ +package sqlite + +import ( + "database/sql" + "fmt" + "regexp" + "strings" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/migrator" + "gorm.io/gorm/schema" +) + +type Migrator struct { + migrator.Migrator +} + +func (m *Migrator) RunWithoutForeignKey(fc func() error) error { + var enabled int + m.DB.Raw("PRAGMA foreign_keys").Scan(&enabled) + if enabled == 1 { + m.DB.Exec("PRAGMA foreign_keys = OFF") + defer m.DB.Exec("PRAGMA foreign_keys = ON") + } + + return fc() +} + +func (m Migrator) HasTable(value interface{}) bool { + var count int + m.Migrator.RunWithValue(value, func(stmt *gorm.Statement) error { + return m.DB.Raw("SELECT count(*) FROM sqlite_master WHERE type='table' AND name=?", stmt.Table).Row().Scan(&count) + }) + return count > 0 +} + +func (m Migrator) DropTable(values ...interface{}) error { + return m.RunWithoutForeignKey(func() error { + values = m.ReorderModels(values, false) + tx := m.DB.Session(&gorm.Session{}) + + for i := len(values) - 1; i >= 0; i-- { + if err := m.RunWithValue(values[i], func(stmt *gorm.Statement) error { + return tx.Exec("DROP TABLE IF EXISTS ?", clause.Table{Name: stmt.Table}).Error + }); err != nil { + return err + } + } + + return nil + }) +} + +func (m Migrator) GetTables() (tableList []string, err error) { + return tableList, m.DB.Raw("SELECT name FROM sqlite_master where type=?", "table").Scan(&tableList).Error +} + +func (m Migrator) HasColumn(value interface{}, name string) bool { + var count int + m.Migrator.RunWithValue(value, func(stmt *gorm.Statement) error { + if stmt.Schema != nil { + if field := stmt.Schema.LookUpField(name); field != nil { + name = field.DBName + } + } + + if name != "" { + m.DB.Raw( + "SELECT count(*) FROM sqlite_master WHERE type = ? AND tbl_name = ? AND (sql LIKE ? OR sql LIKE ? OR sql LIKE ? OR sql LIKE ? OR sql LIKE ?)", + "table", stmt.Table, `%"`+name+`" %`, `%`+name+` %`, "%`"+name+"`%", "%["+name+"]%", "%\t"+name+"\t%", + ).Row().Scan(&count) + } + return nil + }) + return count > 0 +} + +func (m Migrator) AlterColumn(value interface{}, name string) error { + return m.RunWithoutForeignKey(func() error { + return m.recreateTable(value, nil, func(rawDDL string, stmt *gorm.Statement) (sql string, sqlArgs []interface{}, err error) { + if field := stmt.Schema.LookUpField(name); field != nil { + // lookup field from table definition, ddl might looks like `'name' int,` or `'name' int)` + reg, err := regexp.Compile("(`|'|\"| )" + field.DBName + "(`|'|\"| ) .*?(,|\\)\\s*$)") + if err != nil { + return "", nil, err + } + + createSQL := reg.ReplaceAllString(rawDDL, fmt.Sprintf("`%v` ?$3", field.DBName)) + + if createSQL == rawDDL { + return "", nil, fmt.Errorf("failed to look up field %v from DDL %v", field.DBName, rawDDL) + } + + return createSQL, []interface{}{m.FullDataTypeOf(field)}, nil + } + return "", nil, fmt.Errorf("failed to alter field with name %v", name) + }) + }) +} + +// ColumnTypes return columnTypes []gorm.ColumnType and execErr error +func (m Migrator) ColumnTypes(value interface{}) ([]gorm.ColumnType, error) { + columnTypes := make([]gorm.ColumnType, 0) + execErr := m.RunWithValue(value, func(stmt *gorm.Statement) (err error) { + var ( + sqls []string + sqlDDL *ddl + ) + + if err := m.DB.Raw("SELECT sql FROM sqlite_master WHERE type IN ? AND tbl_name = ? AND sql IS NOT NULL order by type = ? desc", []string{"table", "index"}, stmt.Table, "table").Scan(&sqls).Error; err != nil { + return err + } + + if sqlDDL, err = parseDDL(sqls...); err != nil { + return err + } + + rows, err := m.DB.Session(&gorm.Session{}).Table(stmt.Table).Limit(1).Rows() + if err != nil { + return err + } + defer func() { + err = rows.Close() + }() + + var rawColumnTypes []*sql.ColumnType + rawColumnTypes, err = rows.ColumnTypes() + if err != nil { + return err + } + + for _, c := range rawColumnTypes { + columnType := migrator.ColumnType{SQLColumnType: c} + for _, column := range sqlDDL.columns { + if column.NameValue.String == c.Name() { + column.SQLColumnType = c + columnType = column + break + } + } + columnTypes = append(columnTypes, columnType) + } + + return err + }) + + return columnTypes, execErr +} + +func (m Migrator) DropColumn(value interface{}, name string) error { + return m.recreateTable(value, nil, func(rawDDL string, stmt *gorm.Statement) (sql string, sqlArgs []interface{}, err error) { + if stmt.Schema != nil { + if field := stmt.Schema.LookUpField(name); field != nil { + name = field.DBName + } + } + + reg, err := regexp.Compile("(`|'|\"| |\\[)" + name + "(`|'|\"| |\\]) .*?,") + if err != nil { + return "", nil, err + } + + createSQL := reg.ReplaceAllString(rawDDL, "") + + return createSQL, nil, nil + }) +} + +func (m Migrator) CreateConstraint(value interface{}, name string) error { + return m.RunWithValue(value, func(stmt *gorm.Statement) error { + constraint, chk, table := m.GuessConstraintAndTable(stmt, name) + + return m.recreateTable(value, &table, + func(rawDDL string, stmt *gorm.Statement) (sql string, sqlArgs []interface{}, err error) { + var ( + constraintName string + constraintSql string + constraintValues []interface{} + ) + + if constraint != nil { + constraintName = constraint.Name + constraintSql, constraintValues = buildConstraint(constraint) + } else if chk != nil { + constraintName = chk.Name + constraintSql = "CONSTRAINT ? CHECK (?)" + constraintValues = []interface{}{clause.Column{Name: chk.Name}, clause.Expr{SQL: chk.Constraint}} + } else { + return "", nil, nil + } + + createDDL, err := parseDDL(rawDDL) + if err != nil { + return "", nil, err + } + createDDL.addConstraint(constraintName, constraintSql) + createSQL := createDDL.compile() + + return createSQL, constraintValues, nil + }) + }) +} + +func (m Migrator) DropConstraint(value interface{}, name string) error { + return m.RunWithValue(value, func(stmt *gorm.Statement) error { + constraint, chk, table := m.GuessConstraintAndTable(stmt, name) + if constraint != nil { + name = constraint.Name + } else if chk != nil { + name = chk.Name + } + + return m.recreateTable(value, &table, + func(rawDDL string, stmt *gorm.Statement) (sql string, sqlArgs []interface{}, err error) { + createDDL, err := parseDDL(rawDDL) + if err != nil { + return "", nil, err + } + createDDL.removeConstraint(name) + createSQL := createDDL.compile() + + return createSQL, nil, nil + }) + }) +} + +func (m Migrator) HasConstraint(value interface{}, name string) bool { + var count int64 + m.RunWithValue(value, func(stmt *gorm.Statement) error { + constraint, chk, table := m.GuessConstraintAndTable(stmt, name) + if constraint != nil { + name = constraint.Name + } else if chk != nil { + name = chk.Name + } + + m.DB.Raw( + "SELECT count(*) FROM sqlite_master WHERE type = ? AND tbl_name = ? AND (sql LIKE ? OR sql LIKE ? OR sql LIKE ? OR sql LIKE ? OR sql LIKE ?)", + "table", table, `%CONSTRAINT "`+name+`" %`, `%CONSTRAINT `+name+` %`, "%CONSTRAINT `"+name+"`%", "%CONSTRAINT ["+name+"]%", "%CONSTRAINT \t"+name+"\t%", + ).Row().Scan(&count) + + return nil + }) + + return count > 0 +} + +func (m Migrator) CurrentDatabase() (name string) { + var null interface{} + m.DB.Raw("PRAGMA database_list").Row().Scan(&null, &name, &null) + return +} + +func (m Migrator) BuildIndexOptions(opts []schema.IndexOption, stmt *gorm.Statement) (results []interface{}) { + for _, opt := range opts { + str := stmt.Quote(opt.DBName) + if opt.Expression != "" { + str = opt.Expression + } + + if opt.Collate != "" { + str += " COLLATE " + opt.Collate + } + + if opt.Sort != "" { + str += " " + opt.Sort + } + results = append(results, clause.Expr{SQL: str}) + } + return +} + +func (m Migrator) CreateIndex(value interface{}, name string) error { + return m.RunWithValue(value, func(stmt *gorm.Statement) error { + if stmt.Schema != nil { + if idx := stmt.Schema.LookIndex(name); idx != nil { + opts := m.BuildIndexOptions(idx.Fields, stmt) + values := []interface{}{clause.Column{Name: idx.Name}, clause.Table{Name: stmt.Table}, opts} + + createIndexSQL := "CREATE " + if idx.Class != "" { + createIndexSQL += idx.Class + " " + } + createIndexSQL += "INDEX ?" + + if idx.Type != "" { + createIndexSQL += " USING " + idx.Type + } + createIndexSQL += " ON ??" + + if idx.Where != "" { + createIndexSQL += " WHERE " + idx.Where + } + + return m.DB.Exec(createIndexSQL, values...).Error + } + } + return fmt.Errorf("failed to create index with name %v", name) + }) +} + +func (m Migrator) HasIndex(value interface{}, name string) bool { + var count int + m.RunWithValue(value, func(stmt *gorm.Statement) error { + if stmt.Schema != nil { + if idx := stmt.Schema.LookIndex(name); idx != nil { + name = idx.Name + } + } + + if name != "" { + m.DB.Raw( + "SELECT count(*) FROM sqlite_master WHERE type = ? AND tbl_name = ? AND name = ?", "index", stmt.Table, name, + ).Row().Scan(&count) + } + return nil + }) + return count > 0 +} + +func (m Migrator) RenameIndex(value interface{}, oldName, newName string) error { + return m.RunWithValue(value, func(stmt *gorm.Statement) error { + var sql string + m.DB.Raw("SELECT sql FROM sqlite_master WHERE type = ? AND tbl_name = ? AND name = ?", "index", stmt.Table, oldName).Row().Scan(&sql) + if sql != "" { + if err := m.DropIndex(value, oldName); err != nil { + return err + } + return m.DB.Exec(strings.Replace(sql, oldName, newName, 1)).Error + } + return fmt.Errorf("failed to find index with name %v", oldName) + }) +} + +func (m Migrator) DropIndex(value interface{}, name string) error { + return m.RunWithValue(value, func(stmt *gorm.Statement) error { + if stmt.Schema != nil { + if idx := stmt.Schema.LookIndex(name); idx != nil { + name = idx.Name + } + } + + return m.DB.Exec("DROP INDEX ?", clause.Column{Name: name}).Error + }) +} + +func buildConstraint(constraint *schema.Constraint) (sql string, results []interface{}) { + sql = "CONSTRAINT ? FOREIGN KEY ? REFERENCES ??" + if constraint.OnDelete != "" { + sql += " ON DELETE " + constraint.OnDelete + } + + if constraint.OnUpdate != "" { + sql += " ON UPDATE " + constraint.OnUpdate + } + + var foreignKeys, references []interface{} + for _, field := range constraint.ForeignKeys { + foreignKeys = append(foreignKeys, clause.Column{Name: field.DBName}) + } + + for _, field := range constraint.References { + references = append(references, clause.Column{Name: field.DBName}) + } + results = append(results, clause.Table{Name: constraint.Name}, foreignKeys, clause.Table{Name: constraint.ReferenceSchema.Table}, references) + return +} + +func (m Migrator) getRawDDL(table string) (string, error) { + var createSQL string + m.DB.Raw("SELECT sql FROM sqlite_master WHERE type = ? AND tbl_name = ? AND name = ?", "table", table, table).Row().Scan(&createSQL) + + if m.DB.Error != nil { + return "", m.DB.Error + } + return createSQL, nil +} + +func (m Migrator) recreateTable(value interface{}, tablePtr *string, + getCreateSQL func(rawDDL string, stmt *gorm.Statement) (sql string, sqlArgs []interface{}, err error)) error { + return m.RunWithValue(value, func(stmt *gorm.Statement) error { + table := stmt.Table + if tablePtr != nil { + table = *tablePtr + } + + rawDDL, err := m.getRawDDL(table) + if err != nil { + return err + } + + newTableName := table + "__temp" + + createSQL, sqlArgs, err := getCreateSQL(rawDDL, stmt) + if err != nil { + return err + } + if createSQL == "" { + return nil + } + + tableReg, err := regexp.Compile("\\s*('|`|\")?\\b" + table + "\\b('|`|\")?\\s*") + if err != nil { + return err + } + createSQL = tableReg.ReplaceAllString(createSQL, fmt.Sprintf(" `%v` ", newTableName)) + + createDDL, err := parseDDL(createSQL) + if err != nil { + return err + } + columns := createDDL.getColumns() + + return m.DB.Transaction(func(tx *gorm.DB) error { + if err := tx.Exec(createSQL, sqlArgs...).Error; err != nil { + return err + } + + queries := []string{ + fmt.Sprintf("INSERT INTO `%v`(%v) SELECT %v FROM `%v`", newTableName, strings.Join(columns, ","), strings.Join(columns, ","), table), + fmt.Sprintf("DROP TABLE `%v`", table), + fmt.Sprintf("ALTER TABLE `%v` RENAME TO `%v`", newTableName, table), + } + for _, query := range queries { + if err := tx.Exec(query).Error; err != nil { + return err + } + } + return nil + }) + }) +} diff --git a/pkg/infrastructure/sqlstore/sqlite/sqlite.go b/pkg/infrastructure/sqlstore/sqlite/sqlite.go new file mode 100644 index 0000000..71eddf2 --- /dev/null +++ b/pkg/infrastructure/sqlstore/sqlite/sqlite.go @@ -0,0 +1,241 @@ +package sqlite + +import ( + "context" + "database/sql" + "strconv" + "strings" + + "gorm.io/gorm/callbacks" + + gosqlite "github.com/glebarez/go-sqlite" + sqlite3 "modernc.org/sqlite/lib" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/logger" + "gorm.io/gorm/migrator" + "gorm.io/gorm/schema" +) + +// DriverName is the default driver name for SQLite. +const DriverName = "sqlite" + +type Dialector struct { + DriverName string + DSN string + Conn gorm.ConnPool +} + +func Open(dsn string) gorm.Dialector { + return &Dialector{DSN: dsn} +} + +func (dialector Dialector) Name() string { + return "sqlite" +} + +func (dialector Dialector) Initialize(db *gorm.DB) (err error) { + if dialector.DriverName == "" { + dialector.DriverName = DriverName + } + + if dialector.Conn != nil { + db.ConnPool = dialector.Conn + } else { + conn, err := sql.Open(dialector.DriverName, dialector.DSN) + if err != nil { + return err + } + db.ConnPool = conn + } + + var version string + if err := db.ConnPool.QueryRowContext(context.Background(), "select sqlite_version()").Scan(&version); err != nil { + return err + } + // https://www.sqlite.org/releaselog/3_35_0.html + if compareVersion(version, "3.35.0") >= 0 { + callbacks.RegisterDefaultCallbacks(db, &callbacks.Config{ + CreateClauses: []string{"INSERT", "VALUES", "ON CONFLICT", "RETURNING"}, + UpdateClauses: []string{"UPDATE", "SET", "WHERE", "RETURNING"}, + DeleteClauses: []string{"DELETE", "FROM", "WHERE", "RETURNING"}, + LastInsertIDReversed: true, + }) + } else { + callbacks.RegisterDefaultCallbacks(db, &callbacks.Config{ + LastInsertIDReversed: true, + }) + } + + for k, v := range dialector.ClauseBuilders() { + db.ClauseBuilders[k] = v + } + return +} + +func (dialector Dialector) ClauseBuilders() map[string]clause.ClauseBuilder { + return map[string]clause.ClauseBuilder{ + "INSERT": func(c clause.Clause, builder clause.Builder) { + if insert, ok := c.Expression.(clause.Insert); ok { + if stmt, ok := builder.(*gorm.Statement); ok { + stmt.WriteString("INSERT ") + if insert.Modifier != "" { + stmt.WriteString(insert.Modifier) + stmt.WriteByte(' ') + } + + stmt.WriteString("INTO ") + if insert.Table.Name == "" { + stmt.WriteQuoted(stmt.Table) + } else { + stmt.WriteQuoted(insert.Table) + } + return + } + } + + c.Build(builder) + }, + "LIMIT": func(c clause.Clause, builder clause.Builder) { + if limit, ok := c.Expression.(clause.Limit); ok { + var lmt = -1 + if limit.Limit != nil && *limit.Limit >= 0 { + lmt = *limit.Limit + } + if lmt >= 0 || limit.Offset > 0 { + builder.WriteString("LIMIT ") + builder.WriteString(strconv.Itoa(lmt)) + } + if limit.Offset > 0 { + builder.WriteString(" OFFSET ") + builder.WriteString(strconv.Itoa(limit.Offset)) + } + } + }, + "FOR": func(c clause.Clause, builder clause.Builder) { + if _, ok := c.Expression.(clause.Locking); ok { + // SQLite3 does not support row-level locking. + return + } + c.Build(builder) + }, + } +} + +func (dialector Dialector) DefaultValueOf(field *schema.Field) clause.Expression { + if field.AutoIncrement { + return clause.Expr{SQL: "NULL"} + } + + // doesn't work, will raise error + return clause.Expr{SQL: "DEFAULT"} +} + +func (dialector Dialector) Migrator(db *gorm.DB) gorm.Migrator { + return Migrator{migrator.Migrator{Config: migrator.Config{ + DB: db, + Dialector: dialector, + CreateIndexAfterCreateTable: true, + }}} +} + +func (dialector Dialector) BindVarTo(writer clause.Writer, stmt *gorm.Statement, v interface{}) { + writer.WriteByte('?') +} + +func (dialector Dialector) QuoteTo(writer clause.Writer, str string) { + writer.WriteByte('`') + if strings.Contains(str, ".") { + for idx, str := range strings.Split(str, ".") { + if idx > 0 { + writer.WriteString(".`") + } + writer.WriteString(str) + writer.WriteByte('`') + } + } else { + writer.WriteString(str) + writer.WriteByte('`') + } +} + +func (dialector Dialector) Explain(sql string, vars ...interface{}) string { + return logger.ExplainSQL(sql, nil, `"`, vars...) +} + +func (dialector Dialector) DataTypeOf(field *schema.Field) string { + switch field.DataType { + case schema.Bool: + return "numeric" + case schema.Int, schema.Uint: + if field.AutoIncrement && !field.PrimaryKey { + // https://www.sqlite.org/autoinc.html + return "integer PRIMARY KEY AUTOINCREMENT" + } else { + return "integer" + } + case schema.Float: + return "real" + case schema.String: + return "text" + case schema.Time: + // Distinguish between schema.Time and tag time + if val, ok := field.TagSettings["TYPE"]; ok { + return val + } else { + return "datetime" + } + case schema.Bytes: + return "blob" + } + + return string(field.DataType) +} + +func (dialectopr Dialector) SavePoint(tx *gorm.DB, name string) error { + tx.Exec("SAVEPOINT " + name) + return nil +} + +func (dialectopr Dialector) RollbackTo(tx *gorm.DB, name string) error { + tx.Exec("ROLLBACK TO SAVEPOINT " + name) + return nil +} + +func (dialector Dialector) Translate(err error) error { + switch terr := err.(type) { + case *gosqlite.Error: + switch terr.Code() { + case sqlite3.SQLITE_CONSTRAINT_UNIQUE: + return gorm.ErrDuplicatedKey + case sqlite3.SQLITE_CONSTRAINT_PRIMARYKEY: + return gorm.ErrDuplicatedKey + } + } + return err +} + +func compareVersion(version1, version2 string) int { + n, m := len(version1), len(version2) + i, j := 0, 0 + for i < n || j < m { + x := 0 + for ; i < n && version1[i] != '.'; i++ { + x = x*10 + int(version1[i]-'0') + } + i++ + y := 0 + for ; j < m && version2[j] != '.'; j++ { + y = y*10 + int(version2[j]-'0') + } + j++ + if x > y { + return 1 + } + if x < y { + return -1 + } + } + return 0 +} diff --git a/pkg/infrastructure/sqlstore/squirrel.go b/pkg/infrastructure/sqlstore/squirrel.go new file mode 100644 index 0000000..f073479 --- /dev/null +++ b/pkg/infrastructure/sqlstore/squirrel.go @@ -0,0 +1,16 @@ +package sqlstore + +import ( + "fmt" +) + +// 创建分页查询 +func CreatePage(page, limit int) int { + tmp := (page - 1) * limit + return int(tmp) +} + +// 创建模糊查询 +func CreateLike(column string) string { + return fmt.Sprint("%", column, "%") +} diff --git a/pkg/infrastructure/sqlstore/svr_log/svr_log.go b/pkg/infrastructure/sqlstore/svr_log/svr_log.go new file mode 100644 index 0000000..7a9ecad --- /dev/null +++ b/pkg/infrastructure/sqlstore/svr_log/svr_log.go @@ -0,0 +1,73 @@ +package svr_log + +import ( + "context" + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/pkg/errors" + "gorm.io/gorm" + gormLogger "gorm.io/gorm/logger" + "gorm.io/gorm/utils" + "time" +) + +type GormLogI struct { + level gormLogger.LogLevel + log *logger.AppLogger +} + +func NewGormLogI(log *logger.AppLogger) *GormLogI { + return &GormLogI{log: log} +} + +func (g *GormLogI) LogMode(level gormLogger.LogLevel) gormLogger.Interface { + logI := NewGormLogI(g.log) + logI.level = level + return logI +} + +func (g *GormLogI) Info(ctx context.Context, s string, i ...interface{}) { + if g.level >= gormLogger.Info { + g.log.Sugar().Infof(s, i...) + } +} + +func (g *GormLogI) Warn(ctx context.Context, s string, i ...interface{}) { + if g.level >= gormLogger.Warn { + g.log.Sugar().Warnf(s, i...) + } +} + +func (g *GormLogI) Error(ctx context.Context, s string, i ...interface{}) { + if g.level >= gormLogger.Error { + g.log.Sugar().Errorf(s, i...) + } +} + +func (g *GormLogI) Trace(ctx context.Context, begin time.Time, fc func() (sql string, rowsAffected int64), err error) { + elapsed := time.Since(begin) + switch { + case err != nil && g.level >= gormLogger.Error && (!errors.Is(err, gorm.ErrRecordNotFound)): + sql, rows := fc() + if rows == -1 { + g.log.Sugar().Errorf("%s %s\n[%.3fms] [rows:%v] %s", utils.FileWithLineNum(), err, float64(elapsed.Nanoseconds())/1e6, "-", sql) + } else { + g.log.Sugar().Errorf("%s %s\n[%.3fms] [rows:%v] %s", utils.FileWithLineNum(), err, float64(elapsed.Nanoseconds())/1e6, rows, sql) + } + case elapsed > 200*time.Millisecond && g.level >= gormLogger.Warn: + sql, rows := fc() + slowLog := fmt.Sprintf("SLOW SQL >= %v", 200*time.Millisecond) + if rows == -1 { + g.log.Sugar().Warnf("%s %s\n[%.3fms] [rows:%v] %s", utils.FileWithLineNum(), slowLog, float64(elapsed.Nanoseconds())/1e6, "-", sql) + } else { + g.log.Sugar().Warnf("%s %s\n[%.3fms] [rows:%v] %s", utils.FileWithLineNum(), slowLog, float64(elapsed.Nanoseconds())/1e6, rows, sql) + } + case g.level <= gormLogger.Info: + sql, rows := fc() + if rows == -1 { + g.log.Sugar().Infof("%s\n[%.3fms] [rows:%v] %s", utils.FileWithLineNum(), float64(elapsed.Nanoseconds())/1e6, "-", sql) + } else { + g.log.Sugar().Infof("%s\n[%.3fms] [rows:%v] %s", utils.FileWithLineNum(), float64(elapsed.Nanoseconds())/1e6, rows, sql) + } + } +} diff --git a/pkg/infrastructure/vo/alias_info.go b/pkg/infrastructure/vo/alias_info.go new file mode 100644 index 0000000..9ca836d --- /dev/null +++ b/pkg/infrastructure/vo/alias_info.go @@ -0,0 +1,5 @@ +package vo + +type AliasInfo struct { + AliasName string `json:"AliasName"` +} diff --git a/pkg/infrastructure/vo/cat_index.go b/pkg/infrastructure/vo/cat_index.go new file mode 100644 index 0000000..0e742cc --- /dev/null +++ b/pkg/infrastructure/vo/cat_index.go @@ -0,0 +1,5 @@ +package vo + +type Status struct { + Status string `json:"status"` +} diff --git a/pkg/infrastructure/vo/es_back.go b/pkg/infrastructure/vo/es_back.go new file mode 100644 index 0000000..9bfb8ad --- /dev/null +++ b/pkg/infrastructure/vo/es_back.go @@ -0,0 +1,7 @@ +package vo + +type SnapshotRepositoryList struct { + List []Snashot `json:"list"` + Res map[string]SnapshotRepository `json:"res"` + PathRepo []interface{} `json:"pathRepo"` +} diff --git a/pkg/infrastructure/vo/es_link.go b/pkg/infrastructure/vo/es_link.go new file mode 100644 index 0000000..bd006ef --- /dev/null +++ b/pkg/infrastructure/vo/es_link.go @@ -0,0 +1,83 @@ +package vo + +type EsLink struct { + ID int `json:"id"` + Remark string `json:"remark"` + Ip string `json:"ip"` + Version string `json:"version"` + CreateById int `json:"create_by_id"` + CreateByUserName string `json:"create_by_user_name"` + Created string `json:"created"` + Updated string `json:"updated"` + EsLinkConfigs []*EsLinkConfig `json:"es_link_configs"` +} + +type EsLinkConfig struct { + CfgRelationId int `json:"cfg_relation_id"` + Id int `json:"id"` + Ip string `json:"ip"` + Version string `json:"version"` + EsLinkId int `json:"es_link_id"` + User string `json:"user"` + Pwd string `json:"pwd"` + Remark string `json:"remark"` + Created string `json:"created"` + Updated string ` json:"updated" ` + RootPEM string ` json:"rootpem" ` + CertPEM string ` json:"certpem" ` + KeyPEM string `json:"keypem" ` + ShareRoles []string `json:"share_roles"` + Header []HeaderKv `json:"header"` +} + +type EsLinkConfigV2 struct { + Id int `json:"id"` + User string `json:"user"` + Pwd string `json:"pwd"` + Remark string `json:"remark"` + Created string `json:"created"` + Updated string ` json:"updated" ` + RootPEM string ` json:"rootpem" ` + CertPEM string ` json:"certpem" ` + KeyPEM string `json:"keypem" ` + Header []HeaderKv `json:"header"` + ShareRoles []string `json:"share_roles"` +} + +type HeaderKv struct { + Key string `json:"key"` + Value string `json:"value"` +} + +type EsLinkConfigOpt struct { + Id int `json:"id"` + + Remark string `json:"remark"` +} + +type EsLinkOpt struct { + ID int64 `json:"id"` + Remark string `json:"remark"` + Version string `json:"version"` +} + +type EsLinkTree struct { + Label string `json:"label"` + Value string `json:"value"` + Selectable string `json:"selectable"` + Children []*EsLinkTreeChildren `json:"children"` +} + +func NewEsLinkTree(label string, value string) *EsLinkTree { + return &EsLinkTree{Label: label, Value: value, Selectable: "false"} +} + +type EsLinkTreeChildren struct { + Label string `json:"label"` + Value string `json:"value"` + ParentId string `json:"parent_id"` +} + +func NewEsLinkTreeChildren(label string, value string, parentId string) *EsLinkTreeChildren { + return &EsLinkTreeChildren{Label: label, Value: value, ParentId: parentId} +} diff --git a/pkg/infrastructure/vo/index_html.go b/pkg/infrastructure/vo/index_html.go new file mode 100644 index 0000000..71b9f3d --- /dev/null +++ b/pkg/infrastructure/vo/index_html.go @@ -0,0 +1,9 @@ +package vo + +type FrontEndCfg struct { + AppUrl string + AppSubUrl string + Version string + Lang string + WatermarkContent string +} diff --git a/pkg/infrastructure/vo/oauth.go b/pkg/infrastructure/vo/oauth.go new file mode 100644 index 0000000..36419dc --- /dev/null +++ b/pkg/infrastructure/vo/oauth.go @@ -0,0 +1,8 @@ +package vo + +type OAuthConfig struct { + OauthUrl string `json:"oauthUrl"` + Name string `json:"name"` + Enable bool `json:"enable"` + Img string `json:"img"` +} diff --git a/pkg/infrastructure/vo/operater.go b/pkg/infrastructure/vo/operater.go new file mode 100644 index 0000000..a85f030 --- /dev/null +++ b/pkg/infrastructure/vo/operater.go @@ -0,0 +1,12 @@ +package vo + +type GmOperaterLog struct { + Id int `json:"id"` + OperaterId int `json:"operater_id"` + OperaterName string `json:"operater_name"` + OperaterAction string `json:"operater_action"` + Method string `json:"method"` + Body string `json:"body_str"` + OperaterRoleId int `json:"operater_role_id"` + Created string `json:"created"` +} diff --git a/pkg/infrastructure/vo/ping_result.go b/pkg/infrastructure/vo/ping_result.go new file mode 100644 index 0000000..1401c06 --- /dev/null +++ b/pkg/infrastructure/vo/ping_result.go @@ -0,0 +1,18 @@ +package vo + +type PingResult struct { + Name string `json:"name"` + ClusterName string `json:"cluster_name"` + Version struct { + Number string `json:"number"` + BuildFlavor string `json:"build_flavor"` // e.g. "oss" or "default" + BuildType string `json:"build_type"` // e.g. "docker" + BuildHash string `json:"build_hash"` // e.g. "b7e28a7" + BuildDate string `json:"build_date"` // e.g. "2019-04-05T22:55:32.697037Z" + BuildSnapshot bool `json:"build_snapshot"` // e.g. false + LuceneVersion string `json:"lucene_version"` // e.g. "8.0.0" + MinimumWireCompatibilityVersion string `json:"minimum_wire_compatibility_version"` // e.g. "6.7.0" + MinimumIndexCompatibilityVersion string `json:"minimum_index_compatibility_version"` // e.g. "6.0.0-beta1" + } `json:"version"` + TagLine string `json:"tagline"` +} diff --git a/pkg/infrastructure/vo/plugin_util.go b/pkg/infrastructure/vo/plugin_util.go new file mode 100644 index 0000000..f46b6ae --- /dev/null +++ b/pkg/infrastructure/vo/plugin_util.go @@ -0,0 +1,13 @@ +package vo + +type ExecSqlRes struct { + RowsAffected int64 `json:"rows_affected"` +} + +type SelectSqlRes struct { + Result []map[string]interface{} `json:"result"` +} + +type FirstSqlRes struct { + Result map[string]interface{} `json:"result"` +} diff --git a/pkg/infrastructure/vo/snapshot.go b/pkg/infrastructure/vo/snapshot.go new file mode 100644 index 0000000..74818ad --- /dev/null +++ b/pkg/infrastructure/vo/snapshot.go @@ -0,0 +1,364 @@ +package vo + +import "time" + +type Snashot struct { + Name string `json:"name"` + Type string `json:"type"` + Location string `json:"location"` + Compress string `json:"compress"` + MaxRestoreBytesPerSec string `json:"max_restore_bytes_per_sec"` + MaxSnapshotBytesPerSec string `json:"max_snapshot_bytes_per_sec"` + ChunkSize string `json:"chunk_size"` + Readonly string `json:"readonly"` +} + +type SnapshotRepository struct { + Type string `json:"type"` + Settings SnapshotRepositorySettings `json:"settings"` +} + +type SnapshotRepositorySettings struct { + Location string `json:"location"` + MaxRestoreBytesPerSec string `json:"max_restore_bytes_per_sec"` + Readonly string `json:"readonly"` + Compress string `json:"compress"` + MaxSnapshotBytesPerSec string `json:"max_snapshot_bytes_per_sec"` +} + +type Snapshot struct { + Id string `json:"id"` + Status string `json:"status"` + StartEpoch string `json:"start_epoch"` + StartTime string `json:"start_time"` + EndEpoch string `json:"end_epoch"` + EndTime string `json:"end_time"` + Duration string `json:"duration"` + Indices string `json:"indices"` + SuccessfulShards string `json:"successful_shards"` + FailedShards string `json:"failed_shards"` + TotalShards string `json:"total_shards"` +} + +type SnapshotDetail struct { + Snapshots []struct { + Snapshot string `json:"snapshot"` + Uuid string `json:"uuid"` + VersionId int `json:"version_id"` + Version string `json:"version"` + Indices []string `json:"indices"` + IncludeGlobalState bool `json:"include_global_state"` + State string `json:"state"` + StartTime time.Time `json:"start_time"` + StartTimeInMillis int64 `json:"start_time_in_millis"` + EndTime time.Time `json:"end_time"` + EndTimeInMillis int64 `json:"end_time_in_millis"` + DurationInMillis int `json:"duration_in_millis"` + Failures []interface{} `json:"failures"` + Shards struct { + Total int `json:"total"` + Failed int `json:"failed"` + Successful int `json:"successful"` + } `json:"shards"` + } `json:"snapshots"` +} + +type SnapshotStatus struct { + Snapshots []struct { + Snapshot string `json:"snapshot"` + Repository string `json:"repository"` + Uuid string `json:"uuid"` + State string `json:"state"` + IncludeGlobalState bool `json:"include_global_state"` + ShardsStats struct { + Initializing int `json:"initializing"` + Started int `json:"started"` + Finalizing int `json:"finalizing"` + Done int `json:"done"` + Failed int `json:"failed"` + Total int `json:"total"` + } `json:"shards_stats"` + Stats struct { + Incremental struct { + FileCount int `json:"file_count"` + SizeInBytes int `json:"size_in_bytes"` + } `json:"incremental"` + Total struct { + FileCount int `json:"file_count"` + SizeInBytes int `json:"size_in_bytes"` + } `json:"total"` + StartTimeInMillis int64 `json:"start_time_in_millis"` + TimeInMillis int `json:"time_in_millis"` + NumberOfFiles int `json:"number_of_files"` + ProcessedFiles int `json:"processed_files"` + TotalSizeInBytes int `json:"total_size_in_bytes"` + ProcessedSizeInBytes int `json:"processed_size_in_bytes"` + } `json:"stats"` + Indices struct { + Test2 struct { + ShardsStats struct { + Initializing int `json:"initializing"` + Started int `json:"started"` + Finalizing int `json:"finalizing"` + Done int `json:"done"` + Failed int `json:"failed"` + Total int `json:"total"` + } `json:"shards_stats"` + Stats struct { + Incremental struct { + FileCount int `json:"file_count"` + SizeInBytes int `json:"size_in_bytes"` + } `json:"incremental"` + Total struct { + FileCount int `json:"file_count"` + SizeInBytes int `json:"size_in_bytes"` + } `json:"total"` + StartTimeInMillis int64 `json:"start_time_in_millis"` + TimeInMillis int `json:"time_in_millis"` + NumberOfFiles int `json:"number_of_files"` + ProcessedFiles int `json:"processed_files"` + TotalSizeInBytes int `json:"total_size_in_bytes"` + ProcessedSizeInBytes int `json:"processed_size_in_bytes"` + } `json:"stats"` + Shards struct { + Field1 struct { + Stage string `json:"stage"` + Stats struct { + Incremental struct { + FileCount int `json:"file_count"` + SizeInBytes int `json:"size_in_bytes"` + } `json:"incremental"` + Total struct { + FileCount int `json:"file_count"` + SizeInBytes int `json:"size_in_bytes"` + } `json:"total"` + StartTimeInMillis int64 `json:"start_time_in_millis"` + TimeInMillis int `json:"time_in_millis"` + NumberOfFiles int `json:"number_of_files"` + ProcessedFiles int `json:"processed_files"` + TotalSizeInBytes int `json:"total_size_in_bytes"` + ProcessedSizeInBytes int `json:"processed_size_in_bytes"` + } `json:"stats"` + } `json:"0"` + } `json:"shards"` + } `json:"test2"` + Tt2 struct { + ShardsStats struct { + Initializing int `json:"initializing"` + Started int `json:"started"` + Finalizing int `json:"finalizing"` + Done int `json:"done"` + Failed int `json:"failed"` + Total int `json:"total"` + } `json:"shards_stats"` + Stats struct { + Incremental struct { + FileCount int `json:"file_count"` + SizeInBytes int `json:"size_in_bytes"` + } `json:"incremental"` + Total struct { + FileCount int `json:"file_count"` + SizeInBytes int `json:"size_in_bytes"` + } `json:"total"` + StartTimeInMillis int64 `json:"start_time_in_millis"` + TimeInMillis int `json:"time_in_millis"` + NumberOfFiles int `json:"number_of_files"` + ProcessedFiles int `json:"processed_files"` + TotalSizeInBytes int `json:"total_size_in_bytes"` + ProcessedSizeInBytes int `json:"processed_size_in_bytes"` + } `json:"stats"` + Shards struct { + Field1 struct { + Stage string `json:"stage"` + Stats struct { + Incremental struct { + FileCount int `json:"file_count"` + SizeInBytes int `json:"size_in_bytes"` + } `json:"incremental"` + Total struct { + FileCount int `json:"file_count"` + SizeInBytes int `json:"size_in_bytes"` + } `json:"total"` + StartTimeInMillis int64 `json:"start_time_in_millis"` + TimeInMillis int `json:"time_in_millis"` + NumberOfFiles int `json:"number_of_files"` + ProcessedFiles int `json:"processed_files"` + TotalSizeInBytes int `json:"total_size_in_bytes"` + ProcessedSizeInBytes int `json:"processed_size_in_bytes"` + } `json:"stats"` + } `json:"0"` + } `json:"shards"` + } `json:"tt2"` + Ttt struct { + ShardsStats struct { + Initializing int `json:"initializing"` + Started int `json:"started"` + Finalizing int `json:"finalizing"` + Done int `json:"done"` + Failed int `json:"failed"` + Total int `json:"total"` + } `json:"shards_stats"` + Stats struct { + Incremental struct { + FileCount int `json:"file_count"` + SizeInBytes int `json:"size_in_bytes"` + } `json:"incremental"` + Total struct { + FileCount int `json:"file_count"` + SizeInBytes int `json:"size_in_bytes"` + } `json:"total"` + StartTimeInMillis int64 `json:"start_time_in_millis"` + TimeInMillis int `json:"time_in_millis"` + NumberOfFiles int `json:"number_of_files"` + ProcessedFiles int `json:"processed_files"` + TotalSizeInBytes int `json:"total_size_in_bytes"` + ProcessedSizeInBytes int `json:"processed_size_in_bytes"` + } `json:"stats"` + Shards struct { + Field1 struct { + Stage string `json:"stage"` + Stats struct { + Incremental struct { + FileCount int `json:"file_count"` + SizeInBytes int `json:"size_in_bytes"` + } `json:"incremental"` + Total struct { + FileCount int `json:"file_count"` + SizeInBytes int `json:"size_in_bytes"` + } `json:"total"` + StartTimeInMillis int64 `json:"start_time_in_millis"` + TimeInMillis int `json:"time_in_millis"` + NumberOfFiles int `json:"number_of_files"` + ProcessedFiles int `json:"processed_files"` + TotalSizeInBytes int `json:"total_size_in_bytes"` + ProcessedSizeInBytes int `json:"processed_size_in_bytes"` + } `json:"stats"` + } `json:"0"` + } `json:"shards"` + } `json:"ttt"` + Articles struct { + ShardsStats struct { + Initializing int `json:"initializing"` + Started int `json:"started"` + Finalizing int `json:"finalizing"` + Done int `json:"done"` + Failed int `json:"failed"` + Total int `json:"total"` + } `json:"shards_stats"` + Stats struct { + Incremental struct { + FileCount int `json:"file_count"` + SizeInBytes int `json:"size_in_bytes"` + } `json:"incremental"` + Total struct { + FileCount int `json:"file_count"` + SizeInBytes int `json:"size_in_bytes"` + } `json:"total"` + StartTimeInMillis int64 `json:"start_time_in_millis"` + TimeInMillis int `json:"time_in_millis"` + NumberOfFiles int `json:"number_of_files"` + ProcessedFiles int `json:"processed_files"` + TotalSizeInBytes int `json:"total_size_in_bytes"` + ProcessedSizeInBytes int `json:"processed_size_in_bytes"` + } `json:"stats"` + Shards struct { + Field1 struct { + Stage string `json:"stage"` + Stats struct { + Incremental struct { + FileCount int `json:"file_count"` + SizeInBytes int `json:"size_in_bytes"` + } `json:"incremental"` + Total struct { + FileCount int `json:"file_count"` + SizeInBytes int `json:"size_in_bytes"` + } `json:"total"` + StartTimeInMillis int64 `json:"start_time_in_millis"` + TimeInMillis int `json:"time_in_millis"` + NumberOfFiles int `json:"number_of_files"` + ProcessedFiles int `json:"processed_files"` + TotalSizeInBytes int `json:"total_size_in_bytes"` + ProcessedSizeInBytes int `json:"processed_size_in_bytes"` + } `json:"stats"` + } `json:"0"` + Field2 struct { + Stage string `json:"stage"` + Stats struct { + Incremental struct { + FileCount int `json:"file_count"` + SizeInBytes int `json:"size_in_bytes"` + } `json:"incremental"` + Total struct { + FileCount int `json:"file_count"` + SizeInBytes int `json:"size_in_bytes"` + } `json:"total"` + StartTimeInMillis int64 `json:"start_time_in_millis"` + TimeInMillis int `json:"time_in_millis"` + NumberOfFiles int `json:"number_of_files"` + ProcessedFiles int `json:"processed_files"` + TotalSizeInBytes int `json:"total_size_in_bytes"` + ProcessedSizeInBytes int `json:"processed_size_in_bytes"` + } `json:"stats"` + } `json:"1"` + Field3 struct { + Stage string `json:"stage"` + Stats struct { + Incremental struct { + FileCount int `json:"file_count"` + SizeInBytes int `json:"size_in_bytes"` + } `json:"incremental"` + Total struct { + FileCount int `json:"file_count"` + SizeInBytes int `json:"size_in_bytes"` + } `json:"total"` + StartTimeInMillis int64 `json:"start_time_in_millis"` + TimeInMillis int `json:"time_in_millis"` + NumberOfFiles int `json:"number_of_files"` + ProcessedFiles int `json:"processed_files"` + TotalSizeInBytes int `json:"total_size_in_bytes"` + ProcessedSizeInBytes int `json:"processed_size_in_bytes"` + } `json:"stats"` + } `json:"2"` + Field4 struct { + Stage string `json:"stage"` + Stats struct { + Incremental struct { + FileCount int `json:"file_count"` + SizeInBytes int `json:"size_in_bytes"` + } `json:"incremental"` + Total struct { + FileCount int `json:"file_count"` + SizeInBytes int `json:"size_in_bytes"` + } `json:"total"` + StartTimeInMillis int64 `json:"start_time_in_millis"` + TimeInMillis int `json:"time_in_millis"` + NumberOfFiles int `json:"number_of_files"` + ProcessedFiles int `json:"processed_files"` + TotalSizeInBytes int `json:"total_size_in_bytes"` + ProcessedSizeInBytes int `json:"processed_size_in_bytes"` + } `json:"stats"` + } `json:"3"` + Field5 struct { + Stage string `json:"stage"` + Stats struct { + Incremental struct { + FileCount int `json:"file_count"` + SizeInBytes int `json:"size_in_bytes"` + } `json:"incremental"` + Total struct { + FileCount int `json:"file_count"` + SizeInBytes int `json:"size_in_bytes"` + } `json:"total"` + StartTimeInMillis int64 `json:"start_time_in_millis"` + TimeInMillis int `json:"time_in_millis"` + NumberOfFiles int `json:"number_of_files"` + ProcessedFiles int `json:"processed_files"` + TotalSizeInBytes int `json:"total_size_in_bytes"` + ProcessedSizeInBytes int `json:"processed_size_in_bytes"` + } `json:"stats"` + } `json:"4"` + } `json:"shards"` + } `json:"articles"` + } `json:"indices"` + } `json:"snapshots"` +} diff --git a/pkg/infrastructure/vo/sql2dsl.go b/pkg/infrastructure/vo/sql2dsl.go new file mode 100644 index 0000000..c125979 --- /dev/null +++ b/pkg/infrastructure/vo/sql2dsl.go @@ -0,0 +1,6 @@ +package vo + +type SqlToDsl struct { + Dsl string `json:"dsl"` + TableName string `json:"tableName"` +} diff --git a/pkg/infrastructure/vo/task_info.go b/pkg/infrastructure/vo/task_info.go new file mode 100644 index 0000000..b411f2e --- /dev/null +++ b/pkg/infrastructure/vo/task_info.go @@ -0,0 +1,36 @@ +package vo + +type TaskInfo struct { + Node string `json:"node"` + Id int64 `json:"id"` // the task id (yes, this is a long in the Java source) + Type string `json:"type"` + Action string `json:"action"` + Status interface{} `json:"status"` // has separate implementations of Task.Status in Java for reindexing, replication, and "RawTaskStatus" + Description interface{} `json:"description"` // same as Status + StartTime string `json:"start_time"` + StartTimeInMillis int64 `json:"start_time_in_millis"` + RunningTime string `json:"running_time"` + RunningTimeInNanos int64 `json:"running_time_in_nanos"` + Cancellable bool `json:"cancellable"` + ParentTaskId string `json:"parent_task_id"` // like "YxJnVYjwSBm_AUbzddTajQ:12356" + Headers map[string]string `json:"headers"` +} + +type Tasks struct { + Nodes map[string]TaskNode `json:"nodes"` +} + +type TaskNode struct { + Name string `json:"name"` + TransportAddress string `json:"transport_address"` + Host string `json:"host"` + Ip string `json:"ip"` + Roles []string `json:"roles"` + Attributes struct { + MlMachineMemory string `json:"ml.machine_memory"` + XpackInstalled string `json:"xpack.installed"` + MlMaxOpenJobs string `json:"ml.max_open_jobs"` + MlEnabled string `json:"ml.enabled"` + } `json:"attributes"` + Tasks map[string]TaskInfo `json:"tasks"` +} diff --git a/pkg/infrastructure/vo/url_config.go b/pkg/infrastructure/vo/url_config.go new file mode 100644 index 0000000..0e414d4 --- /dev/null +++ b/pkg/infrastructure/vo/url_config.go @@ -0,0 +1,6 @@ +package vo + +type RouterConfig struct { + Url string `json:"url"` + Remark string `json:"remark"` +} diff --git a/pkg/infrastructure/vo/user.go b/pkg/infrastructure/vo/user.go new file mode 100644 index 0000000..2b35ab5 --- /dev/null +++ b/pkg/infrastructure/vo/user.go @@ -0,0 +1,24 @@ +package vo + +import "time" + +type User struct { + Token string `json:"token"` + UnixTime int64 `json:"unix_time"` +} + +type GmUsers struct { + Id int `json:"id"` + Username string `json:"username"` + Password string `json:"password"` + + Avatar string `json:"avatar"` + IsBan int32 `json:"is_ban"` + Realname string `json:"realname"` + Email string `json:"email"` + WorkWechatUid string `json:"work_wechat_uid"` + RoleIds []int `json:"role_ids"` + UpdateTime time.Time `json:"update_time"` + CreateTime time.Time `json:"create_time"` + LastLoginTime time.Time `json:"last_login_time"` +} diff --git a/pkg/infrastructure/vo/user_info.go b/pkg/infrastructure/vo/user_info.go new file mode 100644 index 0000000..05fc03d --- /dev/null +++ b/pkg/infrastructure/vo/user_info.go @@ -0,0 +1,10 @@ +package vo + +type UserInfoV2 struct { + UserId int `json:"userId"` + Username string `json:"username"` + Nickname string `json:"nickname"` + Avatar string `json:"avatar"` + Roles []string `json:"roles"` + Perms []string `json:"perms"` +} diff --git a/pkg/infrastructure/vo/ws.go b/pkg/infrastructure/vo/ws.go new file mode 100644 index 0000000..ddff392 --- /dev/null +++ b/pkg/infrastructure/vo/ws.go @@ -0,0 +1,3 @@ +package vo + +type S2C_PONG struct{} diff --git a/pkg/infrastructure/web_engine/web_engine.go b/pkg/infrastructure/web_engine/web_engine.go new file mode 100644 index 0000000..d5daf40 --- /dev/null +++ b/pkg/infrastructure/web_engine/web_engine.go @@ -0,0 +1,251 @@ +package web_engine + +import ( + "github.com/gin-gonic/gin" + "net/http" + "path" + "sync" +) + +func init() { + mockMap = NewMockMap() +} + +var mockMap *MockMap //RouterConfig +var authenticationPaths []string + +type RouterConfigGroup struct { + GroupRemark string `json:"label"` + RouterConfigs []RouterConfig `json:"options"` +} + +type RouterConfig struct { + Url string `json:"value"` + Remark string `json:"label"` + NeedAuth bool `json:"needAuth"` +} + +type WebEngine struct { + g *gin.Engine +} + +func NewWebEngine() *WebEngine { + gin.SetMode(gin.ReleaseMode) + return &WebEngine{g: gin.Default()} +} + +func (this *WebEngine) GetGinEngine() *gin.Engine { + return this.g +} + +func (this *WebEngine) Run() { + this.g.Run() +} + +func (this *WebEngine) Group(remark string, relativePath string, handlers ...gin.HandlerFunc) *MyRouterGroup { + rg := this.g.Group(relativePath, handlers...) + return NewMyRouterGroup(rg, relativePath, remark) +} + +func (this *WebEngine) GetAuthenticationPaths() []string { + return authenticationPaths +} + +func (this *WebEngine) GetRouterConfigGroups() []RouterConfigGroup { + routerConfigGroups := []RouterConfigGroup{} + + mockMap.Range(func(key string, val []RouterConfig) { + routerConfigGroups = append(routerConfigGroups, RouterConfigGroup{ + GroupRemark: key, + RouterConfigs: val, + }) + }) + + return routerConfigGroups +} + +type MyRouterGroup struct { + rg *gin.RouterGroup + groupRelativePath string + groupTag string + routerConfigs []RouterConfig +} + +func NewMyRouterGroup(rg *gin.RouterGroup, relativePath, remark string) *MyRouterGroup { + return &MyRouterGroup{ + rg: rg, + groupTag: remark, + groupRelativePath: relativePath, + } +} + +func (this *MyRouterGroup) Use(middleware ...gin.HandlerFunc) *MyRouterGroup { + this.rg.Handlers = append(this.rg.Handlers, middleware...) + return this +} + +func (this *MyRouterGroup) Group(remark, relativePath string, handlers ...gin.HandlerFunc) *MyRouterGroup { + rg := this.rg.Group(relativePath, handlers...) + return NewMyRouterGroup(rg, relativePath, remark) +} + +func (this *MyRouterGroup) BasePath() string { + return this.rg.BasePath() +} + +func (this *MyRouterGroup) Handle(needAuth bool, httpMethod, remark, relativePath string, handlers ...gin.HandlerFunc) gin.IRoutes { + this.saveMockMap(remark, relativePath, needAuth) + return this.rg.Handle(httpMethod, relativePath, handlers...) +} + +func (this *MyRouterGroup) POST(needAuth bool, remark, relativePath string, handlers ...gin.HandlerFunc) gin.IRoutes { + this.saveMockMap(remark, relativePath, needAuth) + return this.rg.POST(relativePath, handlers...) +} + +func (this *MyRouterGroup) GET(needAuth bool, remark, relativePath string, handlers ...gin.HandlerFunc) gin.IRoutes { + this.saveMockMap(remark, relativePath, needAuth) + return this.rg.GET(relativePath, handlers...) +} + +func (this *MyRouterGroup) DELETE(needAuth bool, remark, relativePath string, handlers ...gin.HandlerFunc) gin.IRoutes { + this.saveMockMap(remark, relativePath, needAuth) + return this.rg.DELETE(relativePath, handlers...) +} + +func (this *MyRouterGroup) PATCH(needAuth bool, remark, relativePath string, handlers ...gin.HandlerFunc) gin.IRoutes { + this.saveMockMap(remark, relativePath, needAuth) + return this.rg.PATCH(relativePath, handlers...) +} + +func (this *MyRouterGroup) PUT(needAuth bool, remark, relativePath string, handlers ...gin.HandlerFunc) gin.IRoutes { + this.saveMockMap(remark, relativePath, needAuth) + return this.rg.PUT(relativePath, handlers...) +} + +func (this *MyRouterGroup) OPTIONS(needAuth bool, remark, relativePath string, handlers ...gin.HandlerFunc) gin.IRoutes { + this.saveMockMap(remark, relativePath, needAuth) + return this.rg.OPTIONS(relativePath, handlers...) +} + +func (this *MyRouterGroup) HEAD(needAuth bool, remark, relativePath string, handlers ...gin.HandlerFunc) gin.IRoutes { + this.saveMockMap(remark, relativePath, needAuth) + return this.rg.HEAD(relativePath, handlers...) +} + +func (this *MyRouterGroup) Any(needAuth bool, remark, relativePath string, handlers ...gin.HandlerFunc) gin.IRoutes { + this.saveMockMap(remark, relativePath, needAuth) + return this.rg.Any(relativePath, handlers...) +} + +func (this *MyRouterGroup) StaticFile(relativePath, filepath string) gin.IRoutes { + return this.rg.StaticFile(relativePath, filepath) +} + +func (this *MyRouterGroup) Static(relativePath, root string) gin.IRoutes { + return this.rg.Static(relativePath, root) +} + +func (this *MyRouterGroup) StaticFS(relativePath string, fs http.FileSystem) gin.IRoutes { + return this.rg.StaticFS(relativePath, fs) +} + +func (this *MyRouterGroup) joinPaths(absolutePath, relativePath string) string { + if relativePath == "" { + return absolutePath + } + + finalPath := path.Join(absolutePath, relativePath) + appendSlash := this.lastChar(relativePath) == '/' && this.lastChar(finalPath) != '/' + if appendSlash { + return finalPath + "/" + } + return finalPath +} + +func (this *MyRouterGroup) lastChar(str string) uint8 { + if str == "" { + panic("路由匹配符不能为空") + } + return str[len(str)-1] +} + +func (this *MyRouterGroup) saveMockMap(remark, relativePath string, needAuth bool) { + path := this.joinPaths(this.groupRelativePath, relativePath) + authenticationPaths = append(authenticationPaths, path) + + mockMap.Store(this.groupTag, RouterConfig{ + Url: path, + Remark: remark, + NeedAuth: needAuth, + }) +} + +type MockMap struct { + keys []string + values [][]RouterConfig + m map[string][]RouterConfig + lock *sync.RWMutex +} + +func NewMockMap() *MockMap { + return &MockMap{ + keys: []string{}, + values: [][]RouterConfig{}, + m: map[string][]RouterConfig{}, + lock: new(sync.RWMutex), + } +} + +func (this *MockMap) Store(data string, val RouterConfig) *MockMap { + this.lock.Lock() + defer this.lock.Unlock() + if _, ok := this.m[data]; ok { + i := 0 + for index, v := range this.keys { + if v == data { + i = index + break + } + } + this.values[i] = append(this.values[i], val) + this.m[data] = this.values[i] + return this + } + this.keys = append(this.keys, data) + value := []RouterConfig{val} + this.values = append(this.values, value) + this.m[data] = value + return this +} + +func (this *MockMap) Load(key string) ([]RouterConfig, bool) { + this.lock.RLock() + defer this.lock.RUnlock() + v, ok := this.m[key] + return v, ok +} + +func (this *MockMap) Count() int { + this.lock.RLock() + defer this.lock.RUnlock() + if this.m == nil { + return 0 + } + return len(this.m) +} + +func (this *MockMap) Keys() []string { + return this.keys +} + +func (this *MockMap) Values() [][]RouterConfig { + return this.values +} + +func (this *MockMap) Range(fn func(key string, val []RouterConfig)) { + for _, k := range this.keys { + v, _ := this.Load(k) + fn(k, v) + } +} diff --git a/pkg/registry/registry.go b/pkg/registry/registry.go new file mode 100644 index 0000000..fac3fc9 --- /dev/null +++ b/pkg/registry/registry.go @@ -0,0 +1,31 @@ +package registry + +import ( + "context" +) + +type BackgroundServiceRegistry interface { + GetServices() []BackgroundService +} + +type CanBeDisabled interface { + // IsDisabled should return a bool saying if it can be started or not. + IsDisabled() bool +} + +type BackgroundService interface { + Run(ctx context.Context) error +} + +type UsageStatsProvidersRegistry interface { + GetServices() []ProvidesUsageStats +} + +type ProvidesUsageStats interface { + GetUsageStats(ctx context.Context) map[string]interface{} +} + +func IsDisabled(srv BackgroundService) bool { + canBeDisabled, ok := srv.(CanBeDisabled) + return ok && canBeDisabled.IsDisabled() +} diff --git a/pkg/server/backgroundsvcs/background_services.go b/pkg/server/backgroundsvcs/background_services.go new file mode 100644 index 0000000..82c7e1c --- /dev/null +++ b/pkg/server/backgroundsvcs/background_services.go @@ -0,0 +1,42 @@ +package backgroundsvcs + +import ( + "github.com/1340691923/ElasticView/pkg/infrastructure/plugin_rpc" + "github.com/1340691923/ElasticView/pkg/infrastructure/pluginstore" + "github.com/1340691923/ElasticView/pkg/registry" + "github.com/1340691923/ElasticView/pkg/services/eve_service" + "github.com/1340691923/ElasticView/pkg/services/updatechecker" + "github.com/1340691923/ElasticView/pkg/web" +) + +func ProvideBackgroundServiceRegistry( + httpServer *web.WebServer, + evUpdate *updatechecker.EvUpdate, + pluginsUpdate *updatechecker.PluginsService, + pluginStoreService *pluginstore.PluginStoreService, + pluginRpcServer *plugin_rpc.PluginRpcServer, + eveService *eve_service.EvEService, + +) *BackgroundServiceRegistry { + return NewBackgroundServiceRegistry( + httpServer, + pluginStoreService, + pluginRpcServer, + evUpdate, + pluginsUpdate, + eveService, + ) +} + +// BackgroundServiceRegistry provides background services. +type BackgroundServiceRegistry struct { + Services []registry.BackgroundService +} + +func NewBackgroundServiceRegistry(services ...registry.BackgroundService) *BackgroundServiceRegistry { + return &BackgroundServiceRegistry{services} +} + +func (r *BackgroundServiceRegistry) GetServices() []registry.BackgroundService { + return r.Services +} diff --git a/pkg/server/generate.go b/pkg/server/generate.go new file mode 100644 index 0000000..83fd423 --- /dev/null +++ b/pkg/server/generate.go @@ -0,0 +1,3 @@ +package server + +//go:generate wire diff --git a/pkg/server/server.go b/pkg/server/server.go new file mode 100644 index 0000000..6230312 --- /dev/null +++ b/pkg/server/server.go @@ -0,0 +1,176 @@ +package server + +import ( + "context" + "fmt" + "github.com/1340691923/ElasticView/docs" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore/migrator" + "github.com/1340691923/ElasticView/pkg/registry" + "github.com/1340691923/ElasticView/pkg/services/es_link_service" + "github.com/1340691923/ElasticView/pkg/services/eve_service" + "github.com/1340691923/ElasticView/pkg/services/gm_user" + "github.com/pkg/errors" + "go.uber.org/zap" + "golang.org/x/sync/errgroup" + "reflect" + "strings" + "sync" +) + +type Server struct { + cfg *config.Config + orm *sqlstore.SqlStore + migrator *migrator.Migrator + logger *logger.AppLogger + shutdownOnce sync.Once + context context.Context + shutdownFn context.CancelFunc + childRoutines *errgroup.Group + isInitialized bool + mtx sync.Mutex + backgroundServices []registry.BackgroundService + esLinkService *es_link_service.EsLinkService + eveService *eve_service.EvEService + gmUserService *gm_user.GmUserService +} + +func NewServer( + cfg *config.Config, + migrator *migrator.Migrator, + logger *logger.AppLogger, + orm *sqlstore.SqlStore, + backgroundServiceProvider registry.BackgroundServiceRegistry, + esLinkService *es_link_service.EsLinkService, + eveService *eve_service.EvEService, + gmUserService *gm_user.GmUserService, +) *Server { + rootCtx, shutdownFn := context.WithCancel(context.Background()) + childRoutines, childCtx := errgroup.WithContext(rootCtx) + svr := &Server{ + migrator: migrator, + cfg: cfg, + logger: logger, + shutdownFn: shutdownFn, + context: childCtx, + childRoutines: childRoutines, + orm: orm, + backgroundServices: backgroundServiceProvider.GetServices(), + esLinkService: esLinkService, + eveService: eveService, + gmUserService: gmUserService, + } + return svr +} + +func (this *Server) Init() (err error) { + return nil +} + +func (this *Server) InitSwagger() { + docs.SwaggerInfo.Version = config.Version + docs.SwaggerInfo.Host = strings.TrimPrefix(strings.TrimPrefix(this.cfg.RootUrl, "http://"), "https://") + if strings.HasPrefix(this.cfg.RootUrl, "https://") { + docs.SwaggerInfo.Schemes = []string{"https"} + } + if strings.HasPrefix(this.cfg.RootUrl, "http://") { + docs.SwaggerInfo.Schemes = []string{"http"} + } +} + +func (this *Server) RunMigrator() (err error) { + + err = this.migrator.Start() + + if err != nil { + err = errors.WithMessage(err, "migrator初始化失败") + return + } + + this.logger.Info("migrator初始化成功") + return +} + +func (this *Server) Run(exitFn ...func(svr *Server) error) (err error) { + + services := this.backgroundServices + + err = this.eveService.FlushAccessToken(this.context) + if err != nil { + return errors.WithStack(err) + } + + for _, svc := range services { + if registry.IsDisabled(svc) { + continue + } + + service := svc + serviceName := reflect.TypeOf(service).String() + this.childRoutines.Go(func() error { + select { + case <-this.context.Done(): + return this.context.Err() + default: + } + this.logger.Info("开启后台服务", zap.String("服务名", serviceName)) + err = service.Run(this.context) + + if err != nil && !errors.Is(err, context.Canceled) { + this.logger.Error("停止后台服务异常", zap.String("服务名", serviceName), zap.Error(err)) + return fmt.Errorf("%s run error: %w", serviceName, err) + } + + this.logger.Info("后台服务已停止", zap.String("服务名", serviceName), zap.Error(err)) + return nil + }) + } + + this.logger.Info("等待后台服务启动中...") + err = this.childRoutines.Wait() + if err != nil { + return errors.Wrap(err, "后台服务停止异常") + } + + for _, fn := range exitFn { + err = fn(this) + if err != nil { + return err + } + } + + return err +} + +func (this *Server) Shutdown(ctx context.Context) (err error) { + this.shutdownOnce.Do(func() { + this.logger.Info("开始停止进程") + this.shutdownFn() + select { + + case <-ctx.Done(): + this.logger.Warn("关闭服务超时") + err = fmt.Errorf("关闭服务超时") + } + + }) + return +} + +func (this *Server) GetLogger() *logger.AppLogger { + return this.logger +} + +func (this *Server) CloseLog() error { + this.logger.Sync() + return nil +} + +func (this *Server) ResetAdminPwd(pwd string) error { + if pwd == "" { + return errors.New("密码不能为空") + } + return this.gmUserService.UpdatePassById(context.Background(), 1, pwd) +} diff --git a/pkg/server/wire.go b/pkg/server/wire.go new file mode 100644 index 0000000..ea815cc --- /dev/null +++ b/pkg/server/wire.go @@ -0,0 +1,127 @@ +//go:build wireinject +// +build wireinject + +package server + +import ( + "github.com/1340691923/ElasticView/pkg/api" + "github.com/1340691923/ElasticView/pkg/infrastructure/access_control" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/dao" + "github.com/1340691923/ElasticView/pkg/infrastructure/eve_api" + "github.com/1340691923/ElasticView/pkg/infrastructure/jwt_svr" + log2 "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/middleware" + "github.com/1340691923/ElasticView/pkg/infrastructure/plugin_rpc" + "github.com/1340691923/ElasticView/pkg/infrastructure/plugins/manager" + "github.com/1340691923/ElasticView/pkg/infrastructure/plugins/manager/process" + "github.com/1340691923/ElasticView/pkg/infrastructure/pluginstore" + "github.com/1340691923/ElasticView/pkg/infrastructure/request" + "github.com/1340691923/ElasticView/pkg/infrastructure/response" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore/migrator" + "github.com/1340691923/ElasticView/pkg/infrastructure/web_engine" + "github.com/1340691923/ElasticView/pkg/registry" + "github.com/1340691923/ElasticView/pkg/server/backgroundsvcs" + "github.com/1340691923/ElasticView/pkg/services/cache_service" + "github.com/1340691923/ElasticView/pkg/services/es" + "github.com/1340691923/ElasticView/pkg/services/es_link_service" + "github.com/1340691923/ElasticView/pkg/services/es_service" + "github.com/1340691923/ElasticView/pkg/services/eve_service" + "github.com/1340691923/ElasticView/pkg/services/gm_operater_log" + "github.com/1340691923/ElasticView/pkg/services/gm_role" + "github.com/1340691923/ElasticView/pkg/services/gm_user" + "github.com/1340691923/ElasticView/pkg/services/oauth" + "github.com/1340691923/ElasticView/pkg/services/plugin_install_service" + "github.com/1340691923/ElasticView/pkg/services/plugin_service" + "github.com/1340691923/ElasticView/pkg/services/updatechecker" + "github.com/1340691923/ElasticView/pkg/services/ws_service" + "github.com/1340691923/ElasticView/pkg/web" + + "github.com/google/wire" +) + +var wireSet = wire.NewSet( + + wire.Bind(new(registry.BackgroundServiceRegistry), new(*backgroundsvcs.BackgroundServiceRegistry)), + + oauth.ProvideOAuthServiceRegistry, + oauth.NewWorkWechat, + + plugin_install_service.ProvideInstaller, + wire.Bind(new(manager.Service), new(*manager.PluginManager)), + api.NewPluginController, + process.ProvideService, + migrator.NewMigrator, + config.InitConfig, + manager.NewPluginManager, + pluginstore.NewPluginStoreService, + eve_api.NewEvApi, + eve_service.NewEvEService, + dao.NewEvBackDao, + log2.InitLog, + dao.NewEslinkCfgV2Dao, + dao.NewGmRoleDao, + dao.NewGmUserDao, + dao.NewEsLinkV2Dao, + dao.NewGmRoleEslinkCfgV2Dao, + dao.NewEslinkRoleCfgReletion, + dao.NewGmOperaterLogDao, + updatechecker.ProvidePluginsService, + sqlstore.NewSqlStore, + cache_service.NewEsCache, + request.NewRequest, + response.NewResponse, + api.NewBaseController, + ws_service.NewWsService, + api.NewIndexController, + updatechecker.ProvideEvUpdate, + api.NewPluginUtilController, + plugin_service.NewPluginService, + api.NewEsController, + api.NewEsLinkController, + api.NewWsController, + ws_service.NewHeartController, + es.NewEsClientService, + es_link_service.NewEsLinkService, + es_service.NewEsService, + api.NewGmOperaterController, + gm_operater_log.NewGmOperaterLogService, + api.NewManagerRoleController, + gm_role.NewGmRoleService, + api.NewManagerUserController, + gm_user.NewGmUserService, + jwt_svr.NewJwt, + middleware.NewMiddleWareService, + backgroundsvcs.ProvideBackgroundServiceRegistry, + access_control.NewRbac, + web_engine.NewWebEngine, + web.NewWebServer, + plugin_rpc.NewPluginRpcServer, + NewServer, +) + +func Initialize(args *config.CommandLineArgs) (*Server, error) { + wire.Build(wireSet) + return &Server{}, nil +} + +func InitializeOrm(args *config.CommandLineArgs) (*sqlstore.SqlStore, error) { + wire.Build(wireSet) + return &sqlstore.SqlStore{}, nil +} + +func InitializeEvApiDao(args *config.CommandLineArgs) (*dao.EvBackDao, error) { + wire.Build(wireSet) + return &dao.EvBackDao{}, nil +} + +func InitializeGmRoleEslinkCfgV2Dao(args *config.CommandLineArgs) (*dao.GmRoleEslinkCfgV2Dao, error) { + wire.Build(wireSet) + return &dao.GmRoleEslinkCfgV2Dao{}, nil +} + +func InitializeProvideInstaller(args *config.CommandLineArgs) (*plugin_install_service.PluginInstaller, error) { + wire.Build(wireSet) + return &plugin_install_service.PluginInstaller{}, nil +} diff --git a/pkg/server/wire_gen.go b/pkg/server/wire_gen.go new file mode 100644 index 0000000..950de2c --- /dev/null +++ b/pkg/server/wire_gen.go @@ -0,0 +1,192 @@ +// Code generated by Wire. DO NOT EDIT. + +//go:generate go run github.com/google/wire/cmd/wire +//go:build !wireinject +// +build !wireinject + +package server + +import ( + "github.com/1340691923/ElasticView/pkg/api" + "github.com/1340691923/ElasticView/pkg/infrastructure/access_control" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/dao" + "github.com/1340691923/ElasticView/pkg/infrastructure/eve_api" + "github.com/1340691923/ElasticView/pkg/infrastructure/jwt_svr" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/middleware" + "github.com/1340691923/ElasticView/pkg/infrastructure/plugin_rpc" + "github.com/1340691923/ElasticView/pkg/infrastructure/plugins/manager" + "github.com/1340691923/ElasticView/pkg/infrastructure/plugins/manager/process" + "github.com/1340691923/ElasticView/pkg/infrastructure/pluginstore" + "github.com/1340691923/ElasticView/pkg/infrastructure/request" + "github.com/1340691923/ElasticView/pkg/infrastructure/response" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore/migrator" + "github.com/1340691923/ElasticView/pkg/infrastructure/web_engine" + "github.com/1340691923/ElasticView/pkg/registry" + "github.com/1340691923/ElasticView/pkg/server/backgroundsvcs" + "github.com/1340691923/ElasticView/pkg/services/cache_service" + "github.com/1340691923/ElasticView/pkg/services/es" + "github.com/1340691923/ElasticView/pkg/services/es_link_service" + "github.com/1340691923/ElasticView/pkg/services/es_service" + "github.com/1340691923/ElasticView/pkg/services/eve_service" + "github.com/1340691923/ElasticView/pkg/services/gm_operater_log" + "github.com/1340691923/ElasticView/pkg/services/gm_role" + "github.com/1340691923/ElasticView/pkg/services/gm_user" + "github.com/1340691923/ElasticView/pkg/services/oauth" + "github.com/1340691923/ElasticView/pkg/services/plugin_install_service" + "github.com/1340691923/ElasticView/pkg/services/plugin_service" + "github.com/1340691923/ElasticView/pkg/services/updatechecker" + "github.com/1340691923/ElasticView/pkg/services/ws_service" + "github.com/1340691923/ElasticView/pkg/web" + "github.com/google/wire" +) + +// Injectors from wire.go: + +func Initialize(args *config.CommandLineArgs) (*Server, error) { + configConfig, err := config.InitConfig(args) + if err != nil { + return nil, err + } + v, err := logger.InitLog(configConfig) + if err != nil { + return nil, err + } + sqlStore, err := sqlstore.NewSqlStore(configConfig, v) + if err != nil { + return nil, err + } + rbac, err := access_control.NewRbac(configConfig, v, sqlStore) + if err != nil { + return nil, err + } + migratorMigrator := migrator.NewMigrator(sqlStore, configConfig, v, rbac) + webEngine := web_engine.NewWebEngine() + jwt := jwt_svr.NewJwt(configConfig, v) + responseResponse := response.NewResponse(v) + gmUserDao := dao.NewGmUserDao(sqlStore) + gmRoleDao := dao.NewGmRoleDao(sqlStore) + pluginManager := manager.NewPluginManager() + workWechat := oauth.NewWorkWechat(configConfig) + oAuthServiceRegistry := oauth.ProvideOAuthServiceRegistry(workWechat) + gmUserService := gm_user.NewGmUserService(v, gmUserDao, gmRoleDao, jwt, pluginManager, configConfig, sqlStore, oAuthServiceRegistry) + middleWareService := middleware.NewMiddleWareService(configConfig, sqlStore, v, jwt, responseResponse, gmUserService, rbac, webEngine, pluginManager) + requestRequest := request.NewRequest() + baseController := api.NewBaseController(requestRequest, responseResponse) + gmOperaterLogService := gm_operater_log.NewGmOperaterLogService(v, sqlStore) + gmOperaterController := api.NewGmOperaterController(baseController, v, configConfig, gmOperaterLogService) + gmRoleService := gm_role.NewGmRoleService(v, gmRoleDao) + esCache := cache_service.NewEsCache() + esLinkV2Dao := dao.NewEsLinkV2Dao(sqlStore) + esClientService := es.NewEsClientService(configConfig, esCache, esLinkV2Dao, gmUserDao, sqlStore) + eslinkCfgV2Dao := dao.NewEslinkCfgV2Dao(sqlStore) + gmRoleEslinkCfgV2Dao := dao.NewGmRoleEslinkCfgV2Dao(sqlStore) + eslinkRoleCfgReletionDao := dao.NewEslinkRoleCfgReletion(sqlStore) + esLinkService := es_link_service.NewEsLinkService(sqlStore, v, esClientService, eslinkCfgV2Dao, gmRoleEslinkCfgV2Dao, eslinkRoleCfgReletionDao, gmUserDao, esLinkV2Dao) + managerRoleController := api.NewManagerRoleController(baseController, v, configConfig, jwt, gmRoleService, gmUserService, rbac, sqlStore, esLinkService) + esLinkController := api.NewEsLinkController(baseController, v, esClientService, sqlStore, esLinkService, jwt, esCache) + evEApi := eve_api.NewEvApi(configConfig, v) + evBackDao := dao.NewEvBackDao(v, evEApi) + evUpdate, err := updatechecker.ProvideEvUpdate(v, configConfig, evBackDao) + if err != nil { + return nil, err + } + managerUserController := api.NewManagerUserController(baseController, v, configConfig, sqlStore, jwt, gmUserService, webEngine, evUpdate, pluginManager) + esService := es_service.NewEsService(sqlStore) + esController := api.NewEsController(baseController, v, esClientService, esService, jwt, configConfig) + heartController := ws_service.NewHeartController() + wsService := ws_service.NewWsService(v, configConfig, sqlStore, jwt, heartController) + wsController := api.NewWsController(v, configConfig, sqlStore, jwt, wsService) + indexController := api.NewIndexController(configConfig) + service := process.ProvideService(v) + pluginService := plugin_service.NewPluginService(sqlStore, pluginManager, v, service, configConfig, rbac, gmUserDao, jwt, evBackDao) + pluginsService, err := updatechecker.ProvidePluginsService(v, configConfig, evBackDao, pluginManager) + if err != nil { + return nil, err + } + evEService := eve_service.NewEvEService(v, evBackDao, configConfig, pluginManager, pluginsService) + pluginStoreService := pluginstore.NewPluginStoreService(pluginManager, configConfig, service, v) + pluginInstaller := plugin_install_service.ProvideInstaller(configConfig, v, pluginManager, evBackDao, pluginStoreService, pluginsService) + pluginController := api.NewPluginController(baseController, v, sqlStore, pluginService, evEService, pluginInstaller) + webServer := web.NewWebServer(webEngine, v, configConfig, rbac, middleWareService, gmOperaterController, managerRoleController, esLinkController, managerUserController, esController, wsController, indexController, pluginController) + pluginUtilController := api.NewPluginUtilController(baseController, pluginService, esClientService, esService, v, configConfig) + pluginRpcServer := plugin_rpc.NewPluginRpcServer(v, configConfig, middleWareService, pluginUtilController) + backgroundServiceRegistry := backgroundsvcs.ProvideBackgroundServiceRegistry(webServer, evUpdate, pluginsService, pluginStoreService, pluginRpcServer, evEService) + server := NewServer(configConfig, migratorMigrator, v, sqlStore, backgroundServiceRegistry, esLinkService, evEService, gmUserService) + return server, nil +} + +func InitializeOrm(args *config.CommandLineArgs) (*sqlstore.SqlStore, error) { + configConfig, err := config.InitConfig(args) + if err != nil { + return nil, err + } + v, err := logger.InitLog(configConfig) + if err != nil { + return nil, err + } + sqlStore, err := sqlstore.NewSqlStore(configConfig, v) + if err != nil { + return nil, err + } + return sqlStore, nil +} + +func InitializeEvApiDao(args *config.CommandLineArgs) (*dao.EvBackDao, error) { + configConfig, err := config.InitConfig(args) + if err != nil { + return nil, err + } + v, err := logger.InitLog(configConfig) + if err != nil { + return nil, err + } + evEApi := eve_api.NewEvApi(configConfig, v) + evBackDao := dao.NewEvBackDao(v, evEApi) + return evBackDao, nil +} + +func InitializeGmRoleEslinkCfgV2Dao(args *config.CommandLineArgs) (*dao.GmRoleEslinkCfgV2Dao, error) { + configConfig, err := config.InitConfig(args) + if err != nil { + return nil, err + } + v, err := logger.InitLog(configConfig) + if err != nil { + return nil, err + } + sqlStore, err := sqlstore.NewSqlStore(configConfig, v) + if err != nil { + return nil, err + } + gmRoleEslinkCfgV2Dao := dao.NewGmRoleEslinkCfgV2Dao(sqlStore) + return gmRoleEslinkCfgV2Dao, nil +} + +func InitializeProvideInstaller(args *config.CommandLineArgs) (*plugin_install_service.PluginInstaller, error) { + configConfig, err := config.InitConfig(args) + if err != nil { + return nil, err + } + v, err := logger.InitLog(configConfig) + if err != nil { + return nil, err + } + pluginManager := manager.NewPluginManager() + evEApi := eve_api.NewEvApi(configConfig, v) + evBackDao := dao.NewEvBackDao(v, evEApi) + service := process.ProvideService(v) + pluginStoreService := pluginstore.NewPluginStoreService(pluginManager, configConfig, service, v) + pluginsService, err := updatechecker.ProvidePluginsService(v, configConfig, evBackDao, pluginManager) + if err != nil { + return nil, err + } + pluginInstaller := plugin_install_service.ProvideInstaller(configConfig, v, pluginManager, evBackDao, pluginStoreService, pluginsService) + return pluginInstaller, nil +} + +// wire.go: + +var wireSet = wire.NewSet(wire.Bind(new(registry.BackgroundServiceRegistry), new(*backgroundsvcs.BackgroundServiceRegistry)), oauth.ProvideOAuthServiceRegistry, oauth.NewWorkWechat, plugin_install_service.ProvideInstaller, wire.Bind(new(manager.Service), new(*manager.PluginManager)), api.NewPluginController, process.ProvideService, migrator.NewMigrator, config.InitConfig, manager.NewPluginManager, pluginstore.NewPluginStoreService, eve_api.NewEvApi, eve_service.NewEvEService, dao.NewEvBackDao, logger.InitLog, dao.NewEslinkCfgV2Dao, dao.NewGmRoleDao, dao.NewGmUserDao, dao.NewEsLinkV2Dao, dao.NewGmRoleEslinkCfgV2Dao, dao.NewEslinkRoleCfgReletion, dao.NewGmOperaterLogDao, updatechecker.ProvidePluginsService, sqlstore.NewSqlStore, cache_service.NewEsCache, request.NewRequest, response.NewResponse, api.NewBaseController, ws_service.NewWsService, api.NewIndexController, updatechecker.ProvideEvUpdate, api.NewPluginUtilController, plugin_service.NewPluginService, api.NewEsController, api.NewEsLinkController, api.NewWsController, ws_service.NewHeartController, es.NewEsClientService, es_link_service.NewEsLinkService, es_service.NewEsService, api.NewGmOperaterController, gm_operater_log.NewGmOperaterLogService, api.NewManagerRoleController, gm_role.NewGmRoleService, api.NewManagerUserController, gm_user.NewGmUserService, jwt_svr.NewJwt, middleware.NewMiddleWareService, backgroundsvcs.ProvideBackgroundServiceRegistry, access_control.NewRbac, web_engine.NewWebEngine, web.NewWebServer, plugin_rpc.NewPluginRpcServer, NewServer) diff --git a/pkg/services/cache_service/es_link_cache.go b/pkg/services/cache_service/es_link_cache.go new file mode 100644 index 0000000..a5496fc --- /dev/null +++ b/pkg/services/cache_service/es_link_cache.go @@ -0,0 +1,86 @@ +package cache_service + +import ( + "github.com/1340691923/ElasticView/pkg/infrastructure/model" + "github.com/1340691923/ElasticView/pkg/infrastructure/vo" + "sync" +) + +// Es连接缓存 +type EsCache struct { + esConnectMap *sync.Map + esLinkListMap *sync.Map + esConnectLock *sync.RWMutex + esLinkListLock *sync.RWMutex +} + +var ( + once sync.Once + esCache *EsCache +) + +// es +func NewEsCache() *EsCache { + once.Do(func() { + esCache = &EsCache{ + esConnectMap: new(sync.Map), + esLinkListMap: new(sync.Map), + esConnectLock: new(sync.RWMutex), + esLinkListLock: new(sync.RWMutex), + } + }) + return esCache +} + +// 新增一个es实例 +func (this *EsCache) Set(id int, esClient *model.EsConnect) { + this.esConnectLock.Lock() + this.esConnectMap.Store(id, esClient) + this.esConnectLock.Unlock() +} + +// 通过es连接表 的id获取一个保存在内存的id +func (this *EsCache) Get(id int) *model.EsConnect { + + this.esConnectLock.RLock() + defer this.esConnectLock.RUnlock() + if v, getConnect := this.esConnectMap.Load(id); getConnect { + return v.(*model.EsConnect) + } + return nil +} + +// 新增一个es实例 +func (this *EsCache) EsLinkSet(roleId string, opt []vo.EsLinkOpt) { + this.esLinkListLock.Lock() + this.esLinkListMap.Store(roleId, opt) + this.esLinkListLock.Unlock() +} + +func (this *EsCache) EsLinkGet(roleId string) (bool, []vo.EsLinkOpt) { + this.esLinkListLock.RLock() + defer this.esLinkListLock.RUnlock() + + v, isGetConnect := this.esLinkListMap.Load(roleId); + + if v == nil { + return isGetConnect, []vo.EsLinkOpt{} + } + + return isGetConnect, v.([]vo.EsLinkOpt) +} + +func (this *EsCache) Truncate() { + this.esConnectLock.Lock() + this.esConnectMap.Range(func(key, value interface{}) bool { + this.esConnectMap.Delete(key) + return true + }) + this.esConnectLock.Unlock() + this.esLinkListLock.Lock() + this.esLinkListMap.Range(func(key, value interface{}) bool { + this.esLinkListMap.Delete(key) + return true + }) + this.esLinkListLock.Unlock() +} diff --git a/pkg/services/es/es.go b/pkg/services/es/es.go new file mode 100644 index 0000000..3f543ec --- /dev/null +++ b/pkg/services/es/es.go @@ -0,0 +1,182 @@ +package es + +import ( + "context" + "encoding/base64" + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/dao" + "github.com/1340691923/ElasticView/pkg/infrastructure/es_sdk/pkg/cache" + "github.com/1340691923/ElasticView/pkg/infrastructure/model" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore" + "github.com/1340691923/ElasticView/pkg/infrastructure/vo" + "github.com/1340691923/ElasticView/pkg/services/cache_service" + "github.com/1340691923/ElasticView/pkg/util" + "github.com/goccy/go-json" + "github.com/pkg/errors" + "github.com/spf13/cast" + "log" + "sort" +) + +type EsClientService struct { + cfg *config.Config + esCache *cache_service.EsCache + esLinkV2Dao *dao.EsLinkV2Dao + gmUserDao *dao.GmUserDao + orm *sqlstore.SqlStore +} + +func NewEsClientService(cfg *config.Config, esCache *cache_service.EsCache, esLinkV2Dao *dao.EsLinkV2Dao, gmUserDao *dao.GmUserDao, orm *sqlstore.SqlStore) *EsClientService { + return &EsClientService{cfg: cfg, esCache: esCache, esLinkV2Dao: esLinkV2Dao, gmUserDao: gmUserDao, orm: orm} +} + +func (this *EsClientService) GetEsLinkOptions(ctx context.Context, roles []int) ([]vo.EsLinkOpt, error) { + + sort.Ints(roles) + + roleids, _ := json.Marshal(roles) + + isGetCache, optList := this.esCache.EsLinkGet(string(roleids)) + if isGetCache { + return optList, nil + } + + type Opt struct { + ID int64 `db:"id"` + Remark string `db:"remark"` + CfgRemark string `db:"cfg_remark"` + Version string `json:"version"` + } + var opt []Opt + err := this.orm.Raw(`select relation_id as id,cfg_remark,remark,version from + ( +select * from +(select es_link_id,role_cfg_id,id as relation_id from eslink_role_cfg_reletion ) + j1 +left join +( +select * from +(select id, user,pwd,rootpem ,certpem,keypem,remark as cfg_remark from eslink_cfg_v2 ) ecv +left join +(select role_id,es_link_cfg_id from gm_role_eslink_cfg_v2) grec +on ecv.id = grec.es_link_cfg_id +) j2 +on j1.role_cfg_id = j2.id +) +j1 +left join +( +select id,ip,remark,version from es_link_v2 elv +) j3 +on j1.es_link_id = j3.id +where role_id in (?) and remark is not null +`, roles).Scan(&opt).Error + if err != nil { + return nil, errors.WithStack(err) + } + + for _, v := range opt { + optList = append(optList, vo.EsLinkOpt{ + ID: v.ID, + Remark: fmt.Sprintf("%s(%s)", v.Remark, v.CfgRemark), + Version: v.Version, + }) + } + + this.esCache.EsLinkSet(string(roleids), optList) + + cache.CleanDataSourceCache(true) + + return optList, nil +} + +// 获取es配置信息 +func (this *EsClientService) GetEsClientByID(ctx context.Context, id int, userId int) (*model.EsConnect, error) { + var err error + + if id == 0 { + return nil, errors.New("请先选择连接") + } + + roleIds, err := this.gmUserDao.GetRolesFromUser(userId) + + if err != nil { + return nil, errors.WithStack(err) + } + + linkOptions, err := this.GetEsLinkOptions(ctx, roleIds) + + if err != nil { + return nil, errors.WithStack(err) + } + + isBanLink := true + + for _, link := range linkOptions { + if link.ID == int64(id) { + isBanLink = false + } + } + + if isBanLink { + return nil, errors.New("您已经被移除访问该连接的权限") + } + + esConnect := this.esCache.Get(id) + if esConnect != nil { + return esConnect, nil + } + + esConnectTmp, err := this.esLinkV2Dao.GetEsConnectDataByRoleId(ctx, roleIds, id) + + if util.FilterMysqlNilErr(err) { + return nil, err + } + + if esConnectTmp.Ip == "" { + return nil, errors.New("请先选择ES连接") + } + if esConnectTmp.Pwd != "" { + esConnectTmp.Pwd, err = this.EsPwdESBDecrypt(ctx, esConnectTmp.Pwd) + if err != nil { + return nil, err + } + } + header := []vo.HeaderKv{} + + json.Unmarshal([]byte(esConnectTmp.Header), &header) + + header = append(header, vo.HeaderKv{ + Key: "ev_user_id", + Value: cast.ToString(userId), + }) + b, _ := json.Marshal(header) + esConnectTmp.Header = string(b) + this.esCache.Set(id, esConnectTmp) + return esConnectTmp, nil +} + +func (this *EsClientService) EsPwdESBDecrypt(ctx context.Context, cryptedStr string) (string, error) { + + pwdByte, err := base64.StdEncoding.DecodeString(cryptedStr) + if err != nil { + log.Println(cryptedStr, this.cfg.EsPwdSecret, err) + return "", err + } + b, err := util.ECBDecrypt(pwdByte, this.cfg.EsPwdSecret) + if err != nil { + log.Println(cryptedStr, this.cfg.EsPwdSecret, pwdByte, err) + return "", err + } + return string(b), nil +} + +func (this *EsClientService) EsPwdESBEncrypt(ctx context.Context, pwd string) (string, error) { + b, err := util.ECBEncrypt(pwd, this.cfg.EsPwdSecret) + if err != nil { + return "", err + } + + return base64.StdEncoding.EncodeToString(b), nil +} diff --git a/pkg/services/es_link_service/es_link_service.go b/pkg/services/es_link_service/es_link_service.go new file mode 100644 index 0000000..b27e93f --- /dev/null +++ b/pkg/services/es_link_service/es_link_service.go @@ -0,0 +1,320 @@ +package es_link_service + +import ( + "context" + "github.com/1340691923/ElasticView/pkg/infrastructure/dao" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/model" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore" + "github.com/1340691923/ElasticView/pkg/infrastructure/vo" + "github.com/1340691923/ElasticView/pkg/services/es" + "github.com/1340691923/ElasticView/pkg/util" + "github.com/goccy/go-json" + "github.com/pkg/errors" + "github.com/spf13/cast" + "gorm.io/gorm" +) + +// EsLinkModel es连接信息表 +type EsLinkService struct { + orm *sqlstore.SqlStore + logger *logger.AppLogger + esClientService *es.EsClientService + eslinkCfgV2Dao *dao.EslinkCfgV2Dao + gmRoleEslinkCfgV2Dao *dao.GmRoleEslinkCfgV2Dao + eslinkRoleCfgReletionDao *dao.EslinkRoleCfgReletionDao + gmUserDao *dao.GmUserDao + esLinkV2Dao *dao.EsLinkV2Dao +} + +func NewEsLinkService(orm *sqlstore.SqlStore, logger *logger.AppLogger, esClientService *es.EsClientService, eslinkCfgV2Dao *dao.EslinkCfgV2Dao, gmRoleEslinkCfgV2Dao *dao.GmRoleEslinkCfgV2Dao, eslinkRoleCfgReletionDao *dao.EslinkRoleCfgReletionDao, gmUserDao *dao.GmUserDao, esLinkV2Dao *dao.EsLinkV2Dao) *EsLinkService { + return &EsLinkService{orm: orm, logger: logger, esClientService: esClientService, eslinkCfgV2Dao: eslinkCfgV2Dao, gmRoleEslinkCfgV2Dao: gmRoleEslinkCfgV2Dao, eslinkRoleCfgReletionDao: eslinkRoleCfgReletionDao, gmUserDao: gmUserDao, esLinkV2Dao: esLinkV2Dao} +} + +// 获取列表信息 +func (this *EsLinkService) GetListAction(ctx context.Context, userID int, roleID []int) (esLinkList []*vo.EsLink, err error) { + isAdmin := false + if util.InArr(roleID, 1) { + isAdmin = true + } + builder := this.orm.Model(model.EsLinkV2{}) + + if !isAdmin { + builder = builder.Where("create_by = ?", userID) + } + + var esLinks []model.EsLinkV2 + + err = builder.Scan(&esLinks).Error + if err != nil { + err = errors.WithStack(err) + return + } + + for _, esLink := range esLinks { + + userInfo, err := this.gmUserDao.GetUserById(ctx, esLink.CreateBy) + + if err != nil { + return nil, errors.WithStack(err) + } + + esLinkVo := &vo.EsLink{ + ID: int(esLink.Id), + Remark: esLink.Remark, + Ip: esLink.Ip, + Version: esLink.Version, + CreateById: esLink.CreateBy, + CreateByUserName: userInfo.Username, + Created: esLink.Created.Format(util.TimeFormat), + Updated: esLink.Updated.Format(util.TimeFormat), + EsLinkConfigs: nil, + } + + var esCfgs []model.EslinkCfgModelTmp + err = this.orm.Raw(`select relation_id,es_link_id,role_cfg_id,id,user,pwd,rootpem,certpem,keypem,remark,header from +(select es_link_id,role_cfg_id,id as relation_id from eslink_role_cfg_reletion ) j1 +left join +( +select id, user,pwd,rootpem ,certpem,keypem,remark,header from eslink_cfg_v2 +) j2 +on j1.role_cfg_id = j2.id +where es_link_id = ? `, esLink.Id).Scan(&esCfgs).Error + if err != nil { + return nil, errors.WithStack(err) + } + + for _, esCfg := range esCfgs { + if esCfg.Pwd != "" { + esCfg.Pwd, err = this.esClientService.EsPwdESBDecrypt(ctx, esCfg.Pwd) + if err != nil { + return nil, errors.WithStack(err) + } + } + + header := []vo.HeaderKv{} + if esCfg.Header == "" { + esCfg.Header = "[]" + } + err = json.Unmarshal([]byte(esCfg.Header), &header) + if err != nil { + return nil, errors.WithStack(err) + } + + esLinkConfig := &vo.EsLinkConfig{ + CfgRelationId: esCfg.RelationId, + Id: esCfg.ID, + Ip: esLink.Ip, + Version: esLink.Version, + EsLinkId: esCfg.EsLinkId, + User: esCfg.User, + Pwd: esCfg.Pwd, + Remark: esCfg.Remark, + Created: esCfg.Created.Format(util.TimeFormat), + Updated: esCfg.Updated.Format(util.TimeFormat), + RootPEM: esCfg.RootPEM, + CertPEM: esCfg.CertPEM, + KeyPEM: esCfg.KeyPEM, + Header: header, + } + sharedRoleIds := []string{} + type SharedRole struct { + RoleId int `db:"role_id"` + } + sharedRoles, err := this.gmRoleEslinkCfgV2Dao.GetRoleIdById(ctx, esLinkConfig.Id) + if err != nil { + return nil, errors.WithStack(err) + } + + for _, v := range sharedRoles { + sharedRoleIds = append(sharedRoleIds, cast.ToString(v)) + } + + esLinkConfig.ShareRoles = sharedRoleIds + esLinkVo.EsLinkConfigs = append(esLinkVo.EsLinkConfigs, esLinkConfig) + } + esLinkList = append(esLinkList, esLinkVo) + } + + return esLinkList, nil +} + +func (this *EsLinkService) GetEsCfgList(ctx context.Context, userId int) (res []*vo.EsLinkConfigV2, err error) { + var esCfgs []model.EslinkCfgV2 + esCfgs, err = this.eslinkCfgV2Dao.SelectByCreateBy(ctx, userId) + if err != nil { + return nil, errors.WithStack(err) + } + + for _, esCfg := range esCfgs { + if esCfg.Pwd != "" { + esCfg.Pwd, err = this.esClientService.EsPwdESBDecrypt(ctx, esCfg.Pwd) + if err != nil { + return nil, errors.WithStack(err) + } + } + + headerString := esCfg.Header + + if headerString == "" { + headerString = "[]" + } + header := []vo.HeaderKv{} + json.Unmarshal([]byte(headerString), &header) + + esLinkConfig := &vo.EsLinkConfigV2{ + Id: esCfg.Id, + User: esCfg.User, + Pwd: esCfg.Pwd, + Remark: esCfg.Remark, + Created: esCfg.Created.Format(util.TimeFormat), + Updated: esCfg.Updated.Format(util.TimeFormat), + RootPEM: cast.ToString(esCfg.Rootpem), + CertPEM: cast.ToString(esCfg.Certpem), + KeyPEM: cast.ToString(esCfg.Keypem), + Header: header, + } + sharedRoleIds := []string{} + + roles, err := this.gmRoleEslinkCfgV2Dao.GetRoleIdById(ctx, esCfg.Id) + + if err != nil { + return nil, errors.WithStack(err) + } + + for _, roleid := range roles { + sharedRoleIds = append(sharedRoleIds, cast.ToString(roleid)) + } + + esLinkConfig.ShareRoles = sharedRoleIds + + res = append(res, esLinkConfig) + } + return res, nil +} + +func (this *EsLinkService) GetEsCfgOpt(ctx context.Context, userId int) (res []*vo.EsLinkConfigOpt, err error) { + var esCfgs []model.EslinkCfgV2 + + esCfgs, err = this.eslinkCfgV2Dao.SelectByCreateBy(ctx, userId) + + if err != nil { + return nil, errors.WithStack(err) + } + + for _, esCfg := range esCfgs { + + esLinkConfig := &vo.EsLinkConfigOpt{ + Id: esCfg.Id, + Remark: esCfg.Remark, + } + + res = append(res, esLinkConfig) + } + + return res, nil +} + +func (this *EsLinkService) DeleteEsCfgRelation(ctx context.Context, tx *gorm.DB, relationId int) (err error) { + err = this.eslinkRoleCfgReletionDao.DeleteEsCfgRelation(ctx, tx, relationId) + if err != nil { + return errors.WithStack(err) + } + return nil +} + +func (this *EsLinkService) DeleteRoleEslinkCfgByRoleId(ctx context.Context, tx *gorm.DB, roleId int) (err error) { + + err = this.gmRoleEslinkCfgV2Dao.DeleteEslinkRoleCfgReletionByRoleID(ctx, tx, roleId) + if err != nil { + return errors.WithStack(err) + } + err = this.gmRoleEslinkCfgV2Dao.DeleteByRoleID(ctx, tx, roleId) + if err != nil { + return errors.WithStack(err) + } + return nil +} + +func (this *EsLinkService) DeleteRoleEslinkCfgByEsLinkCfgId(ctx context.Context, tx *gorm.DB, roleId int) (err error) { + return errors.WithStack(this.gmRoleEslinkCfgV2Dao.DeleteByEsLinkCfgId(ctx, tx, roleId)) +} + +func (this *EsLinkService) UpdateEsLinkCfgById(ctx context.Context, tx *gorm.DB, updateMap map[string]interface{}, id int) error { + return errors.WithStack(this.eslinkCfgV2Dao.UpdateById(ctx, tx, updateMap, id)) +} + +func (this *EsLinkService) DeleteEsCfgRelationByEsLinkId(ctx context.Context, tx *gorm.DB, eslinkId int) (err error) { + + return errors.WithStack(this.eslinkRoleCfgReletionDao.DeleteByEsLinkId(ctx, tx, eslinkId)) +} + +func (this *EsLinkService) DeleteById(ctx context.Context, tx *gorm.DB, id int) (err error) { + return errors.WithStack(this.esLinkV2Dao.Delete(ctx, tx, id)) +} + +func (this *EsLinkService) DeleteEsCfg(ctx context.Context, id int) (err error) { + tx := this.orm.Begin() + + err = tx.Where("id = ?", id).Delete(model.EslinkCfgV2{}).WithContext(ctx).Error + if err != nil { + tx.Rollback() + return errors.WithStack(err) + } + + err = tx.Where("es_link_cfg_id = ?", id).Delete(model.GmRoleEslinkCfgV2{}).WithContext(ctx).Error + if err != nil { + tx.Rollback() + return + } + + err = tx.Where("role_cfg_id = ?", id).Delete(model.EslinkRoleCfgReletion{}).WithContext(ctx).Error + if err != nil { + tx.Rollback() + return + } + tx.Commit() + + return + +} + +func (this *EsLinkService) SaveEsLink(ctx context.Context, tx *gorm.DB, data *model.EsLinkV2) (id int, err error) { + err = this.esLinkV2Dao.Save(ctx, tx, data) + if err != nil { + return 0, errors.WithStack(err) + } + return data.Id, nil +} + +func (this *EsLinkService) UpdateEsLink(ctx context.Context, tx *gorm.DB, data map[string]interface{}, id int) (err error) { + err = tx.Model(model.EsLinkV2{}).Where("id = ?", id).WithContext(ctx).Updates(data).Error + if err != nil { + return errors.WithStack(err) + } + return nil +} + +func (this *EsLinkService) SaveEsLinkCfgV2(ctx context.Context, data *model.EslinkCfgV2) (id int, err error) { + err = this.eslinkCfgV2Dao.Save(ctx, data) + if err != nil { + return 0, errors.WithStack(err) + } + return data.Id, nil +} + +func (this *EsLinkService) UpdateEslinkRoleCfgByEsLinkId(ctx context.Context, roleCfgId, esLinkID int) (err error) { + err = this.eslinkRoleCfgReletionDao.UpdateByEslLinkId(ctx, roleCfgId, esLinkID) + if err != nil { + return errors.WithStack(err) + } + return nil +} + +func (this *EsLinkService) SaveEslinkRoleCfgByEsLinkId(ctx context.Context, tx *gorm.DB, roleCfgId, esLinkID int) (err error) { + err = this.eslinkRoleCfgReletionDao.Save(ctx, tx, roleCfgId, esLinkID) + if err != nil { + return errors.WithStack(err) + } + return nil +} diff --git a/pkg/services/es_service/es_service.go b/pkg/services/es_service/es_service.go new file mode 100644 index 0000000..edfeded --- /dev/null +++ b/pkg/services/es_service/es_service.go @@ -0,0 +1,194 @@ +package es_service + +import ( + "bytes" + "context" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore" + "github.com/1340691923/ElasticView/pkg/infrastructure/vo" + "github.com/1340691923/eve-plugin-sdk-go/ev_api/pkg" + "github.com/1340691923/eve-plugin-sdk-go/ev_api/proto" + "github.com/goccy/go-json" + "github.com/pkg/errors" + "net/http" + "net/url" + "strings" +) + +type EsService struct { + orm *sqlstore.SqlStore +} + +func NewEsService(orm *sqlstore.SqlStore) *EsService { + return &EsService{orm: orm} +} + +func (this *EsService) Ping(ctx context.Context, esClient pkg.ClientInterface) (res *vo.PingResult, err error) { + + resp, err := esClient.Ping(ctx) + + if err != nil { + return + } + + if resp.StatusErr() != nil { + err = resp.StatusErr() + return + } + + res = new(vo.PingResult) + + err = json.Unmarshal(resp.ResByte(), res) + + if err != nil { + return + } + + return +} + +func (this *EsService) RunDsl( + ctx context.Context, + esI pkg.ClientInterface, + userID int, + method string, + path string, + body string, +) (res *proto.Response, err error) { + method = strings.ToUpper(method) + + u, err := url.Parse(path) + + if err != nil { + err = errors.WithStack(err) + return + } + + path = u.Path + query := u.Query() + query.Add("format", "json") + + var req *http.Request + + version, err := esI.EsVersion() + + if err != nil { + err = errors.WithStack(err) + return + } + + if version > 6 { + if len(path) > 0 { + if path[0:1] != "/" { + path = "/" + path + } + } + } + + if body == "" { + req, err = http.NewRequest(method, path+"?"+query.Encode(), nil) + } else { + req, err = http.NewRequest(method, path+"?"+query.Encode(), bytes.NewReader([]byte(body))) + } + + if err != nil { + err = errors.WithStack(err) + return + } + + res, err = esI.EsPerformRequest(ctx, req) + + if err != nil { + err = errors.WithStack(err) + return + } + + return +} + +func (this *EsService) EsIndexCount(ctx context.Context, esClient pkg.ClientInterface) (indexNameLen int, err error) { + catIndicesResponse, err := esClient.EsGetIndices(ctx, proto.CatIndicesRequest{ + Format: "json", + }) + if err != nil { + return + } + if catIndicesResponse.StatusErr() != nil { + err = catIndicesResponse.StatusErr() + return + } + var list []proto.CatIndex + err = json.Unmarshal(catIndicesResponse.ResByte(), &list) + if err != nil { + return + } + indexNameLen = len(list) + return +} + +func (this *EsService) CatHealth(ctx context.Context, esClient pkg.ClientInterface) (res *proto.Response, err error) { + res, err = esClient.EsCatHealth(ctx, proto.CatHealthRequest{ + Format: "json", + Human: true, + }) + return +} + +func (this *EsService) CatShards(ctx context.Context, esClient pkg.ClientInterface) (res *proto.Response, err error) { + res, err = esClient.EsCatShards(ctx, proto.CatShardsRequest{ + Format: "json", + Human: true, + }) + return +} + +func (this *EsService) CatCount(ctx context.Context, esClient pkg.ClientInterface) (res *proto.Response, err error) { + res, err = esClient.EsCatCount(ctx, proto.CatCountRequest{ + Format: "json", + Human: true, + }) + return +} + +func (this *EsService) CatAllocation(ctx context.Context, esClient pkg.ClientInterface) (res *proto.Response, err error) { + res, err = esClient.EsCatAllocationRequest(ctx, proto.CatAllocationRequest{ + Format: "json", + Human: true, + }) + return +} + +func (this *EsService) CatAliases(ctx context.Context, esClient pkg.ClientInterface) (res *proto.Response, err error) { + res, err = esClient.EsCatAliases(ctx, proto.CatAliasesRequest{ + Format: "json", + Human: true, + }) + return +} + +func (this *EsService) CatNodes(ctx context.Context, esClient pkg.ClientInterface) (res *proto.Response, err error) { + res, err = esClient.EsCatNodes(ctx, strings.Split("ip,name,heap.percent,heap.current,heap.max,ram.percent,ram.current,ram.max,node.role,master,cpu,load_1m,load_5m,load_15m,disk.used_percent,disk.used,disk.total", ",")) + return +} + +func (this *EsService) CatIndices(ctx context.Context, esClient pkg.ClientInterface, sort []string, indexBytesFormat string) (res *proto.Response, err error) { + + req := proto.CatIndicesRequest{} + req.S = sort + req.Human = true + req.Format = "json" + if indexBytesFormat != "" { + req.Bytes = indexBytesFormat + } + res, err = esClient.EsGetIndices(ctx, req) + return +} + +func (this *EsService) IndicesSegmentsRequest(ctx context.Context, esClient pkg.ClientInterface) (res *proto.Response, err error) { + res, err = esClient.EsIndicesSegmentsRequest(ctx, true) + return +} + +func (this *EsService) ClusterStats(ctx context.Context, esClient pkg.ClientInterface) (res *proto.Response, err error) { + res, err = esClient.EsClusterStats(ctx, true) + return +} diff --git a/pkg/services/eve_service/eve_service.go b/pkg/services/eve_service/eve_service.go new file mode 100644 index 0000000..98ee5ff --- /dev/null +++ b/pkg/services/eve_service/eve_service.go @@ -0,0 +1,127 @@ +package eve_service + +import ( + "context" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/dao" + "github.com/1340691923/ElasticView/pkg/infrastructure/eve_api/dto" + "github.com/1340691923/ElasticView/pkg/infrastructure/eve_api/vo" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/plugins/manager" + "github.com/1340691923/ElasticView/pkg/services/updatechecker" + "github.com/pkg/errors" + "time" +) + +type EvEService struct { + log *logger.AppLogger + evBackDao *dao.EvBackDao + cfg *config.Config + pluginStore manager.Service + pluginsService *updatechecker.PluginsService +} + +func NewEvEService(log *logger.AppLogger, evBackDao *dao.EvBackDao, cfg *config.Config, pluginStore manager.Service, pluginsService *updatechecker.PluginsService) *EvEService { + return &EvEService{log: log, evBackDao: evBackDao, cfg: cfg, pluginStore: pluginStore, pluginsService: pluginsService} +} + +func (this *EvEService) FlushAccessToken(ctx context.Context) (err error) { + + evKey := this.GetEvKey() + if evKey == "" { + return nil + } + _, err = this.evBackDao.GetEvAccessToken(ctx, evKey) + if err != nil { + return errors.WithStack(err) + } + return nil +} + +func (this *EvEService) GetRemotePlugins(ctx context.Context, req *dto.FromEvPluginReq) (*vo.PluginListRes, error) { + + ps := this.pluginStore.Plugins(ctx) + installPlugins := map[string]struct{}{} + installPluginArr := []string{} + for _, v := range ps { + installPlugins[v.PluginID()] = struct{}{} + installPluginArr = append(installPluginArr, v.PluginID()) + } + + if req.HasDownloadType != nil { + req.HasDownloadPlugins = installPluginArr + } + + pluginList, err := this.evBackDao.GetPluginList(ctx, req) + if err != nil { + return pluginList, errors.WithStack(err) + } + + for index := range pluginList.List { + if _, ok := installPlugins[pluginList.List[index].PluginAlias]; ok { + pluginList.List[index].HasDownload = true + } + if pluginList.List[index].StarState == nil { + unStar := 2 + pluginList.List[index].StarState = &unStar + } + } + + return pluginList, nil +} + +func (this *EvEService) GetRemotePluginInfo(ctx context.Context, req *dto.FormEvPluginInfoReq) (*vo.PublishRes, error) { + res, err := this.evBackDao.GetPluginInfo(ctx, req) + if err != nil { + return res, errors.WithStack(err) + } + return res, nil +} + +func (this *EvEService) GetWxArticleList(ctx context.Context) (*vo.WxArticleList, error) { + return this.evBackDao.GetWxArticleList(ctx) +} + +func (this *EvEService) GetLocalPlugins(ctx context.Context) ([]vo.GetLocalPlugin, error) { + ps := this.pluginStore.Plugins(ctx) + res := []vo.GetLocalPlugin{} + for _, v := range ps { + updateVersion, hasUpdate := this.pluginsService.HasUpdate(ctx, v.PluginID()) + res = append(res, vo.GetLocalPlugin{ + PluginID: v.PluginData().PluginJsonData.PluginAlias, + PluginName: v.PluginData().PluginJsonData.PluginName, + Version: v.Version(), + HasUpdate: hasUpdate, + UpdateVersion: updateVersion, + }) + } + return res, nil +} + +func (this *EvEService) Run(ctx context.Context) error { + var err error + ticker := time.NewTicker(time.Minute * 10) + run := true + + for run { + select { + case <-ticker.C: + err = this.FlushAccessToken(ctx) + if err != nil { + return errors.WithStack(err) + } + case <-ctx.Done(): + run = false + } + } + + return ctx.Err() +} + +func (this *EvEService) GetEvKey() string { + return this.cfg.EvKey +} + +func (this *EvEService) SaveEvKey(evKey string) error { + return this.cfg.SetEvKey(evKey).GetViperInstance().WriteConfig() +} diff --git a/pkg/services/gm_operater_log/gm_operater_log_service.go b/pkg/services/gm_operater_log/gm_operater_log_service.go new file mode 100644 index 0000000..2e8b1ea --- /dev/null +++ b/pkg/services/gm_operater_log/gm_operater_log_service.go @@ -0,0 +1,86 @@ +package gm_operater_log + +import ( + "context" + "github.com/1340691923/ElasticView/pkg/infrastructure/dto" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/model" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore" + "github.com/1340691923/ElasticView/pkg/infrastructure/vo" + "github.com/1340691923/ElasticView/pkg/util" + "go.uber.org/zap" +) + +type GmOperaterLogService struct { + log *logger.AppLogger + orm *sqlstore.SqlStore +} + +func NewGmOperaterLogService(log *logger.AppLogger, orm *sqlstore.SqlStore) *GmOperaterLogService { + return &GmOperaterLogService{log: log, orm: orm} +} + +func (this *GmOperaterLogService) List(ctx context.Context, reqData dto.GmOperaterLogList) (res []vo.GmOperaterLog, count int64, err error) { + + list := []model.GmOperaterLog{} + if reqData.Page <= 0 { + reqData.Page = 1 + } + if reqData.Limit <= 0 { + reqData.Limit = 10 + } + + page := reqData.Page + limit := reqData.Limit + + operater_action := reqData.OperaterAction + + gmOperaterModel := &model.GmOperaterLog{ + + OperaterId: reqData.UserId, + OperaterAction: operater_action, + } + + builder := this.orm.Model(gmOperaterModel) + + if reqData.UserId != 0 { + builder = builder.Where("operater_id = ?", reqData.UserId) + } + + if reqData.OperaterAction != "" { + builder = builder.Where("operater_action = ?", reqData.OperaterAction) + } + if len(reqData.Date) == 2 { + builder = builder.Where("created >= ?", reqData.Date[0]) + builder = builder.Where("created <= ?", reqData.Date[1]) + } + err = builder.Count(&count).Error + if err != nil { + return + } + + err = builder.Order("id desc").Limit(limit).Offset(sqlstore.CreatePage(page, limit)).Scan(&list).Error + if err != nil { + return + } + + for _, v := range list { + + body, err := util.GzipUnCompress(v.Body) + if err != nil { + this.log.Error("err", zap.Error(err)) + continue + } + res = append(res, vo.GmOperaterLog{ + Id: v.Id, + OperaterId: v.OperaterId, + OperaterName: v.OperaterName, + OperaterAction: v.OperaterAction, + Method: v.Method, + Body: body, + + Created: v.Created.Format(util.TimeFormat), + }) + } + return +} diff --git a/pkg/services/gm_role/gm_role_service.go b/pkg/services/gm_role/gm_role_service.go new file mode 100644 index 0000000..b05597d --- /dev/null +++ b/pkg/services/gm_role/gm_role_service.go @@ -0,0 +1,73 @@ +// GM角色层 +package gm_role + +import ( + "context" + "github.com/1340691923/ElasticView/pkg/infrastructure/dao" + "github.com/1340691923/ElasticView/pkg/infrastructure/dto" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/model" + "gorm.io/gorm" +) + +// GmRoleService +type GmRoleService struct { + log *logger.AppLogger + + roleDao *dao.GmRoleDao +} + +func NewGmRoleService(log *logger.AppLogger, roleDao *dao.GmRoleDao) *GmRoleService { + return &GmRoleService{log: log, roleDao: roleDao} +} + +func (this *GmRoleService) Select(ctx context.Context, isAdmin bool) (list []model.GmRole, err error) { + list, err = this.roleDao.Select(ctx, isAdmin) + if err != nil { + return + } + return +} + +func (this *GmRoleService) GetOptions(ctx context.Context) (list []model.GmRole, err error) { + list, err = this.roleDao.Select(ctx, true) + if err != nil { + return + } + return +} + +func (this *GmRoleService) Add(ctx context.Context, model2 model.GmRole) (id int64, err error) { + + id, err = this.roleDao.Insert(ctx, model.GmRole{ + RoleName: model2.RoleName, + Description: model2.Description, + RoleList: model2.RoleList, + }) + return +} + +func (this *GmRoleService) Update(ctx context.Context, model2 model.GmRole) (err error) { + err = this.roleDao.Update(ctx, model2) + return +} + +func (this *GmRoleService) Delete(ctx context.Context, orm *gorm.DB, id int) (err error) { + err = this.roleDao.Delete(ctx, orm, id) + return +} + +func (this *GmRoleService) GetRoles(ctx context.Context, roles []model.GmRole) (list []dto.GmRoleModel, err error) { + for _, v := range roles { + roleRes := dto.GmRoleModel{ + ID: int(v.Id), + RoleName: v.RoleName, + Description: v.Description, + RoleList: *v.RoleList, + } + + roleRes.Api = this.roleDao.GetApis(ctx, int(v.Id)) + list = append(list, roleRes) + } + return +} diff --git a/pkg/services/gm_user/exception.go b/pkg/services/gm_user/exception.go new file mode 100644 index 0000000..9e73a80 --- /dev/null +++ b/pkg/services/gm_user/exception.go @@ -0,0 +1,12 @@ +package gm_user + +// 自定义业务异常 +const ( + ERROR_AUTH_TOKEN = 40006 + ERROR_AUTH = 40007 +) + +var AUTH_ERROR = map[int]string{ + ERROR_AUTH_TOKEN: "Token生成失败", + ERROR_AUTH: "用户验证失败", +} diff --git a/pkg/services/gm_user/gm_user_service.go b/pkg/services/gm_user/gm_user_service.go new file mode 100644 index 0000000..2e7fdd5 --- /dev/null +++ b/pkg/services/gm_user/gm_user_service.go @@ -0,0 +1,574 @@ +// BI用户层 +package gm_user + +import ( + "context" + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/dao" + "github.com/1340691923/ElasticView/pkg/infrastructure/jwt_svr" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/model" + "github.com/1340691923/ElasticView/pkg/infrastructure/plugins/manager" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore" + "github.com/1340691923/ElasticView/pkg/infrastructure/vo" + "github.com/1340691923/ElasticView/pkg/services/oauth" + "github.com/1340691923/ElasticView/pkg/util" + "github.com/1340691923/eve-plugin-sdk-go/build" + "github.com/goccy/go-json" + "github.com/pkg/errors" + "github.com/spf13/cast" + "github.com/tidwall/gjson" + "go.uber.org/zap" + "gorm.io/gorm" + "time" +) + +// GmUserService +type GmUserService struct { + log *logger.AppLogger + gmUserDao *dao.GmUserDao + gmRoleDao *dao.GmRoleDao + jwt *jwt_svr.Jwt + pluginRegistry manager.Service + cfg *config.Config + orm *sqlstore.SqlStore + oAuthServiceRegistry *oauth.OAuthServiceRegistry +} + +func NewGmUserService(log *logger.AppLogger, gmUserDao *dao.GmUserDao, gmRoleDao *dao.GmRoleDao, jwt *jwt_svr.Jwt, pluginRegistry manager.Service, cfg *config.Config, orm *sqlstore.SqlStore, oAuthServiceRegistry *oauth.OAuthServiceRegistry) *GmUserService { + return &GmUserService{log: log, gmUserDao: gmUserDao, gmRoleDao: gmRoleDao, jwt: jwt, pluginRegistry: pluginRegistry, cfg: cfg, orm: orm, oAuthServiceRegistry: oAuthServiceRegistry} +} + +func (this *GmUserService) CheckLogin(ctx context.Context, username, password string) (token string, err error) { + + gmUser, err := this.gmUserDao.GetUserByUP(ctx, model.GmUserModel{ + Username: username, + Password: password, + }) + + if err != nil { + this.log.Error("登录失败", zap.Error(err)) + err = errors.New("用户验证失败") + return + } + + if gmUser.Id == 0 { + err = errors.New("用户验证失败") + return + } + + if gmUser.IsBan == 1 { + err = errors.New("用户已被封禁") + return + } + + token, err = this.jwt.CreateToken(gmUser) + if err != nil { + return + } + return +} + +func (this *GmUserService) CheckLoginByOAuth(ctx context.Context, code string, state string) (token string, err error) { + + application := gjson.Get(state, "application").String() + + svr, err := this.oAuthServiceRegistry.FindServiceByName(application) + if err != nil { + return "", errors.WithStack(err) + } + if !svr.Enable() { + return "", fmt.Errorf("已经关闭%s认证", svr.GetAppliactionName()) + } + + oAuthToken, err := svr.GetToken(code) + if err != nil { + return "", errors.WithStack(err) + } + ui, err := svr.GetUserInfo(oAuthToken) + + if err != nil { + return "", errors.WithStack(err) + } + this.log.Info("第三方登录接口返回", zap.Reflect("用户数据", ui)) + var gmUser model.GmUserModel + gmUser, err = this.gmUserDao.GetByField(svr.GetUserField(), ui.Id) + if err != nil { + return "", errors.WithStack(err) + } + if gmUser.Id == 0 { + gmUser, err = this.gmUserDao.GetByField("email", ui.Email) + if err != nil { + return "", errors.WithStack(err) + } + } + + if gmUser.Id == 0 { + gmUser = model.GmUserModel{ + Username: ui.Username, + Password: util.GetUUid(), + Avatar: ui.AvatarUrl, + Realname: ui.DisplayName, + Email: ui.Email, + WorkWechatUid: ui.Id, + UpdateTime: time.Now(), + CreateTime: time.Now(), + LastLoginTime: time.Now(), + } + tx := this.orm.Begin() + //开始插入数据 + userID, err := this.gmUserDao.Insert(ctx, tx, gmUser) + if err != nil { + tx.Rollback() + return "", errors.WithStack(err) + } + gmUser.Id = int(userID) + + err = this.gmUserDao.AddRolesToUser(tx, gmUser.Id, []int{2}) + if err != nil { + tx.Rollback() + return "", errors.WithStack(err) + } + tx.Commit() + + } + + if gmUser.IsBan == 1 { + return "", errors.New("用户已被封禁") + } + + token, err = this.jwt.CreateToken(gmUser) + if err != nil { + return + } + + return token, nil +} + +type QiankunMicroApp struct { + Name string `json:"name"` + Entry string `json:"entry"` + ActiveRule string `json:"activeRule"` +} + +func (this *GmUserService) GetRoleInfo(ctx context.Context, roleIds []int, baseRoutes []*Route) ( + roleMenu string, roleQiankunMicroApps []*QiankunMicroApp, err error) { + menus := [][]*Route{} + microApps := map[string]struct{}{} + + for _, roleId := range roleIds { + //todo... + gminfo, err := this.gmRoleDao.GetById(ctx, roleId) + if err != nil { + return "", nil, errors.WithStack(err) + } + if gminfo.RoleList != nil { + outputMenus, qiankunMicroApps := this.GetRoleList(ctx, *gminfo.RoleList) + menus = append(menus, outputMenus) + + for _, v := range qiankunMicroApps { + if _, ok := microApps[v.Name]; !ok { + roleQiankunMicroApps = append(roleQiankunMicroApps, v) + microApps[v.Name] = struct{}{} + } + } + } + } + + mergeMenuTree := this.mergeMenuTrees(menus...) + + mergeMenuTree = this.findIntersection(baseRoutes, mergeMenuTree) + + menusBytes, _ := json.Marshal(mergeMenuTree) + + roleMenu = string(menusBytes) + + return +} + +type Route struct { + Path string `json:"path"` + Name *string `json:"name,omitempty"` + Component *string `json:"component,omitempty"` + Redirect *string `json:"redirect,omitempty"` + AlwaysShow *bool `json:"alwaysShow,omitempty"` + Meta *RouteMeta `json:"meta,omitempty"` + Children Children `json:"children"` + Hidden *bool `json:"hidden,omitempty"` +} + +type RouteMeta struct { + Title string `json:"title"` + Icon string `json:"icon"` +} + +type Children []*Route + +func (i Children) MarshalJSON() ([]byte, error) { + if len(i) == 0 { + return json.Marshal([]interface{}{}) + } else { + var tempValue []*Route // 这里需要重新定义一个变量,再序列化,否则会造成循环调用 + for _, item := range i { + tempValue = append(tempValue, item) + } + return json.Marshal(tempValue) + } +} + +func addRoutes(destRoutes *Route, srcRoutes []*build.Route) { + for _, srcRoute := range srcRoutes { + destRoutes.Children = append(destRoutes.Children, &Route{ + Path: srcRoute.Path, + Name: util.StringPtr(srcRoute.Path), + Meta: &RouteMeta{ + Title: srcRoute.Meta.Title, + Icon: srcRoute.Meta.Icon, + }, + }) + if len(srcRoute.Children) > 0 { + addRoutes(destRoutes, srcRoute.Children) + } + } +} + +// 合并菜单路由 +func (this *GmUserService) mergeMenuTrees(menus ...[]*Route) []*Route { + menuMap := make(map[string]*Route) + + for _, menu := range menus { + for _, item := range menu { + this.mergeRoute(item, menuMap) + } + } + + merged := make([]*Route, 0, len(menuMap)) + for _, item := range menuMap { + merged = append(merged, item) + } + + return merged +} + +func (this *GmUserService) mergeRoute(item *Route, menuMap map[string]*Route) { + if existing, found := menuMap[cast.ToString(item.Path)]; found { + // 合并子菜单 + for _, child := range item.Children { + this.mergeChildRoute(child, existing) + } + } else { + // 创建新的菜单项 + newItem := &Route{ + Path: item.Path, + Name: item.Name, + Component: item.Component, + Meta: item.Meta, + Children: []*Route{}, + } + menuMap[cast.ToString(item.Path)] = newItem + + // 添加子菜单 + for _, child := range item.Children { + this.mergeChildRoute(child, newItem) + } + } +} + +func (this *GmUserService) mergeChildRoute(child *Route, parent *Route) { + if existingChild, found := parent.ChildrenMap()[cast.ToString(child.Path)]; found { + // 如果子菜单已存在,继续合并其子项 + for _, subChild := range child.Children { + this.mergeChildRoute(subChild, existingChild) + } + } else { + // 如果子菜单不存在,则直接添加 + parent.Children = append(parent.Children, child) + } +} + +func (m *Route) ChildrenMap() map[string]*Route { + childMap := make(map[string]*Route) + for i := range m.Children { + childMap[cast.ToString(m.Children[i].Path)] = m.Children[i] + } + return childMap +} + +var EvDefaultMenu = []string{"/connect-tree", "/permission", "/plugins"} + +func (this *GmUserService) GetRoleList(ctx context.Context, js string) (outputRoute []*Route, qiankunMicroApps []*QiankunMicroApp) { + var routes []*Route + json.Unmarshal([]byte(js), &routes) + pluginIds := []string{} + for _, plugin := range this.pluginRegistry.Plugins(ctx) { + pluginIds = append(pluginIds, fmt.Sprintf("/%s", plugin.PluginID())) + pluginJson := plugin.PluginData().PluginJsonData + frontendRoutes := pluginJson.FrontendRoutes + + if len(frontendRoutes) == 0 { + continue + } + entry := fmt.Sprintf("%sapi/call_plugin_views/%s/", this.cfg.RootUrl, plugin.ID) + + if pluginJson.FrontendDebug { + entry = fmt.Sprintf("http://localhost:%d/", pluginJson.FrontendDevPort) + } + + _, subUrl, err := this.cfg.ParseAppUrlAndSubUrl() + if err != nil { + subUrl = "" + } else { + subUrl = subUrl + "/" + } + + qiankunMicroApps = append(qiankunMicroApps, &QiankunMicroApp{ + Name: plugin.ID, + Entry: entry, + ActiveRule: fmt.Sprintf("%s#/%s", subUrl, plugin.ID), + }) + pluginRoutes := &Route{ + Path: fmt.Sprintf("/%s", plugin.ID), + Component: util.StringPtr("layout"), + Name: util.StringPtr(plugin.ID), + Meta: &RouteMeta{ + Title: pluginJson.PluginName, + Icon: "table", + }, + } + + addRoutes(pluginRoutes, frontendRoutes) + } + + for _, route := range routes { + //ev 默认菜单 + if util.InstrArr(EvDefaultMenu, route.Path) { + outputRoute = append(outputRoute, route) + } + // 插件主菜单 + if util.InstrArr(pluginIds, route.Path) { + outputRoute = append(outputRoute, route) + } + } + + return +} + +func (this *GmUserService) MergePluginRoutes(ctx context.Context, routes []*Route) []*Route { + for _, plugin := range this.pluginRegistry.Plugins(ctx) { + + pluginJson := plugin.PluginData().PluginJsonData + frontendRoutes := pluginJson.FrontendRoutes + + if len(frontendRoutes) == 0 { + continue + } + + pluginRoutes := &Route{ + Path: fmt.Sprintf("/%s", plugin.ID), + Component: util.StringPtr("layout"), + Name: util.StringPtr(plugin.ID), + Meta: &RouteMeta{ + Title: pluginJson.PluginName, + Icon: "table", + }, + } + + addRoutes(pluginRoutes, frontendRoutes) + + routes = append(routes, pluginRoutes) + } + return routes +} + +func (this *GmUserService) findIntersection(routesA, routesB []*Route) []*Route { + routeMap := make(map[string]*Route) + + // 将第二棵树的路径存储到映射中 + for _, routeB := range routesB { + routeMap[routeB.Path] = routeB + } + + var intersection []*Route + + // 遍历第一棵树,构建交集 + for _, routeA := range routesA { + + path := routeA.Path + + if len(routeA.Children) == 1 { + + childrenPath := routeA.Children[0].Path + + routeA.Children[0].Path = fmt.Sprintf("%s/%s", path, childrenPath) + } + + if routeB, exists := routeMap[path]; exists { + + newRoute := &Route{ + Path: routeA.Path, + Name: routeA.Name, + Component: routeA.Component, + Redirect: routeA.Redirect, + AlwaysShow: routeA.AlwaysShow, + Meta: routeA.Meta, + Hidden: routeA.Hidden, + } + + // 递归查找子节点的交集 + newRoute.Children = this.findIntersection(routeA.Children, routeB.Children) + intersection = append(intersection, newRoute) + } + } + + return intersection +} + +func (this *GmUserService) DeleteByRoleId(ctx context.Context, orm *gorm.DB, roleId int) (err error) { + err = this.gmUserDao.RemoveRoles(orm, roleId) + return +} + +func (this *GmUserService) IsExsitUser(ctx context.Context, claims *jwt_svr.Claims) (bool, error) { + //todo... + return this.gmUserDao.Exsit(ctx, model.GmUserModel{ + Username: cast.ToString(claims.Username), + //RoleId: cast.ToInt(claims.RoleId), + }) +} + +func (this *GmUserService) UpdatePassById(ctx context.Context, id int, pwd string) error { + return this.gmUserDao.UpdatePassById(ctx, model.GmUserModel{ + Id: id, + Password: pwd, + }) +} + +func (this *GmUserService) Select(ctx context.Context, isAdmin bool) (gmUserModel []model.GmUserModel, err error) { + return this.gmUserDao.Select(ctx, isAdmin) +} + +func (this *GmUserService) SealUser(ctx context.Context, id int, isBan bool) (err error) { + + sealUserType := dao.Ban + + if !isBan { + sealUserType = dao.UnBan + } + + if isBan && id == AdminRole { + return errors.New("不可对超管进行封禁操作") + } + + err = this.gmUserDao.SealUser(ctx, id, sealUserType) + if err != nil { + return errors.WithStack(err) + } + + return +} + +func (this *GmUserService) GetUserById(ctx context.Context, id int) (gmUserModel model.GmUserModel, err error) { + return this.gmUserDao.GetUserById(ctx, id) +} + +func (this *GmUserService) Update(ctx context.Context, gmUser model.GmUserModel, roleIds []int) (err error) { + err = this.gmUserDao.Update(ctx, gmUser) + if err != nil { + return errors.WithStack(err) + } + + err = this.gmUserDao.AddRolesToUser(this.orm.DB, gmUser.Id, roleIds) + if err != nil { + return errors.WithStack(err) + } + return +} + +// 谁起来了事务,则由谁回滚 +func (this *GmUserService) Insert(ctx context.Context, gmUser model.GmUserModel, roleIds []int) (id int64, err error) { + + orm := this.orm.Begin() + userId, err := this.gmUserDao.Insert(ctx, orm, gmUser) + if err != nil { + orm.Rollback() + return 0, errors.WithStack(err) + } + err = this.gmUserDao.AddRolesToUser(orm, int(userId), roleIds) + if err != nil { + orm.Rollback() + return 0, errors.WithStack(err) + } + orm.Commit() + + return userId, nil +} + +func (this *GmUserService) Delete(ctx context.Context, id int) (err error) { + tx := this.orm.Begin() + err = this.gmUserDao.RemoveUserRoles(tx, id) + if err != nil { + tx.Rollback() + return errors.WithStack(err) + } + + err = this.gmUserDao.Delete(ctx, tx, id) + if err != nil { + tx.Rollback() + return errors.WithStack(err) + } + + tx.Commit() + + return nil +} + +func (this *GmUserService) GetOAuthList(callback string) (cfgs []vo.OAuthConfig, err error) { + svrs := this.oAuthServiceRegistry.GetServices() + + authCallback := this.cfg.RootUrl + "api/callback" + + for _, v := range svrs { + + stateMap := map[string]interface{}{ + "application": v.GetAppliactionName(), + "login_callback": callback, + } + + cfgs = append(cfgs, vo.OAuthConfig{ + OauthUrl: v.GetOAuthUrl(authCallback, stateMap), + Name: v.GetAppliactionName(), + Enable: v.Enable(), + Img: v.GetImg(), + }) + } + return +} + +func (this *GmUserService) GetOAuthConfigs() (cfgs map[string]map[string]interface{}, err error) { + svrs := this.oAuthServiceRegistry.GetServices() + cfgs = map[string]map[string]interface{}{} + for _, v := range svrs { + cfgs[v.GetAppliactionName()] = v.GetConfig() + } + return +} + +func (this *GmUserService) SaveOAuthConfigs(applicationName string, data map[string]interface{}) (err error) { + svr, err := this.oAuthServiceRegistry.FindServiceByName(applicationName) + if err != nil { + return errors.WithStack(err) + } + svr.SetConfig(data) + return +} + +const AdminRole = 1 + +func (this *GmUserService) IsAdminUser(roleId []int) bool { + return util.InArr(roleId, AdminRole) +} + +func (this *GmUserService) GetRolesByUserID(userId int) ([]int, error) { + return this.gmUserDao.GetRolesFromUser(userId) +} diff --git a/pkg/services/oauth/idp.go b/pkg/services/oauth/idp.go new file mode 100644 index 0000000..cac8d40 --- /dev/null +++ b/pkg/services/oauth/idp.go @@ -0,0 +1,13 @@ +package oauth + +type UserInfo struct { + Id string + Username string + DisplayName string + UnionId string + Email string + Phone string + CountryCode string + AvatarUrl string + Extra map[string]string +} diff --git a/pkg/services/oauth/interfaces.go b/pkg/services/oauth/interfaces.go new file mode 100644 index 0000000..2bc84d2 --- /dev/null +++ b/pkg/services/oauth/interfaces.go @@ -0,0 +1,47 @@ +package oauth + +import ( + "github.com/pkg/errors" + "golang.org/x/oauth2" +) + +type OAuthInterface interface { + GetOAuthUrl(callback string, state map[string]interface{}) string + GetAppliactionName() string + GetToken(code string) (*oauth2.Token, error) + GetUserInfo(token *oauth2.Token) (*UserInfo, error) + Enable() bool + GetImg() string + GetUserField() string + GetConfig() map[string]interface{} + SetConfig(data map[string]interface{}) +} + +func ProvideOAuthServiceRegistry( + workWechat *WorkWechat, +) *OAuthServiceRegistry { + return NewOAuthServiceRegistry( + workWechat, + ) +} + +type OAuthServiceRegistry struct { + oAuthInterfaces []OAuthInterface +} + +func NewOAuthServiceRegistry(services ...OAuthInterface) *OAuthServiceRegistry { + return &OAuthServiceRegistry{services} +} + +func (this *OAuthServiceRegistry) GetServices() []OAuthInterface { + return this.oAuthInterfaces +} + +func (this *OAuthServiceRegistry) FindServiceByName(name string) (OAuthInterface, error) { + for _, v := range this.GetServices() { + if v.GetAppliactionName() == name { + return v, nil + } + } + return nil, errors.New("没有找到对应第三方登录信息") +} diff --git a/pkg/services/oauth/utils/util.go b/pkg/services/oauth/utils/util.go new file mode 100644 index 0000000..bcbbdf5 --- /dev/null +++ b/pkg/services/oauth/utils/util.go @@ -0,0 +1,7 @@ +package utils + +import "fmt" + +func GetCallbackUrl(domain string) string { + return fmt.Sprintf("%s%s", domain, "api/callback") +} diff --git a/pkg/services/oauth/work_wechat.go b/pkg/services/oauth/work_wechat.go new file mode 100644 index 0000000..e2bec8a --- /dev/null +++ b/pkg/services/oauth/work_wechat.go @@ -0,0 +1,224 @@ +package oauth + +import ( + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/util" + "github.com/goccy/go-json" + "github.com/pkg/errors" + "github.com/spf13/cast" + "golang.org/x/oauth2" + "time" +) + +type WorkWechat struct { + clientID string + clientSecret string + agentId string + enable bool + cfg *config.Config +} + +func NewWorkWechat(cfg *config.Config) *WorkWechat { + + return &WorkWechat{ + cfg: cfg, + clientID: cfg.OAuth.WorkWechat.Corpid, + clientSecret: cfg.OAuth.WorkWechat.Secert, + agentId: cfg.OAuth.WorkWechat.AgentId, + enable: cfg.OAuth.WorkWechat.Enable, + } +} + +func (this *WorkWechat) GetAppliactionName() string { + return "企业微信认证(内部应用)" +} + +func (this *WorkWechat) Enable() bool { + return this.enable +} + +func (this *WorkWechat) GetImg() string { + return "work_wechat" +} + +func (this *WorkWechat) GetOAuthUrl(callback string, state map[string]interface{}) string { + if state == nil { + state = map[string]interface{}{} + } + + js, _ := json.Marshal(state) + + stateString := string(js) + + return fmt.Sprintf("https://login.work.weixin.qq.com/wwlogin/sso/login/?"+ + "login_type=CorpApp"+ + "&appid=%s"+ + "&agentid=%s"+ + "&redirect_uri=%s"+ + "&state=%s", + this.clientID, + this.agentId, + callback, + stateString, + ) +} + +type WecomInterToken struct { + Errcode int `json:"errcode"` + Errmsg string `json:"errmsg"` + AccessToken string `json:"access_token"` + ExpiresIn int `json:"expires_in"` +} + +func (this *WorkWechat) MockGetToken(code string) (*oauth2.Token, error) { + raw := make(map[string]interface{}) + raw["code"] = code + token := &oauth2.Token{ + AccessToken: "123", + Expiry: time.Unix(time.Now().Unix()+int64(60), 0), + } + token = token.WithExtra(raw) + + return token, nil +} + +func (this *WorkWechat) GetToken(code string) (*oauth2.Token, error) { + + //return this.MockGetToken(code) + + pTokenParams := &struct { + CorpId string `json:"corpid"` + Corpsecret string `json:"corpsecret"` + }{this.clientID, this.clientSecret} + data, err := util.GetURL(fmt.Sprintf("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s", pTokenParams.CorpId, pTokenParams.Corpsecret)) + if err != nil { + return nil, errors.WithStack(err) + } + + pToken := &WecomInterToken{} + err = json.Unmarshal(data, pToken) + if err != nil { + return nil, errors.WithStack(err) + } + if pToken.Errcode != 0 { + return nil, errors.Errorf("pToken.Errcode = %d, pToken.Errmsg = %s", pToken.Errcode, pToken.Errmsg) + } + + token := &oauth2.Token{ + AccessToken: pToken.AccessToken, + Expiry: time.Unix(time.Now().Unix()+int64(pToken.ExpiresIn), 0), + } + + raw := make(map[string]interface{}) + raw["code"] = code + token = token.WithExtra(raw) + + return token, nil +} + +func (this *WorkWechat) GetUserField() string { + return "work_wechat_uid" +} + +type WecomInternalUserResp struct { + Errcode int `json:"errcode"` + Errmsg string `json:"errmsg"` + UserId string `json:"UserId"` + OpenId string `json:"OpenId"` +} + +type WecomInternalUserInfo struct { + Errcode int `json:"errcode"` + Errmsg string `json:"errmsg"` + Name string `json:"name"` + Email string `json:"email"` + Avatar string `json:"avatar"` + OpenId string `json:"open_userid"` + UserId string `json:"userid"` +} + +func (this *WorkWechat) MockGetUserInfo(token *oauth2.Token) (*UserInfo, error) { + userInfo := UserInfo{ + Id: "aaa", + Username: "xwl", + DisplayName: "xwl", + Email: "1340691923@qq.com", + AvatarUrl: "", + } + return &userInfo, nil +} + +func (this *WorkWechat) GetUserInfo(token *oauth2.Token) (*UserInfo, error) { + //return this.MockGetUserInfo(token) + accessToken := token.AccessToken + code := token.Extra("code").(string) + data, err := util.GetURL(fmt.Sprintf("https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=%s&code=%s", accessToken, code)) + if err != nil { + return nil, errors.WithStack(err) + } + + userResp := &WecomInternalUserResp{} + err = json.Unmarshal(data, userResp) + if err != nil { + return nil, errors.WithStack(err) + } + if userResp.Errcode != 0 { + return nil, errors.Errorf("userIdResp.Errcode = %d, userIdResp.Errmsg = %s", userResp.Errcode, userResp.Errmsg) + } + if userResp.OpenId != "" { + return nil, errors.Errorf("not an internal user") + } + // Use userid and accesstoken to get user information + data, err = util.GetURL(fmt.Sprintf("https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=%s&userid=%s", accessToken, userResp.UserId)) + if err != nil { + return nil, errors.WithStack(err) + } + + infoResp := &WecomInternalUserInfo{} + err = json.Unmarshal(data, infoResp) + if err != nil { + return nil, errors.WithStack(err) + } + + if infoResp.Errcode != 0 { + return nil, errors.Errorf("userInfoResp.errcode = %d, userInfoResp.errmsg = %s", infoResp.Errcode, infoResp.Errmsg) + } + + userInfo := UserInfo{ + Id: infoResp.UserId, + Username: infoResp.Name, + DisplayName: infoResp.Name, + Email: infoResp.Email, + AvatarUrl: infoResp.Avatar, + } + + if userInfo.Id == "" { + userInfo.Id = userInfo.Username + } + + return &userInfo, nil +} + +func (this *WorkWechat) GetConfig() map[string]interface{} { + return map[string]interface{}{ + "corpid": this.clientID, + "agentId": this.agentId, + "secert": this.clientSecret, + "enable": this.enable, + } +} + +func (this *WorkWechat) SetConfig(data map[string]interface{}) { + this.clientID = cast.ToString(data["corpid"]) + this.agentId = cast.ToString(data["agentId"]) + this.clientSecret = cast.ToString(data["secert"]) + this.enable = cast.ToBool(data["enable"]) + this.cfg. + SetWorkWechatAgentId(this.agentId). + SetWorkWechatCorpid(this.clientID). + SetWorkWechatSecert(this.clientSecret). + SetWorkWechatEnable(this.enable). + GetViperInstance(). + WriteConfig() +} diff --git a/pkg/services/plugin_install_service/plugin_install_service.go b/pkg/services/plugin_install_service/plugin_install_service.go new file mode 100644 index 0000000..fff5a48 --- /dev/null +++ b/pkg/services/plugin_install_service/plugin_install_service.go @@ -0,0 +1,164 @@ +package plugin_install_service + +import ( + "context" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/dao" + "github.com/1340691923/ElasticView/pkg/infrastructure/eve_api/dto" + "github.com/1340691923/ElasticView/pkg/infrastructure/eve_api/vo" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/plugins/manager" + "github.com/1340691923/ElasticView/pkg/infrastructure/plugins/plugin" + "github.com/1340691923/ElasticView/pkg/infrastructure/pluginstore" + "github.com/1340691923/ElasticView/pkg/services/updatechecker" + "github.com/1340691923/ElasticView/pkg/util" + "github.com/pkg/errors" + "os" + "path/filepath" + "runtime" + "sync" +) + +type PluginInstaller struct { + installing sync.Map + log *logger.AppLogger + cfg *config.Config + pluginStore manager.Service + evBackDao *dao.EvBackDao + pluginStoreService *pluginstore.PluginStoreService + pluginsService *updatechecker.PluginsService +} + +func ProvideInstaller(cfg *config.Config, log *logger.AppLogger, pluginStore manager.Service, + evBackDao *dao.EvBackDao, pluginStoreService *pluginstore.PluginStoreService, pluginsService *updatechecker.PluginsService) *PluginInstaller { + return New(log, cfg, pluginStore, evBackDao, pluginStoreService, pluginsService) +} + +func New(log *logger.AppLogger, cfg *config.Config, pluginStore manager.Service, + evBackDao *dao.EvBackDao, pluginStoreService *pluginstore.PluginStoreService, + pluginsService *updatechecker.PluginsService) *PluginInstaller { + return &PluginInstaller{ + installing: sync.Map{}, + log: log.Named("plugin.installer"), + cfg: cfg, + pluginStore: pluginStore, + evBackDao: evBackDao, + pluginStoreService: pluginStoreService, + pluginsService: pluginsService, + } +} + +func (m *PluginInstaller) Add(ctx context.Context, pluginID, version string) error { + if ok, _ := m.installing.Load(pluginID); ok != nil { + return nil + } + m.installing.Store(pluginID, true) + defer func() { + m.installing.Delete(pluginID) + }() + + err := m.install(ctx, pluginID, version) + if err != nil { + return err + } + m.pluginsService.InstrumentedCheckForUpdates(ctx) + + return nil +} + +func (m *PluginInstaller) install(ctx context.Context, pluginID, version string) (err error) { + + var pluginArchiveInfo *vo.GetPluginDownloadUrlRes + + if plugin, exists := m.plugin(ctx, pluginID, version); exists { + + if plugin.Version() == version { + return errors.New("已安装该插件版本") + } + + pluginArchiveInfo, err = m.evBackDao.GetPluginDownloadUrl(ctx, &dto.GetPluginDownloadUrlReq{ + PluginAlias: pluginID, + Version: version, + Os: runtime.GOOS, + Arch: runtime.GOARCH, + }) + if err != nil { + return err + } + + m.log.Sugar().Infof("开始删除之前安装的老版本插件") + err = m.Remove(ctx, plugin.ID, plugin.Version()) + if err != nil { + return err + } + + } else { + var err error + pluginArchiveInfo, err = m.evBackDao.GetPluginDownloadUrl(ctx, &dto.GetPluginDownloadUrlReq{ + PluginAlias: pluginID, + Version: version, + Os: runtime.GOOS, + Arch: runtime.GOARCH, + }) + if err != nil { + return errors.WithStack(err) + } + + } + m.log.Sugar().Infof("Installing plugin", "pluginId", pluginID, "version", version, pluginArchiveInfo.DownloadUrl) + + downloadPluginName, err := util.DownloadFile(pluginArchiveInfo.DownloadUrl, m.cfg.Plugin.LoadPath) + + if err != nil { + return errors.WithStack(err) + } + + /*crc32, err := util.FileCRC32(filepath.Join(m.cfg.Plugin.LoadPath, downloadPluginName)) + + if err != nil { + return errors.WithStack(err) + } + + if cast.ToString(crc32) != pluginArchiveInfo.DonwloadCrc { + m.log.Sugar().Errorf("crc文件完整性校验不通过", crc32, pluginArchiveInfo.DonwloadCrc) + os.Remove(filepath.Join(m.cfg.Plugin.LoadPath, downloadPluginName)) + return errors.New("crc文件完整性校验不通过") + }*/ + + err = m.pluginStoreService.FastInitPlugin(ctx, downloadPluginName) + + if err != nil { + return errors.WithStack(err) + } + + return nil +} + +// 卸载插件 +func (m *PluginInstaller) Remove(ctx context.Context, pluginID, version string) error { + plugin, exists := m.plugin(ctx, pluginID, version) + if !exists { + return errors.New("插件不存在") + } + pluginFilePath := plugin.GetPluginFileName() + err := m.pluginStoreService.FastShutdown(ctx, plugin) + + if err != nil { + return errors.WithStack(err) + } + + pluginFilePath = filepath.Join(m.cfg.Plugin.LoadPath, pluginFilePath) + + os.Remove(pluginFilePath) + + return err +} + +func (m *PluginInstaller) plugin(ctx context.Context, pluginID, pluginVersion string) (*plugin.Plugin, bool) { + p, exists := m.pluginStore.Plugin(ctx, pluginID) + if !exists { + return nil, false + } + + return p, true +} diff --git a/pkg/services/plugin_service/plugin_service.go b/pkg/services/plugin_service/plugin_service.go new file mode 100644 index 0000000..85721d3 --- /dev/null +++ b/pkg/services/plugin_service/plugin_service.go @@ -0,0 +1,234 @@ +package plugin_service + +import ( + "bytes" + "context" + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/access_control" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/dao" + "github.com/1340691923/ElasticView/pkg/infrastructure/eve_api/dto" + "github.com/1340691923/ElasticView/pkg/infrastructure/jwt_svr" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/model" + "github.com/1340691923/ElasticView/pkg/infrastructure/plugins" + "github.com/1340691923/ElasticView/pkg/infrastructure/plugins/backendplugin/provider" + "github.com/1340691923/ElasticView/pkg/infrastructure/plugins/manager" + "github.com/1340691923/ElasticView/pkg/infrastructure/plugins/manager/process" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore" + util2 "github.com/1340691923/ElasticView/pkg/util" + "github.com/1340691923/eve-plugin-sdk-go/util" + "github.com/gin-gonic/gin" + "github.com/pkg/errors" + "github.com/spf13/cast" + "go.uber.org/zap" + "io/ioutil" + "strconv" + "strings" + "time" +) + +type PluginService struct { + orm *sqlstore.SqlStore + pluginRegistry manager.Service + log *logger.AppLogger + progressSvr *process.Service + cfg *config.Config + rbac *access_control.Rbac + gmUserDao *dao.GmUserDao + jwtSvr *jwt_svr.Jwt + evBackDao *dao.EvBackDao +} + +func NewPluginService(orm *sqlstore.SqlStore, pluginRegistry manager.Service, log *logger.AppLogger, progressSvr *process.Service, cfg *config.Config, rbac *access_control.Rbac, gmUserDao *dao.GmUserDao, jwtSvr *jwt_svr.Jwt, evBackDao *dao.EvBackDao) *PluginService { + return &PluginService{orm: orm, pluginRegistry: pluginRegistry, log: log, progressSvr: progressSvr, cfg: cfg, rbac: rbac, gmUserDao: gmUserDao, jwtSvr: jwtSvr, evBackDao: evBackDao} +} + +func (this *PluginService) ExecSql(ctx context.Context, pluginID string, sql string, args []interface{}) (rowsAffected int64, err error) { + p, b := this.pluginRegistry.Plugin(ctx, pluginID) + if !b { + return 0, errors.New(fmt.Sprintf("没有找到该插件信息:%s", pluginID)) + } + p.DbLock() + defer p.DbUnlock() + result := p.Gorm().WithContext(ctx).Exec(sql, args...) + if result.Error != nil { + err = result.Error + return + } + rowsAffected = result.RowsAffected + return +} + +// todo... 表名鉴权 +func (this *PluginService) SelectSql(ctx context.Context, pluginID string, sql string, args []interface{}) (list []map[string]interface{}, err error) { + + p, b := this.pluginRegistry.Plugin(ctx, pluginID) + if !b { + return nil, errors.New(fmt.Sprintf("没有找到该插件信息:%s", pluginID)) + } + + err = p.Gorm().WithContext(ctx).Raw(sql, args...).Scan(&list).Error + + if err != nil { + return nil, err + } + + return +} + +func (this *PluginService) CallPlugin(ctx *gin.Context, pluginID string) (err error) { + plugin, b := this.pluginRegistry.Plugin(ctx, pluginID) + if !b { + return errors.New(fmt.Sprintf("没有找到该插件信息:%s", pluginID)) + } + c, err := this.jwtSvr.ParseToken(ctx.GetHeader("X-Token")) + if err != nil { + return errors.WithStack(err) + } + + pluginJsonData := plugin.PluginData().PluginJsonData + + roles, err := this.gmUserDao.GetRolesFromUser(c.UserID) + if err != nil { + return errors.WithStack(err) + } + + contentType := ctx.GetHeader("Content-Type") + + if strings.Contains(contentType, "application/json") { + var b []byte + b, _ = ctx.GetRawData() + + bodySize := len(b) + + // 判断大小,例如设置限制为1MB + const maxBodySize = 20 * 1024 * 1024 // 20MB + + ctx.Request.Body = ioutil.NopCloser(bytes.NewBuffer(b)) + gmOperaterLog := &model.GmOperaterLog{ + OperaterName: cast.ToString(c.Username), + OperaterId: cast.ToInt(c.UserID), + OperaterAction: fmt.Sprintf("/%s%s", pluginID, ctx.Param("action")), + Method: ctx.Request.Method, + Created: time.Now(), + } + if bodySize <= maxBodySize { + var body []byte + body, err = util2.GzipCompress(util2.Bytes2str(b)) + if err != nil { + return + } + + gmOperaterLog.Body = body + } + + err = this.orm.Create([]*model.GmOperaterLog{gmOperaterLog}).Error + + if err != nil { + this.log.Error("OperaterLog", zap.Error(err)) + } + } + + if this.IsAdminUser(roles) && !pluginJsonData.BackendDebug { + for _, routerConfig := range pluginJsonData.BackendRoutes { + + if ctx.Param("action") == routerConfig.Path && routerConfig.NeedAuth { + + for _, roleId := range roles { + ok, err := this.rbac.Enforce(strconv.Itoa(roleId), + fmt.Sprintf("/%s%s", pluginID, routerConfig.Path), "*") + if err != nil { + return errors.WithStack(err) + } + if !ok { + return errors.New(fmt.Sprintf("您没有操作该资源的权限:%s[%s]", pluginJsonData.PluginName, routerConfig.Remark)) + } + break + } + + } + } + } + ctx.Request.Header.Set(util.EvUserID, cast.ToString(c.UserID)) + delete(ctx.Request.Header, "X-Token") + plugins.NewDataSourcePlugin(ctx, plugin).CallPluginResource() + + return nil +} + +func (this *PluginService) CallPluginViews(ctx *gin.Context, pluginID string) (err error) { + plugin, b := this.pluginRegistry.Plugin(ctx, pluginID) + if !b { + return errors.New(fmt.Sprintf("没有找到该插件信息:%s", pluginID)) + } + plugins.NewDataSourcePlugin(ctx, plugin).CallPluginResource() + return nil +} + +func (this *PluginService) LoadDebugPlugin(ctx context.Context, pluginID string, addr string, pid int) (err error) { + + p, ok := this.pluginRegistry.Plugin(ctx, pluginID) + if ok { + err = this.progressSvr.Stop(ctx, p) + if err != nil { + return errors.WithStack(err) + } + err = this.pluginRegistry.Remove(ctx, p.ID) + if err != nil { + return errors.WithStack(err) + } + } + log, closeLogCallback, err := logger.InitPluginLog(this.cfg, pluginID) + if err != nil { + return errors.WithStack(err) + } + p = provider.DefaultProvider(ctx, log, closeLogCallback, &provider.Config{ + ID: pluginID, + IsDebug: true, + TestAddr: addr, + TestPid: pid, + ExecArgs: []string{"-evRpcKey=123"}, + }, this.cfg) + + err = p.Start(ctx) + if err != nil { + return errors.WithStack(err) + } + err = this.pluginRegistry.Add(ctx, p) + if err != nil { + return errors.WithStack(err) + } + return nil +} + +func (this *PluginService) StopDebugPlugin(ctx context.Context, pluginID string) (err error) { + + p, ok := this.pluginRegistry.Plugin(ctx, pluginID) + if ok { + err = this.progressSvr.Stop(ctx, p) + if err != nil { + return errors.WithStack(err) + } + err = this.pluginRegistry.Remove(ctx, p.ID) + if err != nil { + return errors.WithStack(err) + } + } + + return nil +} + +func (this *PluginService) StarPlugin(ctx context.Context, pluginId int64) (err error) { + err = this.evBackDao.StarPlugin(ctx, &dto.StarPlugin{PluginId: pluginId}) + if err != nil { + return errors.WithStack(err) + } + return nil +} + +const AdminRole = 1 + +func (this *PluginService) IsAdminUser(roleId []int) bool { + return util2.InArr(roleId, AdminRole) +} diff --git a/pkg/services/updatechecker/ev_update.go b/pkg/services/updatechecker/ev_update.go new file mode 100644 index 0000000..3048da4 --- /dev/null +++ b/pkg/services/updatechecker/ev_update.go @@ -0,0 +1,117 @@ +package updatechecker + +import ( + "context" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/dao" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/hashicorp/go-version" + "go.uber.org/zap" + "sync" + "time" +) + +type EvUpdate struct { + hasUpdate bool + latestVersion string + + enabled bool + evVersion string + mutex sync.RWMutex + log *zap.Logger + evBackDao *dao.EvBackDao + downloadUrl string +} + +func ProvideEvUpdate(log *logger.AppLogger, cfg *config.Config, evBackDao *dao.EvBackDao) (*EvUpdate, error) { + log = log.Named("ev check update") + return &EvUpdate{ + evBackDao: evBackDao, + enabled: cfg.CheckForevUpdates, + evVersion: config.Version, + log: logger.ZapLog2AppLog(log), + }, nil +} + +func (s *EvUpdate) IsDisabled() bool { + return !s.enabled +} + +func (s *EvUpdate) Run(ctx context.Context) error { + s.instrumentedCheckForUpdates(ctx) + + ticker := time.NewTicker(time.Minute * 10) + run := true + + for run { + select { + case <-ticker.C: + s.instrumentedCheckForUpdates(ctx) + case <-ctx.Done(): + run = false + } + } + + return ctx.Err() +} + +func (s *EvUpdate) instrumentedCheckForUpdates(ctx context.Context) { + start := time.Now() + + if err := s.checkForUpdates(ctx); err != nil { + s.log.Sugar().Errorf("Update check failed", "error", err, "duration", time.Since(start)) + return + } + s.log.Sugar().Infof("Update check succeeded", "duration", time.Since(start)) +} + +func (s *EvUpdate) checkForUpdates(ctx context.Context) error { + s.log.Debug("Checking for updates") + + versionRes, err := s.evBackDao.GetEvMaxVersion(ctx) + + if err != nil { + return err + } + + s.mutex.Lock() + defer s.mutex.Unlock() + + s.latestVersion = versionRes.Version + s.downloadUrl = versionRes.DownloadUrl + + s.hasUpdate = canUpdate(s.evVersion, s.latestVersion) + + return nil +} + +func (s *EvUpdate) UpdateAvailable() bool { + s.mutex.RLock() + defer s.mutex.RUnlock() + return s.hasUpdate +} + +func (s *EvUpdate) LatestVersion() string { + s.mutex.RLock() + defer s.mutex.RUnlock() + return s.latestVersion +} + +func (s *EvUpdate) DownloadUrl() string { + s.mutex.RLock() + defer s.mutex.RUnlock() + return s.downloadUrl +} + +func canUpdate(v1, v2 string) bool { + ver1, err1 := version.NewVersion(v1) + if err1 != nil { + return false + } + ver2, err2 := version.NewVersion(v2) + if err2 != nil { + return false + } + + return ver1.LessThan(ver2) +} diff --git a/pkg/services/updatechecker/plugins.go b/pkg/services/updatechecker/plugins.go new file mode 100644 index 0000000..aae92a2 --- /dev/null +++ b/pkg/services/updatechecker/plugins.go @@ -0,0 +1,149 @@ +package updatechecker + +import ( + "context" + "github.com/spf13/cast" + + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/dao" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/plugins/manager" + "go.uber.org/zap" + + "net/url" + "sync" + "time" + + "github.com/1340691923/ElasticView/pkg/infrastructure/plugins/plugin" +) + +type PluginsService struct { + availableUpdates map[string]string + pluginStore manager.Service + enabled bool + evBackDao *dao.EvBackDao + mutex sync.RWMutex + log *zap.Logger + updateCheckURL *url.URL +} + +func ProvidePluginsService(log *logger.AppLogger, cfg *config.Config, evBackDao *dao.EvBackDao, pluginStore manager.Service) (*PluginsService, error) { + logger := log.Named("plugins.update.checker") + + return &PluginsService{ + enabled: cfg.CheckForPluginUpdates, + + log: logger, + evBackDao: evBackDao, + pluginStore: pluginStore, + availableUpdates: make(map[string]string), + }, nil +} + +func (s *PluginsService) IsDisabled() bool { + return !s.enabled +} + +func (s *PluginsService) Run(ctx context.Context) error { + s.instrumentedCheckForUpdates(ctx) + + ticker := time.NewTicker(time.Minute * 10) + run := true + + for run { + select { + case <-ticker.C: + s.instrumentedCheckForUpdates(ctx) + case <-ctx.Done(): + run = false + } + } + + return ctx.Err() +} + +func (s *PluginsService) HasUpdate(ctx context.Context, pluginID string) (string, bool) { + s.mutex.RLock() + updateVers, updateAvailable := s.availableUpdates[pluginID] + s.mutex.RUnlock() + if updateAvailable { + plugin, exists := s.pluginStore.Plugin(ctx, pluginID) + if !exists { + return "", false + } + + if canUpdate(plugin.Version(), updateVers) { + return updateVers, true + } + } + + return "", false +} + +func (s *PluginsService) instrumentedCheckForUpdates(ctx context.Context) { + start := time.Now() + ctxLogger := s.log + if err := s.checkForUpdates(ctx); err != nil { + ctxLogger.Sugar().Warnf("Update check failed", "error", err, "duration", time.Since(start)) + return + } + + ctxLogger.Sugar().Infof("Update check succeeded", "duration", time.Since(start)) +} + +func (s *PluginsService) InstrumentedCheckForUpdates(ctx context.Context) { + s.instrumentedCheckForUpdates(ctx) +} + +func (s *PluginsService) checkForUpdates(ctx context.Context) error { + ctxLogger := s.log + ctxLogger.Debug("Preparing plugins eligible for version check") + localPlugins := s.pluginsEligibleForVersionCheck(ctx) + + ctxLogger.Sugar().Debugf("Checking for plugin updates") + + gcomPlugins, err := s.evBackDao.GetEvPluginsMaxVersion(ctx, s.pluginIDsCSV(localPlugins)) + + if err != nil { + return err + } + + availableUpdates := map[string]string{} + for slug, version := range gcomPlugins { + if localP, exists := localPlugins[slug]; exists { + if canUpdate(localP.Version(), cast.ToString(version)) { + availableUpdates[localP.ID] = cast.ToString(version) + } + } + } + + if len(availableUpdates) > 0 { + s.mutex.Lock() + s.availableUpdates = availableUpdates + s.mutex.Unlock() + } + + return nil +} + +func (s *PluginsService) pluginIDsCSV(m map[string]*plugin.Plugin) []string { + ids := make([]string, 0, len(m)) + for pluginID := range m { + ids = append(ids, pluginID) + } + + return ids +} + +func (s *PluginsService) pluginsEligibleForVersionCheck(ctx context.Context) map[string]*plugin.Plugin { + result := make(map[string]*plugin.Plugin) + for _, p := range s.pluginStore.Plugins(ctx) { + if p.BackendDebug() { + continue + } + + result[p.ID] = p + } + + return result +} diff --git a/pkg/services/ws_service/define.go b/pkg/services/ws_service/define.go new file mode 100644 index 0000000..40e6a95 --- /dev/null +++ b/pkg/services/ws_service/define.go @@ -0,0 +1,5 @@ +package ws_service + +const ( + C2S_PING = 1 +) diff --git a/pkg/services/ws_service/heart.go b/pkg/services/ws_service/heart.go new file mode 100644 index 0000000..47029ff --- /dev/null +++ b/pkg/services/ws_service/heart.go @@ -0,0 +1,17 @@ +package ws_service + +import ( + "github.com/1340691923/ElasticView/pkg/infrastructure/dto" + "github.com/1340691923/ElasticView/pkg/infrastructure/vo" +) + +type HeartController struct { +} + +func NewHeartController() *HeartController { + return &HeartController{} +} + +func (this *HeartController) Ping(req *dto.C2S_PING, ctx *Ctx) *vo.S2C_PONG { + return &vo.S2C_PONG{} +} diff --git a/pkg/services/ws_service/ws_service.go b/pkg/services/ws_service/ws_service.go new file mode 100644 index 0000000..4d28c30 --- /dev/null +++ b/pkg/services/ws_service/ws_service.go @@ -0,0 +1,303 @@ +package ws_service + +import ( + "context" + "fmt" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/dto" + "github.com/1340691923/ElasticView/pkg/infrastructure/jwt_svr" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/sqlstore" + "github.com/gin-gonic/gin" + "github.com/goccy/go-json" + "go.uber.org/zap" + "runtime" + + "github.com/gorilla/websocket" + "github.com/pkg/errors" + "github.com/tidwall/gjson" + "log" + "reflect" + "sync" +) + +type Ctx struct { + ReqData interface{} + Context context.Context + WsClient *websocket.Conn + UserId int `json:"user_id"` + RoleId int `json:"role_id"` +} + +type EventCallback func(ctx *Ctx) +type ApiHandle func(ctx *Ctx) interface{} +type EventCallbackWithErr func(ctx *Ctx) (err error) + +type WsService struct { + log *logger.AppLogger + cfg *config.Config + orm *sqlstore.SqlStore + jwtSvr *jwt_svr.Jwt + protoMap map[int]reflect.Type + svrRouter map[string]ApiHandle + onConnectCallback EventCallback + onSessionAccepted EventCallback + onSessionClosed EventCallback + onDestory EventCallbackWithErr + onMounted EventCallbackWithErr + onMountedExcludeProtoMap map[string]struct{} + onDestoryExcludeProtoMap map[string]struct{} + user2ConnMap *sync.Map + + heartController *HeartController +} + +func (this *WsService) init() { + //添加请求协议 + this.addReqProto(C2S_PING, &dto.C2S_PING{}) + + //添加控制器 + this.addStrcuts( + this.heartController, + ) + + //钩子 + this.OnSessionAccepted(func(ctx *Ctx) { + this.log.Sugar().Infof("新建连接", ctx.UserId) + }) + + this.OnSessionClosed(func(ctx *Ctx) { + this.log.Sugar().Infof("连接断开", ctx.UserId) + }) + + this.OnDestoryCallback(func(ev *Ctx) error { + this.log.Sugar().Infof("控制器销毁", ev.UserId) + return nil + }) + + this.OnMountedCallback(func(ctx *Ctx) error { + this.log.Sugar().Infof("控制器初始化", ctx.UserId) + return nil + }) + +} + +func (this *WsService) addReqProto(code int, proto interface{}) { + this.protoMap[code] = reflect.TypeOf(proto).Elem() +} + +func NewWsService( + log *logger.AppLogger, + cfg *config.Config, + orm *sqlstore.SqlStore, + jwtSvr *jwt_svr.Jwt, + heartController *HeartController, +) *WsService { + wsSvr := &WsService{ + log: log, + cfg: cfg, + orm: orm, + jwtSvr: jwtSvr, + protoMap: map[int]reflect.Type{}, + svrRouter: map[string]ApiHandle{}, + onMountedExcludeProtoMap: map[string]struct{}{}, + onDestoryExcludeProtoMap: map[string]struct{}{}, + heartController: heartController, + user2ConnMap: new(sync.Map), + } + wsSvr.init() + return wsSvr +} + +func (this *WsService) InitConnect(conn *websocket.Conn, ginCtx *gin.Context, userId, roleId int) { + + ctx := context.WithValue(context.Background(), "request", ginCtx.Request) + + wsCtx := &Ctx{ + Context: ctx, + WsClient: conn, + UserId: userId, + RoleId: roleId, + } + + this.SessionAccepted(wsCtx) + + for { + _, message, err := conn.ReadMessage() + if err != nil { + this.SessionClosed(&Ctx{ + Context: ctx, + WsClient: conn, + UserId: userId, + RoleId: roleId, + }) + log.Println("server read err:", err) + break + } + reqData, err := this.getReqData(message) + + if err != nil { + log.Println(" server getData err:", err) + break + } + wsCtx.ReqData = reqData + this.RunServer(wsCtx) + } +} + +func (this *WsService) getReqData(reqByte []byte) (reqData interface{}, err error) { + code := gjson.GetBytes(reqByte, "code").Int() + reqDataString := gjson.GetBytes(reqByte, "data").String() + _, ok := this.protoMap[int(code)] + + if !ok { + errString := fmt.Sprintf("server err code:%d", code) + err = errors.New(errString) + return + } + reqData = reflect.New(this.protoMap[int(code)]).Interface() + + err = json.Unmarshal([]byte(reqDataString), &reqData) + if err != nil { + err = errors.WithStack(err) + return + } + return +} + +func (this *WsService) Mounted(ev *Ctx) error { + var err error + if this.onMounted != nil { + key := reflect.TypeOf(ev.ReqData).String() + if _, ok := this.onMountedExcludeProtoMap[key]; !ok { + err = this.onMounted(ev) + } + } + return err +} + +func (this *WsService) OnMountedCallback(fn func(ev *Ctx) error, excludeProtoMsgs ...interface{}) { + this.onMounted = fn + for _, protoMsg := range excludeProtoMsgs { + key := reflect.TypeOf(protoMsg).String() + this.onMountedExcludeProtoMap[key] = struct{}{} + } +} + +func (this *WsService) OnConnectCallback(fn EventCallback) { + this.onConnectCallback = fn +} + +func (this *WsService) ConnectCallback(ev *Ctx) { + if this.onConnectCallback != nil { + this.onConnectCallback(ev) + } +} + +func (this *WsService) OnSessionClosed(fn EventCallback) { + this.onSessionClosed = fn +} + +func (this *WsService) OnDestoryCallback(fn func(ev *Ctx) error, excludeProtoMsgs ...interface{}) { + this.onDestory = fn + for _, protoMsg := range excludeProtoMsgs { + key := reflect.TypeOf(protoMsg).String() + this.onDestoryExcludeProtoMap[key] = struct{}{} + } + +} + +func (this *WsService) Destory(ev *Ctx) error { + var err error + if this.onDestory != nil { + key := reflect.TypeOf(ev.ReqData).String() + if _, ok := this.onDestoryExcludeProtoMap[key]; !ok { + err = this.onDestory(ev) + } + } + return err +} + +func (this *WsService) SessionClosed(ev *Ctx) { + if this.onSessionClosed != nil { + this.onSessionClosed(ev) + } +} + +func (this *WsService) OnSessionAccepted(fn EventCallback) { + this.onSessionAccepted = fn +} + +func (this *WsService) SessionAccepted(ev *Ctx) { + if this.onSessionAccepted != nil { + this.onSessionAccepted(ev) + } +} + +func (this *WsService) AddRoute(protoMsg interface{}, handler ApiHandle) { + key := reflect.TypeOf(protoMsg).String() + this.svrRouter[key] = handler +} + +func (this *WsService) GetHandle(protoName string) (ApiHandle, bool) { + application, b := this.svrRouter[protoName] + return application, b +} + +func (this *WsService) addStrcuts(data ...interface{}) { + for _, dataV := range data { + dataValue := reflect.ValueOf(dataV) + for i := 0; i < dataValue.NumMethod(); i++ { + handlerType := reflect.TypeOf(dataValue.Method(i).Interface()) + key := "*" + handlerType.In(0).Elem().String() + tmp := i + this.svrRouter[key] = func(ctx *Ctx) interface{} { + values := []reflect.Value{reflect.ValueOf(ctx.ReqData), reflect.ValueOf(ctx)} + resV := dataValue.Method(tmp).Call(values) + if len(resV) != 1 { + return nil + } + return resV[0].Interface() + } + } + } + +} + +func (this *WsService) RunServer(ev *Ctx) { + + defer func() { + if r := recover(); r != nil { + //打印调用栈信息 + buf := make([]byte, 2048) + n := runtime.Stack(buf, false) + stackInfo := fmt.Sprintf("%s", buf[:n]) + this.log.Sugar().Errorf("panic stack info %s", stackInfo) + this.log.Sugar().Errorf("--->Server Error:", r) + } + }() + + msgType := reflect.TypeOf(ev.ReqData).String() + handle, foundHandle := this.GetHandle(msgType) + if !foundHandle { + this.log.Error("WS 没有找到该路由", zap.String("msgType", msgType)) + return + } + this.log.Debug("WS 收到请求", zap.Reflect(msgType, ev.ReqData)) + err := this.Mounted(ev) + if err != nil { + this.log.Error("WS 处理消息失败", zap.Reflect("msgType", ev.ReqData), zap.Error(err)) + return + } + res := handle(ev) + + if res != nil { + this.log.Error("WS 处理请求并返回", zap.Reflect(msgType, ev.ReqData), zap.Reflect(reflect.TypeOf(res).String(), res)) + ev.WsClient.WriteJSON(res) + } else { + this.log.Error("WS 处理消息失败 res = nil") + } + + this.Destory(ev) + +} diff --git a/pkg/util/aes.go b/pkg/util/aes.go new file mode 100644 index 0000000..06f2622 --- /dev/null +++ b/pkg/util/aes.go @@ -0,0 +1,93 @@ +package util + +import ( + "bytes" + "crypto/aes" + "fmt" +) + +//ECB模式解密 +func ECBDecrypt(crypted []byte, keyStr string) ([]byte, error) { + key := []byte(keyStr) + if !validKey(key) { + return nil, fmt.Errorf("秘钥长度错误,当前传入长度为 %d",len(key)) + } + if len(crypted) < 1 { + return nil, fmt.Errorf("源数据长度不能为0") + } + block, err := aes.NewCipher(key) + if err != nil { + return nil, err + } + if len(crypted)%block.BlockSize() != 0 { + return nil, fmt.Errorf("源数据长度必须是 %d 的整数倍,当前长度为:%d",block.BlockSize(), len(crypted)) + } + var dst []byte + tmpData := make([]byte, block.BlockSize()) + + for index := 0; index < len(crypted); index += block.BlockSize() { + block.Decrypt(tmpData, crypted[index:index+block.BlockSize()]) + dst = append(dst, tmpData...) + } + dst, err = PKCS5UnPadding(dst) + if err != nil { + return nil, err + } + return dst, nil +} + +//ECB模式加密 +func ECBEncrypt(srcStr, keyStr string) ([]byte, error) { + key := []byte(keyStr) + src := []byte(srcStr) + if !validKey(key) { + return nil, fmt.Errorf("秘钥长度错误, 当前传入长度为 %d",len(key)) + } + block, err := aes.NewCipher(key) + if err != nil { + return nil, err + } + if len(src) < 1 { + return nil, fmt.Errorf("源数据长度不能为0") + } + src = PKCS5Padding(src, block.BlockSize()) + if len(src)%block.BlockSize() != 0 { + return nil, fmt.Errorf("源数据长度必须是 %d 的整数倍,当前长度为:%d",block.BlockSize(), len(src)) + } + var dst []byte + tmpData := make([]byte, block.BlockSize()) + for index := 0; index < len(src); index += block.BlockSize() { + block.Encrypt(tmpData, src[index:index+block.BlockSize()]) + dst = append(dst, tmpData...) + } + return dst, nil +} + +// PKCS5填充 +func PKCS5Padding(ciphertext []byte, blockSize int) []byte { + padding := blockSize - len(ciphertext)%blockSize + padtext := bytes.Repeat([]byte{byte(padding)}, padding) + return append(ciphertext, padtext...) +} + +// 去除PKCS5填充 +func PKCS5UnPadding(origData []byte) ([]byte, error) { + length := len(origData) + unpadding := int(origData[length-1]) + + if length < unpadding { + return nil, fmt.Errorf("invalid unpadding length") + } + return origData[:(length - unpadding)], nil +} + +// 秘钥长度验证 +func validKey(key []byte) bool { + k := len(key) + switch k { + default: + return false + case 16, 24, 32: + return true + } +} diff --git a/pkg/util/array.go b/pkg/util/array.go new file mode 100644 index 0000000..251159e --- /dev/null +++ b/pkg/util/array.go @@ -0,0 +1,99 @@ +// 辅助工具层 +package util + +import ( + "github.com/pkg/errors" + "reflect" + "strconv" + "strings" + "unsafe" +) + +func InArr(array []int, column int) bool { + i := 0 + for i < len(array) { + if array[i] == column { + return true + } + i++ + } + return false +} + +func InstrArr(array []string, column string) bool { + i := 0 + l := len(array) + for i < l { + if array[i] == column { + return true + } + i++ + } + return false +} + +func InMap(maps map[string]int, column string) (ok bool) { + _, ok = maps[column] + return +} + +func RemoveRepeatedElement(arr []string) (newArr []interface{}) { + newArr = make([]interface{}, 0) + for i := 0; i < len(arr); i++ { + repeat := false + for j := i + 1; j < len(arr); j++ { + if arr[i] == arr[j] { + repeat = true + break + } + } + if !repeat { + newArr = append(newArr, arr[i]) + } + } + return +} + +// b2s converts byte slice to a string without memory allocation. +// See https://groups.google.com/forum/#!msg/Golang-Nuts/ENgbUzYvCuU/90yGx7GUAgAJ . +// +// Note it may break if string and/or slice header will change +// in the future go versions. +func Bytes2str(b []byte) string { + /* #nosec G103 */ + return *(*string)(unsafe.Pointer(&b)) +} + +// s2b converts string to a byte slice without memory allocation. +// +// Note it may break if string and/or slice header will change +// in the future go versions. +func Str2bytes(s string) (b []byte) { + /* #nosec G103 */ + bh := (*reflect.SliceHeader)(unsafe.Pointer(&b)) + /* #nosec G103 */ + sh := (*reflect.StringHeader)(unsafe.Pointer(&s)) + bh.Data = sh.Data + bh.Cap = sh.Len + bh.Len = sh.Len + return b +} + +// SplitInt 分割字符串并转为INT +func SplitInt(s, sep string) ([]int, error) { + var tmpStr = strings.Split(s, sep) + if len(tmpStr) == 0 { + return nil, errors.New("no split int") + } + var err error + var tmp int + var rlt []int + for i := range tmpStr { + tmp, err = strconv.Atoi(tmpStr[i]) + if err != nil { + return nil, err + } + rlt = append(rlt, tmp) + } + return rlt, nil +} diff --git a/pkg/util/cast.go b/pkg/util/cast.go new file mode 100644 index 0000000..147dac4 --- /dev/null +++ b/pkg/util/cast.go @@ -0,0 +1,118 @@ +package util + +import ( + "github.com/goccy/go-json" + "strconv" + "time" +) + +func ToExcelData(any interface{}) string { + + if any == nil { + return "" + } + switch value := any.(type) { + case int: + return strconv.Itoa(value) + case int8: + return strconv.Itoa(int(value)) + case int16: + return strconv.Itoa(int(value)) + case int32: + return strconv.Itoa(int(value)) + case int64: + return strconv.FormatInt(value, 10) + case uint: + return strconv.FormatUint(uint64(value), 10) + case uint8: + return strconv.FormatUint(uint64(value), 10) + case uint16: + return strconv.FormatUint(uint64(value), 10) + case uint32: + return strconv.FormatUint(uint64(value), 10) + case uint64: + return strconv.FormatUint(value, 10) + case float32: + return strconv.FormatFloat(float64(value), 'f', -1, 32) + case float64: + return strconv.FormatFloat(value, 'f', -1, 64) + case bool: + return strconv.FormatBool(value) + case string: + return value + case []byte: + return string(value) + case time.Time: + if value.IsZero() { + return "" + } + return value.String() + case *time.Time: + if value == nil { + return "" + } + return value.String() + case []int: + + b, _ := json.Marshal(value) + return string(b) + case []int32: + + b, _ := json.Marshal(value) + return string(b) + case []int16: + + b, _ := json.Marshal(value) + return string(b) + case []int8: + + b, _ := json.Marshal(value) + return string(b) + case []int64: + + b, _ := json.Marshal(value) + return string(b) + case []float64: + + b, _ := json.Marshal(value) + return string(b) + case []float32: + + b, _ := json.Marshal(value) + return string(b) + case []uint64: + + b, _ := json.Marshal(value) + return string(b) + case []uint16: + + b, _ := json.Marshal(value) + return string(b) + case []string: + + b, _ := json.Marshal(value) + return string(b) + case []interface{}: + + b, _ := json.Marshal(value) + return string(b) + case map[string]interface{}: + + b, _ := json.Marshal(value) + return string(b) + default: + return "" + } +} + +func StringPtr(v string) *string { + return &v +} + +func IntPtr(v int) *int { + return &v +} + +func BoolPtr(v bool) *bool { + return &v +} diff --git a/pkg/util/charset.go b/pkg/util/charset.go new file mode 100644 index 0000000..9d1fc59 --- /dev/null +++ b/pkg/util/charset.go @@ -0,0 +1,95 @@ +package util + +import ( + "encoding/base64" + "fmt" + "unsafe" + + "golang.org/x/text/encoding/simplifiedchinese" +) + +func IsGBK(data []byte) bool { + length := len(data) + var i int = 0 + for i < length { + + if data[i] <= 0xff { + //编码小于等于127,只有一个字节的编码,兼容ASCII吗 + i++ + continue + } else { + //大于127的使用双字节编码 + if data[i] >= 0x81 && + data[i] <= 0xfe && + data[i+1] >= 0x40 && + data[i+1] <= 0xfe && + data[i+1] != 0xf7 { + i += 2 + continue + } else { + return false + } + } + } + return true +} + +func preNUm(data byte) int { + str := fmt.Sprintf("%b", data) + var i int = 0 + for i < len(str) { + if str[i] != '1' { + break + } + i++ + } + return i +} + +func StrToBytes(s string) []byte { + x := (*[2]uintptr)(unsafe.Pointer(&s)) + h := [3]uintptr{x[0], x[1], x[1]} + return *(*[]byte)(unsafe.Pointer(&h)) +} + +func BytesToStr(b []byte) string { + return *(*string)(unsafe.Pointer(&b)) +} + +func IsUtf8(data []byte) bool { + for i := 0; i < len(data); { + if data[i]&0x80 == 0x00 { + // 0XXX_XXXX + i++ + continue + } else if num := preNUm(data[i]); num > 2 { + // 110X_XXXX 10XX_XXXX + // 1110_XXXX 10XX_XXXX 10XX_XXXX + // 1111_0XXX 10XX_XXXX 10XX_XXXX 10XX_XXXX + // 1111_10XX 10XX_XXXX 10XX_XXXX 10XX_XXXX 10XX_XXXX + // 1111_110X 10XX_XXXX 10XX_XXXX 10XX_XXXX 10XX_XXXX 10XX_XXXX + // preNUm() 返回首个字节的8个bits中首个0bit前面1bit的个数,该数量也是该字符所使用的字节数 + i++ + for j := 0; j < num-1; j++ { + //判断后面的 num - 1 个字节是不是都是10开头 + if data[i]&0xc0 != 0x80 { + return false + } + i++ + } + } else { + //其他情况说明不是utf-8 + return false + } + } + return true +} + +func GbkToUtf8(gbkData []byte) []byte { + utf8Data, _ := simplifiedchinese.GBK.NewDecoder().Bytes(gbkData) + return utf8Data +} + +func GetBase64String(data string) string { + return base64.StdEncoding.EncodeToString([]byte(data)) +} diff --git a/pkg/util/config.go b/pkg/util/config.go new file mode 100644 index 0000000..5fc7e38 --- /dev/null +++ b/pkg/util/config.go @@ -0,0 +1,29 @@ +package util + +import ( + "github.com/goccy/go-json" + "io/ioutil" + "strconv" + "strings" +) + +// LoadJSONConfig 读取配置文件 json格式 +func LoadJSONConfig(filename string, v interface{}) error { + b, err := ioutil.ReadFile(filename) + if err != nil { + return err + } + err = json.Unmarshal(b, v) + if err != nil { + return err + } + return nil +} + +func JoinInt(s []int, sp string) string { + var tmp = make([]string, 0, len(s)) + for i, _ := range s { + tmp = append(tmp, strconv.Itoa(s[i])) + } + return strings.Join(tmp, sp) +} diff --git a/pkg/util/dir.go b/pkg/util/dir.go new file mode 100644 index 0000000..26de2ae --- /dev/null +++ b/pkg/util/dir.go @@ -0,0 +1,85 @@ +package util + +import ( + "io" + "io/ioutil" + "log" + "os" + "path" + "path/filepath" + "strings" +) + +func CheckFileIsExist(filename string) bool { + var exist = true + if _, err := os.Stat(filename); os.IsNotExist(err) { + exist = false + } + return exist +} + +func WriteVersionGoFile(content string) (err error) { + err = ioutil.WriteFile(`pkg\infrastructure\config\version.go`, []byte(content), 0777) + return +} + +func substr(s string, pos, length int) string { + runes := []rune(s) + l := pos + length + if l > len(runes) { + l = len(runes) + } + return string(runes[pos:l]) +} + +func GetParentDirectory(dirctory string) string { + return substr(dirctory, 0, strings.LastIndex(dirctory, "/")) +} + +func GetCurrentDirectory() string { + dir, err := filepath.Abs(filepath.Dir(os.Args[0])) + if err != nil { + log.Fatal(err) + } + return strings.Replace(dir, "\\", "/", -1) +} + +func DirCopy(src string, dest string) error { + // 遍历原文件夹内部所有item + items, _ := ioutil.ReadDir(src) + for _, item := range items { + + // 文件 + if !item.IsDir() { + cpoyFile2(path.Join(src, item.Name()), path.Join(dest, item.Name())) + continue + } + + // 目录 + os.Mkdir(path.Join(dest, item.Name()), os.ModePerm) + // 递归 + DirCopy(path.Join(src, item.Name()), path.Join(dest, item.Name())) + } + + return nil +} + +func cpoyFile2(src, dest string) error { + // open src readonly + srcFp, err := os.Open(src) + if err != nil { + return err + } + defer srcFp.Close() + + // create dest + dstFp, err := os.Create(dest) + if err != nil { + return err + } + defer dstFp.Close() + + // copy + _, err = io.Copy(dstFp, srcFp) + return err +} diff --git a/pkg/util/ecb.go b/pkg/util/ecb.go new file mode 100644 index 0000000..3cc51a4 --- /dev/null +++ b/pkg/util/ecb.go @@ -0,0 +1,76 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Electronic Code Book (ECB) mode. + +// ECB provides confidentiality by assigning a fixed ciphertext block to each +// plaintext block. + +// See NIST SP 800-38A, pp 08-09 + +package util + +import ( + "crypto/cipher" +) + +type ecb struct { + b cipher.Block + blockSize int +} + +func newECB(b cipher.Block) *ecb { + return &ecb{ + b: b, + blockSize: b.BlockSize(), + } +} + +type ecbEncrypter ecb + +// NewECBEncrypter returns a BlockMode which encrypts in electronic code book +// mode, using the given Block. +func NewECBEncrypter(b cipher.Block) cipher.BlockMode { + return (*ecbEncrypter)(newECB(b)) +} + +func (x *ecbEncrypter) BlockSize() int { return x.blockSize } + +func (x *ecbEncrypter) CryptBlocks(dst, src []byte) { + if len(src)%x.blockSize != 0 { + panic("crypto/cipher: input not full blocks") + } + if len(dst) < len(src) { + panic("crypto/cipher: output smaller than input") + } + for len(src) > 0 { + x.b.Encrypt(dst, src[:x.blockSize]) + src = src[x.blockSize:] + dst = dst[x.blockSize:] + } +} + +type ecbDecrypter ecb + +// NewECBDecrypter returns a BlockMode which decrypts in electronic code book +// mode, using the given Block. +func NewECBDecrypter(b cipher.Block) cipher.BlockMode { + return (*ecbDecrypter)(newECB(b)) +} + +func (x *ecbDecrypter) BlockSize() int { return x.blockSize } + +func (x *ecbDecrypter) CryptBlocks(dst, src []byte) { + if len(src)%x.blockSize != 0 { + panic("crypto/cipher: input not full blocks") + } + if len(dst) < len(src) { + panic("crypto/cipher: output smaller than input") + } + for len(src) > 0 { + x.b.Decrypt(dst, src[:x.blockSize]) + src = src[x.blockSize:] + dst = dst[x.blockSize:] + } +} diff --git a/pkg/util/encoding.go b/pkg/util/encoding.go new file mode 100644 index 0000000..97e0189 --- /dev/null +++ b/pkg/util/encoding.go @@ -0,0 +1,84 @@ +package util + +import ( + "crypto/rand" + "crypto/sha256" + "encoding/base64" + "encoding/hex" + "github.com/pkg/errors" + "io" + "mime/quotedprintable" + "strings" + + "golang.org/x/crypto/pbkdf2" +) + +// GetRandomString generate random string by specify chars. +// source: https://github.com/gogits/gogs/blob/9ee80e3e5426821f03a4e99fad34418f5c736413/modules/base/tool.go#L58 +func GetRandomString(n int, alphabets ...byte) (string, error) { + const alphanum = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" + var bytes = make([]byte, n) + if _, err := rand.Read(bytes); err != nil { + return "", err + } + + for i, b := range bytes { + if len(alphabets) == 0 { + bytes[i] = alphanum[b%byte(len(alphanum))] + } else { + bytes[i] = alphabets[b%byte(len(alphabets))] + } + } + return string(bytes), nil +} + +// EncodePassword encodes a password using PBKDF2. +func EncodePassword(password string, salt string) (string, error) { + newPasswd := pbkdf2.Key([]byte(password), []byte(salt), 10000, 50, sha256.New) + return hex.EncodeToString(newPasswd), nil +} + +// GetBasicAuthHeader returns a base64 encoded string from user and password. +func GetBasicAuthHeader(user string, password string) string { + var userAndPass = user + ":" + password + return "Basic " + base64.StdEncoding.EncodeToString([]byte(userAndPass)) +} + +// DecodeBasicAuthHeader decodes user and password from a basic auth header. +func DecodeBasicAuthHeader(header string) (string, string, error) { + var code string + parts := strings.SplitN(header, " ", 2) + if len(parts) == 2 && parts[0] == "Basic" { + code = parts[1] + } + + decoded, err := base64.StdEncoding.DecodeString(code) + if err != nil { + return "", "", err + } + + userAndPass := strings.SplitN(string(decoded), ":", 2) + if len(userAndPass) != 2 { + return "", "", errors.New("invalid basic auth header") + } + + return userAndPass[0], userAndPass[1], nil +} + +// RandomHex returns a random string from a n seed. +func RandomHex(n int) (string, error) { + bytes := make([]byte, n) + if _, err := rand.Read(bytes); err != nil { + return "", err + } + return hex.EncodeToString(bytes), nil +} + +// decodeQuotedPrintable decodes quoted-printable UTF-8 string +func DecodeQuotedPrintable(encodedValue string) string { + decodedBytes, err := io.ReadAll(quotedprintable.NewReader(strings.NewReader(encodedValue))) + if err != nil { + return encodedValue + } + return string(decodedBytes) +} diff --git a/pkg/util/encoding_test.go b/pkg/util/encoding_test.go new file mode 100644 index 0000000..4bb5f34 --- /dev/null +++ b/pkg/util/encoding_test.go @@ -0,0 +1,132 @@ +package util + +import ( + "strings" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestGetBasicAuthHeader_Encoding(t *testing.T) { + t.Run("generating base64 header", func(t *testing.T) { + result := GetBasicAuthHeader("grafana", "1234") + assert.Equal(t, "Basic Z3JhZmFuYToxMjM0", result) + }) + + t.Run("decoding basic auth header", func(t *testing.T) { + header := GetBasicAuthHeader("grafana", "1234") + username, password, err := DecodeBasicAuthHeader(header) + require.NoError(t, err) + + assert.Equal(t, "grafana", username) + assert.Equal(t, "1234", password) + }) +} + +func TestEncodePassword(t *testing.T) { + encodedPassword, err := EncodePassword("iamgod", "pepper") + require.NoError(t, err) + assert.Equal( + t, + "e59c568621e57756495a468f47c74e07c911b037084dd464bb2ed72410970dc849cabd71b48c394faf08a5405dae53741ce9", + encodedPassword, + ) +} + +func TestDecodeQuotedPrintable(t *testing.T) { + t.Run("should return not encoded string as is", func(t *testing.T) { + testStrings := []struct { + in string + out string + }{ + {"", ""}, + {"munich", "munich"}, + {" munich", " munich"}, + {"munich gothenburg", "munich gothenburg"}, + {"München", "München"}, + {"München Göteborg", "München Göteborg"}, + } + + for _, str := range testStrings { + val := DecodeQuotedPrintable(str.in) + assert.Equal(t, str.out, val) + } + }) + + t.Run("should decode encoded string", func(t *testing.T) { + testStrings := []struct { + in string + out string + }{ + {"M=C3=BCnchen", "München"}, + {"M=C3=BCnchen G=C3=B6teborg", "München Göteborg"}, + {"=E5=85=AC=E5=8F=B8", "公司"}, + } + + for _, str := range testStrings { + val := DecodeQuotedPrintable(str.in) + assert.Equal(t, str.out, val) + } + }) + + t.Run("should preserve meaningful whitespace", func(t *testing.T) { + testStrings := []struct { + in string + out string + }{ + {" ", ""}, + {" =", " "}, + {" munich gothenburg", " munich gothenburg"}, + {" munich gothenburg ", " munich gothenburg"}, + {" munich gothenburg =", " munich gothenburg "}, + {" munich\tgothenburg\t \t", " munich\tgothenburg"}, + {" munich\t gothenburg\t \t=", " munich\t gothenburg\t \t"}, + } + + for _, str := range testStrings { + val := DecodeQuotedPrintable(str.in) + assert.Equal(t, str.out, val) + } + }) + + t.Run("should gracefully ignore invalid encoding sequences", func(t *testing.T) { + testStrings := []struct { + in string + out string + }{ + {"=XY=ZZ", "=XY=ZZ"}, + {"==58", "=X"}, + {"munich = gothenburg", "munich = gothenburg"}, + {"munich == tromso", "munich == tromso"}, + } + + for _, str := range testStrings { + val := DecodeQuotedPrintable(str.in) + assert.Equal(t, str.out, val) + } + }) + + t.Run("should return invalid UTF-8 sequences as is", func(t *testing.T) { + testStrings := []struct { + in string + out string + }{ + {"=E5 =85=AC =E5=8F =B8", "\xE5 \x85\xAC \xE5\x8F \xB8"}, + {"=00=00munich=FF=FF", "\x00\x00munich\xFF\xFF"}, + } + + for _, str := range testStrings { + val := DecodeQuotedPrintable(str.in) + assert.Equal(t, str.out, val) + } + }) + + t.Run("should support long strings", func(t *testing.T) { + str_in := strings.Repeat(" M=C3=BCnchen", 128) + str_out := strings.Repeat(" München", 128) + + val := DecodeQuotedPrintable(str_in) + assert.Equal(t, str_out, val) + }) +} diff --git a/pkg/util/encryption.go b/pkg/util/encryption.go new file mode 100644 index 0000000..6ad6801 --- /dev/null +++ b/pkg/util/encryption.go @@ -0,0 +1,148 @@ +package util + +import ( + "bytes" + "crypto/aes" + "crypto/cipher" + "crypto/rand" + "crypto/sha256" + "encoding/base64" + "fmt" + "github.com/pkg/errors" + "io" + + "golang.org/x/crypto/pbkdf2" +) + +const ( + saltLength = 8 + aesCfb = "aes-cfb" + aesGcm = "aes-gcm" + encryptionAlgorithmDelimiter = '*' +) + +// Decrypt decrypts a payload with a given secret. +// DEPRECATED. Do not use it. +// Use secrets.Service instead. +func Decrypt(payload []byte, secret string) ([]byte, error) { + alg, payload, err := deriveEncryptionAlgorithm(payload) + if err != nil { + return nil, err + } + + if len(payload) < saltLength { + return nil, fmt.Errorf("unable to compute salt") + } + salt := payload[:saltLength] + key, err := encryptionKeyToBytes(secret, string(salt)) + if err != nil { + return nil, err + } + + block, err := aes.NewCipher(key) + if err != nil { + return nil, err + } + + switch alg { + case aesGcm: + return decryptGCM(block, payload) + default: + return decryptCFB(block, payload) + } +} + +func deriveEncryptionAlgorithm(payload []byte) (string, []byte, error) { + if len(payload) == 0 { + return "", nil, fmt.Errorf("unable to derive encryption algorithm") + } + + if payload[0] != encryptionAlgorithmDelimiter { + return aesCfb, payload, nil // backwards compatibility + } + + payload = payload[1:] + algDelim := bytes.Index(payload, []byte{encryptionAlgorithmDelimiter}) + if algDelim == -1 { + return aesCfb, payload, nil // backwards compatibility + } + + algB64 := payload[:algDelim] + payload = payload[algDelim+1:] + + alg := make([]byte, base64.RawStdEncoding.DecodedLen(len(algB64))) + + _, err := base64.RawStdEncoding.Decode(alg, algB64) + if err != nil { + return "", nil, err + } + + return string(alg), payload, nil +} + +func decryptGCM(block cipher.Block, payload []byte) ([]byte, error) { + gcm, err := cipher.NewGCM(block) + if err != nil { + return nil, err + } + + nonce := payload[saltLength : saltLength+gcm.NonceSize()] + ciphertext := payload[saltLength+gcm.NonceSize():] + return gcm.Open(nil, nonce, ciphertext, nil) +} + +func decryptCFB(block cipher.Block, payload []byte) ([]byte, error) { + // The IV needs to be unique, but not secure. Therefore it's common to + // include it at the beginning of the ciphertext. + if len(payload) < aes.BlockSize { + return nil, errors.New("payload too short") + } + + iv := payload[saltLength : saltLength+aes.BlockSize] + payload = payload[saltLength+aes.BlockSize:] + payloadDst := make([]byte, len(payload)) + + stream := cipher.NewCFBDecrypter(block, iv) + + // XORKeyStream can work in-place if the two arguments are the same. + stream.XORKeyStream(payloadDst, payload) + return payloadDst, nil +} + +// Encrypt encrypts a payload with a given secret. +// DEPRECATED. Do not use it. +// Use secrets.Service instead. +func Encrypt(payload []byte, secret string) ([]byte, error) { + salt, err := GetRandomString(saltLength) + if err != nil { + return nil, err + } + + key, err := encryptionKeyToBytes(secret, salt) + if err != nil { + return nil, err + } + block, err := aes.NewCipher(key) + if err != nil { + return nil, err + } + + // The IV needs to be unique, but not secure. Therefore it's common to + // include it at the beginning of the ciphertext. + ciphertext := make([]byte, saltLength+aes.BlockSize+len(payload)) + copy(ciphertext[:saltLength], salt) + iv := ciphertext[saltLength : saltLength+aes.BlockSize] + if _, err := io.ReadFull(rand.Reader, iv); err != nil { + return nil, err + } + + stream := cipher.NewCFBEncrypter(block, iv) + stream.XORKeyStream(ciphertext[saltLength+aes.BlockSize:], payload) + + return ciphertext, nil +} + +// Key needs to be 32bytes +func encryptionKeyToBytes(secret, salt string) ([]byte, error) { + return pbkdf2.Key([]byte(secret), []byte(salt), 10000, 32, sha256.New), nil +} diff --git a/pkg/util/encryption_test.go b/pkg/util/encryption_test.go new file mode 100644 index 0000000..48f6d7f --- /dev/null +++ b/pkg/util/encryption_test.go @@ -0,0 +1,49 @@ +package util + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestEncryption(t *testing.T) { + t.Run("getting encryption key", func(t *testing.T) { + key, err := encryptionKeyToBytes("secret", "salt") + require.NoError(t, err) + assert.Len(t, key, 32) + + key, err = encryptionKeyToBytes("a very long secret key that is larger then 32bytes", "salt") + require.NoError(t, err) + assert.Len(t, key, 32) + }) + + t.Run("decrypting basic payload", func(t *testing.T) { + encrypted, err := Encrypt([]byte("grafana"), "1234") + require.NoError(t, err) + + decrypted, err := Decrypt(encrypted, "1234") + require.NoError(t, err) + + assert.Equal(t, []byte("grafana"), decrypted) + }) + + t.Run("decrypting empty payload should fail", func(t *testing.T) { + _, err := Decrypt([]byte(""), "1234") + require.Error(t, err) + + assert.Equal(t, "unable to derive encryption algorithm", err.Error()) + }) + + t.Run("decrypting secrets with algorithm metadata", func(t *testing.T) { + // Slice of bytes that corresponds to the following legacy ciphertext: + // - 'my very secret secret key' as a payload + // - '1234' as a secret + // - 'aes-cfb' as an encryption algorithm + // Has algorithm prefix + encrypted := []byte{0x2a, 0x59, 0x57, 0x56, 0x7a, 0x4c, 0x57, 0x4e, 0x6d, 0x59, 0x67, 0x2a, 0x7a, 0x35, 0x64, 0x57, 0x64, 0x37, 0x6b, 0x38, 0x77, 0x9a, 0xda, 0x7a, 0x1a, 0x24, 0x42, 0x22, 0x5f, 0x3d, 0x2e, 0xf, 0xd2, 0xad, 0x53, 0xa6, 0x69, 0x61, 0x5a, 0xe1, 0x9c, 0xc3, 0xda, 0x13, 0x80, 0xdc, 0x3e, 0x87, 0x49, 0xbf, 0xe7, 0x2d, 0xc1, 0x8f, 0x48, 0x26, 0x45, 0xe8, 0x1b, 0xe7, 0x51} + decrypted, err := Decrypt(encrypted, "1234") + require.NoError(t, err) + assert.Equal(t, "my very secret secret key", string(decrypted)) + }) +} diff --git a/pkg/util/errors.go b/pkg/util/errors.go new file mode 100644 index 0000000..0c730d5 --- /dev/null +++ b/pkg/util/errors.go @@ -0,0 +1,21 @@ +package util + +import ( + "database/sql" + "github.com/pkg/errors" + "strings" +) + +func FilterMysqlNilErr(err error) bool { + if err != nil && !errors.Is(err, sql.ErrNoRows) { + return true + } + return false +} + +func IsMysqlRepeatError(err error) bool { + if err != nil && strings.Contains(err.Error(), "Error 1062") { + return true + } + return false +} diff --git a/pkg/util/excel.go b/pkg/util/excel.go new file mode 100644 index 0000000..3844cfd --- /dev/null +++ b/pkg/util/excel.go @@ -0,0 +1,70 @@ +package util + +import ( + "github.com/360EntSecGroup-Skylar/excelize" + "strconv" +) + +// maxCharCount 最多26个字符A-Z +const maxCharCount = 26 + +// ExportExcel 导出Excel文件 +// sheetName 工作表名称, 注意这里不要取sheet1这种名字,否则导致文件打开时发生部分错误。 +// headers 列名切片, 表头 +// rows 数据切片,是一个二维数组 +func ExportExcel(sheetName string, headers []string, rows [][]interface{}) (*excelize.File, error) { + f := excelize.NewFile() + sheetIndex := f.NewSheet(sheetName) + maxColumnRowNameLen := 1 + len(strconv.Itoa(len(rows))) + columnCount := len(headers) + if columnCount > maxCharCount { + maxColumnRowNameLen++ + } else if columnCount > maxCharCount*maxCharCount { + maxColumnRowNameLen += 2 + } + columnNames := make([][]byte, 0, columnCount) + for i, header := range headers { + columnName := getColumnName(i, maxColumnRowNameLen) + columnNames = append(columnNames, columnName) + // 初始化excel表头,这里的index从1开始要注意 + curColumnName := getColumnRowName(columnName, 1) + f.SetCellValue(sheetName, curColumnName, header) + + } + for rowIndex, row := range rows { + for columnIndex, columnName := range columnNames { + // 从第二行开始 + f.SetCellValue(sheetName, getColumnRowName(columnName, rowIndex+2), row[columnIndex]) + } + } + f.SetActiveSheet(sheetIndex) + return f, nil +} + +// getColumnName 生成列名 +// Excel的列名规则是从A-Z往后排;超过Z以后用两个字母表示,比如AA,AB,AC;两个字母不够以后用三个字母表示,比如AAA,AAB,AAC +// 这里做数字到列名的映射:0 -> A, 1 -> B, 2 -> C +// maxColumnRowNameLen 表示名称框的最大长度,假设数据是10行,1000列,则最后一个名称框是J1000(如果有表头,则是J1001),是4位 +// 这里根据 maxColumnRowNameLen 生成切片,后面生成名称框的时候可以复用这个切片,而无需扩容 +func getColumnName(column, maxColumnRowNameLen int) []byte { + const A = 'A' + if column < maxCharCount { + // 第一次就分配好切片的容量 + slice := make([]byte, 0, maxColumnRowNameLen) + return append(slice, byte(A+column)) + } else { + // 递归生成类似AA,AB,AAA,AAB这种形式的列名 + return append(getColumnName(column/maxCharCount-1, maxColumnRowNameLen), byte(A+column%maxCharCount)) + } +} + +// getColumnRowName 生成名称框 +// Excel的名称框是用A1,A2,B1,B2来表示的,这里需要传入前一步生成的列名切片,然后直接加上行索引来生成名称框,就无需每次分配内存 +func getColumnRowName(columnName []byte, rowIndex int) (columnRowName string) { + l := len(columnName) + columnName = strconv.AppendInt(columnName, int64(rowIndex), 10) + columnRowName = string(columnName) + // 将列名恢复回去 + columnName = columnName[:l] + return +} diff --git a/pkg/util/exec.go b/pkg/util/exec.go new file mode 100644 index 0000000..7ce1a71 --- /dev/null +++ b/pkg/util/exec.go @@ -0,0 +1,22 @@ +package util + +import ( + "log" + "os/exec" + "runtime" + "syscall" +) + +func OpenWinBrowser(uri string) error { + switch runtime.GOOS { + case "windows": + cmd := exec.Command(`cmd`, `/c`, `start`, uri) + cmd.SysProcAttr = &syscall.SysProcAttr{} + err := cmd.Start() + if err != nil { + log.Println(err) + return err + } + } + return nil +} diff --git a/pkg/util/exnet.go b/pkg/util/exnet.go new file mode 100644 index 0000000..342e3c4 --- /dev/null +++ b/pkg/util/exnet.go @@ -0,0 +1,138 @@ +package util + +import ( + "github.com/pkg/errors" + "math" + "net" + "net/http" + "strings" +) + +// HasLocalIPddr 检测 IP 地址字符串是否是内网地址 +func HasLocalIPddr(ip string) bool { + return HasLocalIP(net.ParseIP(ip)) +} + +// HasLocalIP 检测 IP 地址是否是内网地址 +// 通过直接对比ip段范围效率更高,详见:https://github.com/thinkeridea/go-extend/issues/2 +func HasLocalIP(ip net.IP) bool { + if ip.IsLoopback() { + return true + } + + ip4 := ip.To4() + if ip4 == nil { + return false + } + + return ip4[0] == 10 || // 10.0.0.0/8 + (ip4[0] == 172 && ip4[1] >= 16 && ip4[1] <= 31) || // 172.16.0.0/12 + (ip4[0] == 169 && ip4[1] == 254) || // 169.254.0.0/16 + (ip4[0] == 192 && ip4[1] == 168) // 192.168.0.0/16 +} + +// ClientIP 尽最大努力实现获取客户端 IP 的算法。 +// 解析 X-Real-IP 和 X-Forwarded-For 以便于反向代理(nginx 或 haproxy)可以正常工作。 +func ClientIP(r *http.Request) string { + xForwardedFor := r.Header.Get("X-Forwarded-For") + ip := strings.TrimSpace(strings.Split(xForwardedFor, ",")[0]) + if ip != "" { + return ip + } + + ip = strings.TrimSpace(r.Header.Get("X-Real-Ip")) + if ip != "" { + return ip + } + + if ip, _, err := net.SplitHostPort(strings.TrimSpace(r.RemoteAddr)); err == nil { + return ip + } + + return "" +} + +// ClientPublicIP 尽最大努力实现获取客户端公网 IP 的算法。 +// 解析 X-Real-IP 和 X-Forwarded-For 以便于反向代理(nginx 或 haproxy)可以正常工作。 +func ClientPublicIP(r *http.Request) string { + var ip string + var ipArr = strings.Split(r.Header.Get("X-Forwarded-For"), ",") + for i, _ := range ipArr { + ip = strings.TrimSpace(ipArr[i]) + if ip != "" && !HasLocalIPddr(ip) { + return ip + } + } + + ip = strings.TrimSpace(r.Header.Get("X-Real-Ip")) + if ip != "" && !HasLocalIPddr(ip) { + return ip + } + + if ip, _, err := net.SplitHostPort(strings.TrimSpace(r.RemoteAddr)); err == nil { + if !HasLocalIPddr(ip) { + return ip + } + } + + return "" +} + +// RemoteIP 通过 RemoteAddr 获取 IP 地址, 只是一个快速解析方法。 +func RemoteIP(r *http.Request) string { + if ip, _, err := net.SplitHostPort(strings.TrimSpace(r.RemoteAddr)); err == nil { + return ip + } + + return "" +} + +// IPString2Long 把ip字符串转为数值 +func IPString2Long(ip string) (uint, error) { + b := net.ParseIP(ip).To4() + if b == nil { + return 0, errors.New("invalid ipv4 format") + } + + return uint(b[3]) | uint(b[2])<<8 | uint(b[1])<<16 | uint(b[0])<<24, nil +} + +// Long2IPString 把数值转为ip字符串 +func Long2IPString(i uint) (string, error) { + if i > math.MaxUint32 { + return "", errors.New("beyond the scope of ipv4") + } + + ip := make(net.IP, net.IPv4len) + ip[0] = byte(i >> 24) + ip[1] = byte(i >> 16) + ip[2] = byte(i >> 8) + ip[3] = byte(i) + + return ip.String(), nil +} + +// IP2Long 把net.IP转为数值 +func IP2Long(ip net.IP) (uint, error) { + b := ip.To4() + if b == nil { + return 0, errors.New("invalid ipv4 format") + } + + return uint(b[3]) | uint(b[2])<<8 | uint(b[1])<<16 | uint(b[0])<<24, nil +} + +// Long2IP 把数值转为net.IP +func Long2IP(i uint) (net.IP, error) { + if i > math.MaxUint32 { + return nil, errors.New("beyond the scope of ipv4") + } + + ip := make(net.IP, net.IPv4len) + ip[0] = byte(i >> 24) + ip[1] = byte(i >> 16) + ip[2] = byte(i >> 8) + ip[3] = byte(i) + + return ip, nil +} diff --git a/pkg/util/filepath.go b/pkg/util/filepath.go new file mode 100644 index 0000000..fcc6ecd --- /dev/null +++ b/pkg/util/filepath.go @@ -0,0 +1,188 @@ +package util + +import ( + "fmt" + "github.com/pkg/errors" + "hash/crc32" + "io" + "os" + "path/filepath" + "strings" +) + +// ErrWalkSkipDir is the Error returned when we want to skip descending into a directory +var ErrWalkSkipDir = errors.New("skip this directory") + +// WalkFunc is a callback function called for each path as a directory is walked +// If resolvedPath != "", then we are following symbolic links. +type WalkFunc func(resolvedPath string, info os.FileInfo, err error) error + +// Walk walks a path, optionally following symbolic links, and for each path, +// it calls the walkFn passed. +// +// It is similar to filepath.Walk, except that it supports symbolic links and +// can detect infinite loops while following sym links. +// It solves the issue where your WalkFunc needs a path relative to the symbolic link +// (resolving links within walkfunc loses the path to the symbolic link for each traversal). +func Walk(path string, followSymlinks bool, detectSymlinkInfiniteLoop bool, walkFn WalkFunc) error { + info, err := os.Lstat(path) + if err != nil { + return err + } + var symlinkPathsFollowed map[string]bool + var resolvedPath string + if followSymlinks { + resolvedPath = path + if detectSymlinkInfiniteLoop { + symlinkPathsFollowed = make(map[string]bool, 8) + } + } + return walk(path, info, resolvedPath, symlinkPathsFollowed, walkFn) +} + +// walk walks the path. It is a helper/sibling function to Walk. +// It takes a resolvedPath into consideration. This way, paths being walked are +// always relative to the path argument, even if symbolic links were resolved). +// +// If resolvedPath is "", then we are not following symbolic links. +// If symlinkPathsFollowed is not nil, then we need to detect infinite loop. +func walk(path string, info os.FileInfo, resolvedPath string, symlinkPathsFollowed map[string]bool, walkFn WalkFunc) error { + if info == nil { + return errors.New("walk: Nil FileInfo passed") + } + err := walkFn(resolvedPath, info, nil) + if err != nil { + if info.IsDir() && errors.Is(err, ErrWalkSkipDir) { + err = nil + } + return err + } + + if resolvedPath != "" && info.Mode()&os.ModeSymlink == os.ModeSymlink { + // We only want to lstat on directories. If this entry is a symbolic link to a file, no need to recurse. + statInfo, err := os.Stat(resolvedPath) + if err != nil { + return err + } + if !statInfo.IsDir() { + return nil + } + + path2, err := filepath.EvalSymlinks(resolvedPath) + if err != nil { + return err + } + // vout("SymLink Path: %v, links to: %v", resolvedPath, path2) + if symlinkPathsFollowed != nil { + if _, ok := symlinkPathsFollowed[path2]; ok { + errMsg := "potential symLink infinite loop, path: %v, link to: %v" + return fmt.Errorf(errMsg, resolvedPath, path2) + } + symlinkPathsFollowed[path2] = true + } + info2, err := os.Lstat(path2) + if err != nil { + return err + } + return walk(path, info2, path2, symlinkPathsFollowed, walkFn) + } else if info.IsDir() { + list, err := os.ReadDir(path) + if err != nil { + return walkFn(resolvedPath, info, err) + } + var subFiles = make([]subFile, 0) + for _, file := range list { + path2 := filepath.Join(path, file.Name()) + var resolvedPath2 string + if resolvedPath != "" { + resolvedPath2 = filepath.Join(resolvedPath, file.Name()) + } + fileInfo, err := file.Info() + if err != nil { + return fmt.Errorf("unable to read file info: %v, path: %v", file.Name(), path2) + } + + subFiles = append(subFiles, subFile{path: path2, resolvedPath: resolvedPath2, fileInfo: fileInfo}) + } + + if containsDistFolder(subFiles) { + err := walk( + filepath.Join(path, "dist"), + info, + filepath.Join(resolvedPath, "dist"), + symlinkPathsFollowed, + walkFn) + + if err != nil { + return err + } + } else { + for _, p := range subFiles { + err = walk(p.path, p.fileInfo, p.resolvedPath, symlinkPathsFollowed, walkFn) + + if err != nil { + return err + } + } + } + + return nil + } + return nil +} + +type subFile struct { + path, resolvedPath string + fileInfo os.FileInfo +} + +func containsDistFolder(subFiles []subFile) bool { + for _, p := range subFiles { + if p.fileInfo.IsDir() && p.fileInfo.Name() == "dist" { + return true + } + } + + return false +} + +// CleanRelativePath returns the shortest path name equivalent to path +// by purely lexical processing. It make sure the provided path is rooted +// and then uses filepath.Clean and filepath.Rel to make sure the path +// doesn't include any separators or elements that shouldn't be there +// like ., .., //. +func CleanRelativePath(path string) (string, error) { + cleanPath := filepath.Clean(filepath.Join("/", path)) + rel, err := filepath.Rel("/", cleanPath) + if err != nil { + // slash is prepended above therefore this is not expected to fail + return "", err + } + + return rel, nil +} + +func GetWithoutExtFileName(fileName string) string { + baseName := filepath.Base(fileName) + + // 获取没有后缀的文件名 + withoutExtension := strings.TrimSuffix(baseName, filepath.Ext(baseName)) + + return withoutExtension +} + +// FileCRC32 计算并返回指定文件的 CRC32 校验和 +func FileCRC32(filePath string) (uint32, error) { + file, err := os.Open(filePath) + if err != nil { + return 0, err + } + defer file.Close() + + hash := crc32.New(crc32.IEEETable) + if _, err := io.Copy(hash, file); err != nil { + return 0, err + } + + return hash.Sum32(), nil +} diff --git a/pkg/util/filepath_test.go b/pkg/util/filepath_test.go new file mode 100644 index 0000000..38116c5 --- /dev/null +++ b/pkg/util/filepath_test.go @@ -0,0 +1,37 @@ +package util + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestCleanRelativePath(t *testing.T) { + testcases := []struct { + input string + expectedPath string + }{ + { + input: "", + expectedPath: ".", + }, + { + input: "/test/test.txt", + expectedPath: "test/test.txt", + }, + { + input: "../../test/test.txt", + expectedPath: "test/test.txt", + }, + { + input: "./../test/test.txt", + expectedPath: "test/test.txt", + }, + } + + for _, tt := range testcases { + path, err := CleanRelativePath(tt.input) + assert.NoError(t, err) + assert.Equal(t, tt.expectedPath, path) + } +} diff --git a/pkg/util/gzip.go b/pkg/util/gzip.go new file mode 100644 index 0000000..22742e3 --- /dev/null +++ b/pkg/util/gzip.go @@ -0,0 +1,47 @@ +package util + +import ( + "bytes" + "compress/gzip" + "io/ioutil" +) + +func GzipCompressByte(data []byte) ([]byte, error) { + buf := bytes.NewBuffer(nil) + gzW := gzip.NewWriter(buf) + _, err := gzW.Write(data) + if err != nil { + return nil, err + } + gzW.Close() + return buf.Bytes(), err +} + +func GzipCompress(data string) ([]byte, error) { + buf := bytes.NewBuffer(nil) + gzW := gzip.NewWriter(buf) + _, err := gzW.Write(Str2bytes(data)) + if err != nil { + return nil, err + } + gzW.Close() + return buf.Bytes(), err +} + +func GzipUnCompress(data []byte) (string, error) { + gzR, err := gzip.NewReader(bytes.NewReader(data)) + if err != nil { + return "", err + } + b, err := ioutil.ReadAll(gzR) + return Bytes2str(b), err +} + +func GzipUnCompressByte(data []byte) ([]byte, error) { + gzR, err := gzip.NewReader(bytes.NewReader(data)) + if err != nil { + return nil, err + } + b, err := ioutil.ReadAll(gzR) + return b, err +} diff --git a/pkg/util/hash.go b/pkg/util/hash.go new file mode 100644 index 0000000..daf640a --- /dev/null +++ b/pkg/util/hash.go @@ -0,0 +1,130 @@ +package util + +import ( + "bytes" + "crypto" + "crypto/aes" + "crypto/cipher" + "crypto/hmac" + "crypto/md5" + "crypto/sha1" + "crypto/sha256" + "encoding/base64" + "encoding/hex" + "fmt" +) + +// Hash 散列函数 返回空值则为错误 +func Hash(ht crypto.Hash, b []byte) []byte { + switch ht { + case crypto.MD5: + h := md5.New() + h.Write(b) + return h.Sum(nil) + case crypto.SHA1: + case crypto.SHA256: + } + return nil +} + +// HashHex can hash and encode to string +func HashHex(ht crypto.Hash, b []byte) string { + return hex.EncodeToString(Hash(ht, b)) +} + +// MD5Hash md5 +func MD5Hash(b []byte) []byte { + h := md5.New() + h.Write(b) + return h.Sum(nil) +} + +// MD5HexHash md5 and encode to string +func MD5HexHash(b []byte) string { + h := md5.New() + h.Write(b) + return hex.EncodeToString(h.Sum(nil)) +} + +// SHA256HexHash sha256 and encode to string +func SHA256HexHash(b []byte) string { + h := sha256.New() + h.Write(b) + return hex.EncodeToString(h.Sum(nil)) +} + +// SHA1HexHash sha1 and encode to string +func SHA1HexHash(b []byte) string { + h := sha1.New() + h.Write(b) + return hex.EncodeToString(h.Sum(nil)) +} + +// HMACSHA1Hash hmac-sha1 +func HMACSHA1Hash(src, key []byte) []byte { + h := hmac.New(sha1.New, key) + h.Write(src) + return h.Sum(nil) +} + +// HMACSHA1HexHash hmac-sha1 and encode to string +func HMACSHA1HexHash(src, key []byte) string { + h := hmac.New(sha1.New, key) + h.Write(src) + return hex.EncodeToString(h.Sum(nil)) +} + +func HmacSha256(data string, secret string) string { + h := hmac.New(sha256.New, []byte(secret)) + h.Write([]byte(data)) + return hex.EncodeToString(h.Sum(nil)) +} + +func PwdEncode(pwd string, key string) string { + strbytes := []byte(fmt.Sprintf("%s:%s", pwd, key)) + encoded := base64.StdEncoding.EncodeToString(strbytes) + return encoded +} + +func PwdDecode(pwd string, key string) (string, error) { + decoded, err := base64.StdEncoding.DecodeString(fmt.Sprintf("%s:%s", pwd, key)) + if err != nil { + return "", nil + } + return string(decoded), nil +} + +// =================== CBC ====================== +func AesEncryptCBC(origData []byte, key []byte) (encrypted []byte) { + // 分组秘钥 + // NewCipher该函数限制了输入k的长度必须为16, 24或者32 + block, _ := aes.NewCipher(key) + blockSize := block.BlockSize() // 获取秘钥块的长度 + origData = pkcs5Padding(origData, blockSize) // 补全码 + blockMode := cipher.NewCBCEncrypter(block, key[:blockSize]) // 加密模式 + encrypted = make([]byte, len(origData)) // 创建数组 + blockMode.CryptBlocks(encrypted, origData) // 加密 + return encrypted +} + +func AesDecryptCBC(encrypted []byte, key []byte) (decrypted []byte) { + block, _ := aes.NewCipher(key) // 分组秘钥 + blockSize := block.BlockSize() // 获取秘钥块的长度 + blockMode := cipher.NewCBCDecrypter(block, key[:blockSize]) // 加密模式 + decrypted = make([]byte, len(encrypted)) // 创建数组 + blockMode.CryptBlocks(decrypted, encrypted) // 解密 + decrypted = pkcs5UnPadding(decrypted) // 去除补全码 + return decrypted +} + +func pkcs5Padding(ciphertext []byte, blockSize int) []byte { + padding := blockSize - len(ciphertext)%blockSize + padtext := bytes.Repeat([]byte{byte(padding)}, padding) + return append(ciphertext, padtext...) +} + +func pkcs5UnPadding(origData []byte) []byte { + length := len(origData) + unpadding := int(origData[length-1]) + return origData[:(length - unpadding)] +} diff --git a/pkg/util/http.go b/pkg/util/http.go new file mode 100644 index 0000000..b4853a0 --- /dev/null +++ b/pkg/util/http.go @@ -0,0 +1,455 @@ +package util + +import ( + "bytes" + "fmt" + "github.com/gin-gonic/gin" + "github.com/goccy/go-json" + "github.com/pkg/errors" + "io" + "io/ioutil" + "net" + "net/http" + "net/url" + "os" + "path" + "path/filepath" + "regexp" + "strconv" + "strings" + "time" +) + +func GetIp(r *http.Request) string { + // var r *http.Request + ip := ClientPublicIP(r) + if ip == "" { + ip = ClientIP(r) + } + return ip +} + +// DoURL 请求URL并且解析JSON格式的返回数据 +func DoURL(method, url string, body []byte) ([]byte, error) { + req, err := http.NewRequest(method, url, bytes.NewBuffer(body)) + if err != nil { + return nil, err + } + + resp, err := (&http.Client{}).Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + return ioutil.ReadAll(resp.Body) +} + +// GetURL 请求URL +func GetURL(URL string) ([]byte, error) { + resp, err := http.Get(URL) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + return ioutil.ReadAll(resp.Body) +} + +// GetValueURL 请求URL 附带参数 +func GetValueURL(URL string, params url.Values) ([]byte, error) { + if params == nil { + return GetURL(URL) + } + resp, err := http.Get(fmt.Sprint(URL, "?", params.Encode())) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + return ioutil.ReadAll(resp.Body) +} + +// GetURLReceiveJSON GET请求 自动解析JSON +func GetURLReceiveJSON(URL string, params url.Values, receive interface{}) error { + body, err := GetValueURL(URL, params) + if err != nil { + return err + } + + err = json.Unmarshal(body, receive) + if err != nil { + return fmt.Errorf("json.Unmarshal failed: %s, %v", body, err) + } + return nil +} + +// PostURL 请求URL +func PostURL(URL string, params url.Values) ([]byte, error) { + resp, err := http.PostForm(URL, params) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + return ioutil.ReadAll(resp.Body) +} + +// 检查http请求中是否包含所需参数 +// Deprecated: 使用Checks.logNil代替 +func CheckParam(hr *http.Request, args ...string) string { + if strings.ToUpper(hr.Method) == "GET" { + for _, val := range args { + rs := hr.FormValue(val) + if StringIsEmpty(rs) { + return val + } + } + return "" + } else if strings.ToUpper(hr.Method) == "POST" { //post + for _, val := range args { + + rs := hr.PostFormValue(val) + if StringIsEmpty(rs) { + return val + } + } + return "" + } else { + return hr.Method + } +} + +// PostURLReceiveJSON POST请求 自动解析JSON +func PostURLReceiveJSON(URL string, params url.Values, receive interface{}) error { + body, err := PostURL(URL, params) + if err != nil { + return err + } + + err = json.Unmarshal(body, receive) + if err != nil { + return fmt.Errorf("body:%v,err:%v", string(body), err) + } + return nil +} + +// PostURLReceiveJSON POST请求 自动解析JSON +func PostMapReceiveJSON(URL string, maps map[string]string, receive interface{}) error { + params := url.Values{} + for k, v := range maps { + params.Set(k, v) + } + body, err := PostURL(URL, params) + if err != nil { + return err + } + + err = json.Unmarshal(body, receive) + if err != nil { + return fmt.Errorf("body:%v,err:%v", string(body), err) + } + return nil +} + +// PostJSON POST请求 BODY为JSON格式 ContentType=application/json +func PostJSON(URL string, v interface{}) ([]byte, error) { + + b, err := json.Marshal(v) + if err != nil { + return nil, err + } + resp, err := http.Post(URL, "application/json", bytes.NewReader(b)) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + return ioutil.ReadAll(resp.Body) +} + +// PostJSON POST请求 BODY为JSON格式 ContentType=application/json +func GetJSON(URL string, v interface{}) ([]byte, error) { + + b, err := json.Marshal(v) + if err != nil { + return nil, err + } + client := &http.Client{} + reqest, err := http.NewRequest("GET", URL, bytes.NewReader(b)) + reqest.Header.Add("Content-Type", "application/json") + + resp, err := client.Do(reqest) + //resp, err := http.Post(URL, "application/json", bytes.NewReader(b)) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + return ioutil.ReadAll(resp.Body) +} + +func GetURLWithHeader(URL string, header map[string]string) ([]byte, error) { + + client := &http.Client{} + client.Timeout = 3 * time.Minute + reqest, err := http.NewRequest("GET", URL, nil) + + for k, v := range header { + reqest.Header.Add(k, v) + } + resp, err := client.Do(reqest) + //resp, err := http.Post(URL, "application/json", bytes.NewReader(b)) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + return ioutil.ReadAll(resp.Body) +} + +// PostJSONReceiveJSON POST请求 BODY为JSON格式 ContentType=application/json 自动解析JSON +func PostJSONReceiveJSON(URL string, send, receive interface{}) error { + body, err := PostJSON(URL, send) + if err != nil { + return err + } + + err = json.Unmarshal(body, receive) + if err != nil { + return fmt.Errorf("error:%v,body{%s}", err, body) + } + return nil +} + +// PostToJSON POST请求 BODY为json格式 +// Deprecated: Please use PostJSON to replace +func PostToJSON(URL string, v interface{}) ([]byte, error) { + + b, err := json.Marshal(v) + if err != nil { + return nil, err + } + req, err := http.NewRequest("POST", URL, bytes.NewBuffer(b)) + if err != nil { + return nil, err + } + resp, err := (&http.Client{}).Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + return ioutil.ReadAll(resp.Body) +} + +// CheckNotNil 检查HTTP参数是否为空 +func CheckNotNil(r *http.Request, args ...string) error { + if args == nil || r == nil { + return nil + } + + switch r.Method { + case "GET": + query := r.URL.Query() + for _, v := range args { + if strings.TrimSpace(query.Get(v)) == "" { + return fmt.Errorf("param(%s) is invalid", v) + } + } + case "POST": + for _, v := range args { + if strings.TrimSpace(r.PostFormValue(v)) == "" { + return fmt.Errorf("param(%s) is invalid", v) + } + } + default: + return errors.New("r.Method is not GET or POST") + } + return nil +} + +// StringIsEmpty 判断是否有值为空或null或(null) +func StringIsEmpty(s ...string) bool { + var str string + for _, v := range s { + str = strings.TrimSpace(v) + if v == "" || strings.EqualFold(str, "(null)") || strings.EqualFold(str, "null") { + return true + } + } + return false +} + +// WriteJSON 写入json字符串 +func WriteJSON(w io.Writer, v interface{}) (int, error) { + + b, err := json.Marshal(v) + if err != nil { + return 0, err + } + return w.Write(b) +} + +// GetRemoteIP 获取IP +func GetRemoteIP(r *http.Request) string { + if r == nil { + return "" + } + var ip = strings.TrimSpace(r.Header.Get("X-Real-IP")) + if ip == "" { + ip, _, _ = net.SplitHostPort(strings.TrimSpace(r.RemoteAddr)) + } + return ip +} + +// CheckRemoteIP 验证IP +// in ips return true +func CheckRemoteIP(r *http.Request, ips ...string) bool { + if r == nil { + return false + } + var ip = GetRemoteIP(r) + for _, v := range ips { + if ip == v { + return true + } + } + return false +} + +var regIPv4 = regexp.MustCompile( + `^(((\d{1,2})|(1\d{1,2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{1,2})|(2[0-4]\d)|(25[0-5]))$`, +) + +// IsValidIPv4 验证是否为合法的ipv4 +func IsValidIPv4(ip string) bool { + return regIPv4.MatchString(ip) +} + +// FormIntDefault 获取Form参数 如果出错则返回默认值 +func FormIntDefault(r *http.Request, key string, def int) int { + i, err := strconv.Atoi(r.FormValue(key)) + if err != nil { + return def + } + return i +} + +// FormIntSliceDefault 获取Form参数 如果出错则返回默认值 +func FormIntSliceDefault(r *http.Request, key, sep string, def []int) []int { + var i int + var err error + var rlt []int + for _, v := range strings.Split(r.FormValue(key), sep) { + i, err = strconv.Atoi(v) + if err != nil { + continue + } + rlt = append(rlt, i) + } + if rlt == nil { + return def + } + return rlt +} + +// FormFileValue 快速获取表单提交的文件 +// 也用于处理同表单一起提交的信息 +func FormFileValue(r *http.Request, key string) (string, error) { + f, _, err := r.FormFile(key) + if err != nil { + return "", err + } + defer f.Close() + b, err := ioutil.ReadAll(f) + if err != nil { + return "", err + } + return string(b), nil +} + +// FormFileValues 快速获取表单提交的文件 +// 也用于处理同表单一起提交的信息 +func FormFileValues(r *http.Request, key string) ([]string, error) { + if r.MultipartForm == nil { + err := r.ParseMultipartForm(32 << 20) + if err != nil { + return nil, err + } + } + if r.MultipartForm != nil && r.MultipartForm.File != nil { + if fhs := r.MultipartForm.File[key]; len(fhs) > 0 { + var rlt = make([]string, 0, len(fhs)) + for i := range fhs { + f, err := fhs[i].Open() + if err != nil { + return nil, err + } + + b, err := ioutil.ReadAll(f) + f.Close() + if err != nil { + return nil, err + } + rlt = append(rlt, string(b)) + } + return rlt, nil + } + } + return nil, http.ErrMissingFile +} + +func GetToken(ctx *gin.Context) (token string) { + return ctx.GetHeader("X-Token") +} + +func DownloadFile(fileURL, dir string) (filename string, err error) { + // 解析 URL 获取文件名 + parsedURL, err := url.Parse(fileURL) + if err != nil { + return "", fmt.Errorf("failed to parse URL: %v", err) + } + + filename = path.Base(parsedURL.Path) + + // 创建目录,如果不存在的话 + err = os.MkdirAll(dir, os.ModePerm) + if err != nil { + return "", fmt.Errorf("failed to create directory: %v", err) + } + + // 创建目标文件的完整路径 + filePath := filepath.Join(dir, filename) + + // 创建文件 + out, err := os.Create(filePath) + if err != nil { + return "", fmt.Errorf("failed to create file: %v", err) + } + + // 获取远程文件 + resp, err := http.Get(fileURL) + if err != nil { + out.Close() + os.Remove(filePath) + return "", fmt.Errorf("failed to download file: %v", err) + } + defer resp.Body.Close() + + // 检查HTTP响应状态码 + if resp.StatusCode != http.StatusOK { + out.Close() + return "", fmt.Errorf("bad status: %s", resp.Status) + } + + // 将内容写入文件 + _, err = io.Copy(out, resp.Body) + if err != nil { + out.Close() + os.Remove(filePath) + return "", fmt.Errorf("failed to save file: %v", err) + } + out.Close() + return filename, nil +} diff --git a/pkg/util/interface.go b/pkg/util/interface.go new file mode 100644 index 0000000..67cbf20 --- /dev/null +++ b/pkg/util/interface.go @@ -0,0 +1,33 @@ +package util + +import "reflect" + +// interface{}转为 []interface{} +func CreateAnyTypeSlice(slice interface{}) ([]interface{}, bool) { + val, ok := isSlice(slice) + + if !ok { + return nil, false + } + + sliceLen := val.Len() + + out := make([]interface{}, sliceLen) + + for i := 0; i < sliceLen; i++ { + out[i] = val.Index(i).Interface() + } + + return out, true +} + +// 判断是否为slcie数据 +func isSlice(arg interface{}) (val reflect.Value, ok bool) { + val = reflect.ValueOf(arg) + + if val.Kind() == reflect.Slice { + ok = true + } + + return +} diff --git a/pkg/util/ip.go b/pkg/util/ip.go new file mode 100644 index 0000000..c7d8682 --- /dev/null +++ b/pkg/util/ip.go @@ -0,0 +1 @@ +package util diff --git a/pkg/util/ip_address.go b/pkg/util/ip_address.go new file mode 100644 index 0000000..00aa02b --- /dev/null +++ b/pkg/util/ip_address.go @@ -0,0 +1,55 @@ +package util + +import ( + "fmt" + "net" + "strings" +) + +type NetworkAddress struct { + Host string + Port string +} + +// SplitHostPortDefault splits ip address/hostname string by host and port. Defaults used if no match found +func SplitHostPortDefault(input, defaultHost, defaultPort string) (NetworkAddress, error) { + addr := NetworkAddress{ + Host: defaultHost, + Port: defaultPort, + } + if len(input) == 0 { + return addr, nil + } + + start := 0 + // Determine if IPv6 address, in which case IP address will be enclosed in square brackets + if strings.Index(input, "[") == 0 { + addrEnd := strings.LastIndex(input, "]") + if addrEnd < 0 { + // Malformed address + return addr, fmt.Errorf("malformed IPv6 address: '%s'", input) + } + + start = addrEnd + } + if strings.LastIndex(input[start:], ":") < 0 { + // There's no port section of the input + // It's still useful to call net.SplitHostPort though, since it removes IPv6 + // square brackets from the address + input = fmt.Sprintf("%s:%s", input, defaultPort) + } + + host, port, err := net.SplitHostPort(input) + if err != nil { + return addr, fmt.Errorf("net.SplitHostPort failed for '%s': %w", input, err) + } + + if len(host) > 0 { + addr.Host = host + } + if len(port) > 0 { + addr.Port = port + } + + return addr, nil +} diff --git a/pkg/util/ip_address_test.go b/pkg/util/ip_address_test.go new file mode 100644 index 0000000..6325fb1 --- /dev/null +++ b/pkg/util/ip_address_test.go @@ -0,0 +1,34 @@ +package util + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestSplitHostPortDefault_Valid(t *testing.T) { + tests := []struct { + input string + defaultHost string + defaultPort string + + host string + port string + }{ + {input: "192.168.0.140:456", defaultHost: "", defaultPort: "", host: "192.168.0.140", port: "456"}, + {input: "192.168.0.140", defaultHost: "", defaultPort: "123", host: "192.168.0.140", port: "123"}, + {input: "[::1]:456", defaultHost: "", defaultPort: "", host: "::1", port: "456"}, + {input: "[::1]", defaultHost: "", defaultPort: "123", host: "::1", port: "123"}, + {input: ":456", defaultHost: "1.2.3.4", defaultPort: "", host: "1.2.3.4", port: "456"}, + {input: "xyz.rds.amazonaws.com", defaultHost: "", defaultPort: "123", host: "xyz.rds.amazonaws.com", port: "123"}, + {input: "xyz.rds.amazonaws.com:123", defaultHost: "", defaultPort: "", host: "xyz.rds.amazonaws.com", port: "123"}, + {input: "", defaultHost: "localhost", defaultPort: "1433", host: "localhost", port: "1433"}, + } + + for _, testcase := range tests { + addr, err := SplitHostPortDefault(testcase.input, testcase.defaultHost, testcase.defaultPort) + assert.NoError(t, err) + assert.Equal(t, testcase.host, addr.Host) + assert.Equal(t, testcase.port, addr.Port) + } +} diff --git a/pkg/util/json.go b/pkg/util/json.go new file mode 100644 index 0000000..7a2ec53 --- /dev/null +++ b/pkg/util/json.go @@ -0,0 +1,4 @@ +package util + +// DynMap defines a dynamic map interface. +type DynMap map[string]interface{} diff --git a/pkg/util/map.go b/pkg/util/map.go new file mode 100644 index 0000000..3603726 --- /dev/null +++ b/pkg/util/map.go @@ -0,0 +1,3 @@ +package util + +type Map map[string]interface{} diff --git a/pkg/util/math.go b/pkg/util/math.go new file mode 100644 index 0000000..3011c07 --- /dev/null +++ b/pkg/util/math.go @@ -0,0 +1,24 @@ +package util + +import ( + "fmt" + "math" + "strconv" +) + +// MinInt returns the smaller of x or y. +func MinInt(x, y int) int { + if x > y { + return y + } + return x +} + +func Decimal(value float64) float64 { + value, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", value), 64) + if math.IsNaN(value) || math.IsInf(value, 0) { + return 0 + } + + return value +} diff --git a/pkg/util/md5.go b/pkg/util/md5.go new file mode 100644 index 0000000..99641ca --- /dev/null +++ b/pkg/util/md5.go @@ -0,0 +1,26 @@ +package util + +import ( + "crypto/md5" + "encoding/hex" + "io" + "strings" +) + +// Md5Sum calculates the md5sum of a stream +func Md5Sum(reader io.Reader) (string, error) { + var returnMD5String string + hash := md5.New() + if _, err := io.Copy(hash, reader); err != nil { + return returnMD5String, err + } + hashInBytes := hash.Sum(nil)[:16] + returnMD5String = hex.EncodeToString(hashInBytes) + return returnMD5String, nil +} + +// Md5SumString calculates the md5sum of a string +func Md5SumString(input string) (string, error) { + buffer := strings.NewReader(input) + return Md5Sum(buffer) +} diff --git a/pkg/util/md5_test.go b/pkg/util/md5_test.go new file mode 100644 index 0000000..43c685b --- /dev/null +++ b/pkg/util/md5_test.go @@ -0,0 +1,17 @@ +package util + +import "testing" + +func TestMd5Sum(t *testing.T) { + input := "don't hash passwords with md5" + + have, err := Md5SumString(input) + if err != nil { + t.Fatal("expected err to be nil") + } + + want := "dd1f7fdb3466c0d09c2e839d1f1530f8" + if have != want { + t.Fatalf("expected: %s got: %s", want, have) + } +} diff --git a/pkg/util/proxyutil/proxyutil.go b/pkg/util/proxyutil/proxyutil.go new file mode 100644 index 0000000..e2015f9 --- /dev/null +++ b/pkg/util/proxyutil/proxyutil.go @@ -0,0 +1,44 @@ +package proxyutil + +import ( + "net" + "net/http" +) + +func PrepareProxyRequest(req *http.Request) { + req.Header.Del("X-Forwarded-Host") + req.Header.Del("X-Forwarded-Port") + req.Header.Del("X-Forwarded-Proto") + + if req.RemoteAddr != "" { + remoteAddr, _, err := net.SplitHostPort(req.RemoteAddr) + if err != nil { + remoteAddr = req.RemoteAddr + } + if req.Header.Get("X-Forwarded-For") != "" { + req.Header.Set("X-Forwarded-For", req.Header.Get("X-Forwarded-For")+", "+remoteAddr) + } else { + req.Header.Set("X-Forwarded-For", remoteAddr) + } + } +} + +func ClearCookieHeader(req *http.Request, keepCookiesNames []string) { + var keepCookies []*http.Cookie + for _, c := range req.Cookies() { + for _, v := range keepCookiesNames { + if c.Name == v { + keepCookies = append(keepCookies, c) + } + } + } + + req.Header.Del("Cookie") + for _, c := range keepCookies { + req.AddCookie(c) + } +} + +func SetProxyResponseHeaders(header http.Header) { + header.Set("Content-Security-Policy", "sandbox") +} diff --git a/pkg/util/proxyutil/reverse_proxy.go b/pkg/util/proxyutil/reverse_proxy.go new file mode 100644 index 0000000..f6db390 --- /dev/null +++ b/pkg/util/proxyutil/reverse_proxy.go @@ -0,0 +1,146 @@ +package proxyutil + +import ( + "context" + "errors" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + + "log" + "net/http" + "net/http/httputil" + "strings" + "time" +) + +// StatusClientClosedRequest A non-standard status code introduced by nginx +// for the case when a client closes the connection while nginx is processing +// the request. +// https://httpstatus.in/499/ +const StatusClientClosedRequest = 499 + +// ReverseProxyOption reverse proxy option to configure a httputil.ReverseProxy. +type ReverseProxyOption func(*httputil.ReverseProxy) + +// NewReverseProxy creates a new httputil.ReverseProxy with sane default configuration. +func NewReverseProxy(logger *logger.AppLogger, director func(*http.Request), opts ...ReverseProxyOption) *httputil.ReverseProxy { + if logger == nil { + panic("logger cannot be nil") + } + + if director == nil { + panic("director cannot be nil") + } + + p := &httputil.ReverseProxy{ + FlushInterval: time.Millisecond * 200, + ErrorHandler: errorHandler(logger), + ErrorLog: log.New(&logWrapper{logger: logger}, "", 0), + Director: director, + } + + for _, opt := range opts { + opt(p) + } + + origDirector := p.Director + p.Director = wrapDirector(origDirector) + + if p.ModifyResponse == nil { + // nolint:bodyclose + p.ModifyResponse = modifyResponse(logger) + } else { + modResponse := p.ModifyResponse + p.ModifyResponse = func(resp *http.Response) error { + if err := modResponse(resp); err != nil { + return err + } + + // nolint:bodyclose + return modifyResponse(logger)(resp) + } + } + + return p +} + +// wrapDirector wraps a director and adds additional functionality. +func wrapDirector(d func(*http.Request)) func(req *http.Request) { + return func(req *http.Request) { + d(req) + PrepareProxyRequest(req) + + // Clear Origin and Referer to avoid CORS issues + req.Header.Del("Origin") + req.Header.Del("Referer") + } +} + +// modifyResponse enforces certain constraints on http.Response. +func modifyResponse(logger *logger.AppLogger) func(resp *http.Response) error { + return func(resp *http.Response) error { + resp.Header.Del("Set-Cookie") + SetProxyResponseHeaders(resp.Header) + return nil + } +} + +type timeoutError interface { + error + Timeout() bool +} + +// errorHandler handles any errors happening while proxying a request and enforces +// certain HTTP status based on the kind of error. +// If client cancel/close the request we return 499 StatusClientClosedRequest. +// If timeout happens while communicating with upstream server we return http.StatusGatewayTimeout. +// If any other error we return http.StatusBadGateway. +func errorHandler(logger *logger.AppLogger) func(http.ResponseWriter, *http.Request, error) { + return func(w http.ResponseWriter, r *http.Request, err error) { + if errors.Is(err, context.Canceled) { + logger.Debug("Proxy request cancelled by client") + w.WriteHeader(StatusClientClosedRequest) + return + } + + // nolint:errorlint + if timeoutErr, ok := err.(timeoutError); ok && timeoutErr.Timeout() { + logger.Sugar().Errorf("Proxy request timed out", "err", err) + w.WriteHeader(http.StatusGatewayTimeout) + return + } + + logger.Sugar().Errorf("Proxy request failed", "err", err) + w.WriteHeader(http.StatusBadGateway) + } +} + +type logWrapper struct { + logger *logger.AppLogger +} + +// Write writes log messages as bytes from proxy. +func (lw *logWrapper) Write(p []byte) (n int, err error) { + withoutNewline := strings.TrimSuffix(string(p), "\n") + lw.logger.Sugar().Errorf("Proxy request error", "error", withoutNewline) + return len(p), nil +} + +func WithTransport(transport http.RoundTripper) ReverseProxyOption { + if transport == nil { + panic("transport cannot be nil") + } + + return ReverseProxyOption(func(rp *httputil.ReverseProxy) { + rp.Transport = transport + }) +} + +func WithModifyResponse(fn func(*http.Response) error) ReverseProxyOption { + if fn == nil { + panic("fn cannot be nil") + } + + return ReverseProxyOption(func(rp *httputil.ReverseProxy) { + rp.ModifyResponse = fn + }) +} diff --git a/pkg/util/response/res.go b/pkg/util/response/res.go new file mode 100644 index 0000000..20ba2f6 --- /dev/null +++ b/pkg/util/response/res.go @@ -0,0 +1,10 @@ +package response + +import ( + "fmt" + "github.com/gin-gonic/gin" +) + +func JsonApiErr(c *gin.Context, code int, msg string, err error) { + c.JSON(code, map[string]interface{}{"code": code, "msg": fmt.Sprintf(msg, err)}) +} diff --git a/pkg/util/shortid_generator.go b/pkg/util/shortid_generator.go new file mode 100644 index 0000000..767ea1a --- /dev/null +++ b/pkg/util/shortid_generator.go @@ -0,0 +1,31 @@ +package util + +import ( + "regexp" + + "github.com/teris-io/shortid" +) + +var allowedChars = shortid.DefaultABC + +var validUIDPattern = regexp.MustCompile(`^[a-zA-Z0-9\-\_]*$`).MatchString + +func init() { + gen, _ := shortid.New(1, allowedChars, 1) + shortid.SetDefault(gen) +} + +// IsValidShortUID checks if short unique identifier contains valid characters +func IsValidShortUID(uid string) bool { + return validUIDPattern(uid) +} + +// IsShortUIDTooLong checks if short unique identifier is too long +func IsShortUIDTooLong(uid string) bool { + return len(uid) > 40 +} + +// GenerateShortUID generates a short unique identifier. +func GenerateShortUID() string { + return shortid.MustGenerate() +} diff --git a/pkg/util/shortid_generator_test.go b/pkg/util/shortid_generator_test.go new file mode 100644 index 0000000..2e0fc0c --- /dev/null +++ b/pkg/util/shortid_generator_test.go @@ -0,0 +1,45 @@ +package util + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestAllowedCharMatchesUidPattern(t *testing.T) { + for _, c := range allowedChars { + if !IsValidShortUID(string(c)) { + t.Fatalf("charset for creating new shortids contains chars not present in uid pattern") + } + } +} + +func TestIsShortUIDTooLong(t *testing.T) { + var tests = []struct { + name string + uid string + expected bool + }{ + { + name: "when the length of uid is longer than 40 chars then IsShortUIDTooLong should return true", + uid: allowedChars, + expected: true, + }, + { + name: "when the length of uid is equal too 40 chars then IsShortUIDTooLong should return false", + uid: "0123456789012345678901234567890123456789", + expected: false, + }, + { + name: "when the length of uid is shorter than 40 chars then IsShortUIDTooLong should return false", + uid: "012345678901234567890123456789012345678", + expected: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + require.Equal(t, tt.expected, IsShortUIDTooLong(tt.uid)) + }) + } +} diff --git a/pkg/util/split_email.go b/pkg/util/split_email.go new file mode 100644 index 0000000..fa53c37 --- /dev/null +++ b/pkg/util/split_email.go @@ -0,0 +1,14 @@ +package util + +import "strings" + +// SplitEmails splits addresses with a few different ways +func SplitEmails(emails string) []string { + return strings.FieldsFunc(emails, func(r rune) bool { + switch r { + case ',', ';', '\n': + return true + } + return false + }) +} diff --git a/pkg/util/split_email_test.go b/pkg/util/split_email_test.go new file mode 100644 index 0000000..4da7724 --- /dev/null +++ b/pkg/util/split_email_test.go @@ -0,0 +1,52 @@ +package util + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestSplitEmails(t *testing.T) { + testcases := []struct { + input string + expected []string + }{ + { + input: "", + expected: []string{}, + }, + { + input: "ops@grafana.org", + expected: []string{"ops@grafana.org"}, + }, + { + input: "ops@grafana.org;dev@grafana.org", + expected: []string{"ops@grafana.org", "dev@grafana.org"}, + }, + { + input: "ops@grafana.org;dev@grafana.org,", + expected: []string{"ops@grafana.org", "dev@grafana.org"}, + }, + { + input: "dev@grafana.org,ops@grafana.org", + expected: []string{"dev@grafana.org", "ops@grafana.org"}, + }, + { + input: "dev@grafana.org,ops@grafana.org,", + expected: []string{"dev@grafana.org", "ops@grafana.org"}, + }, + { + input: "dev@grafana.org\nops@grafana.org", + expected: []string{"dev@grafana.org", "ops@grafana.org"}, + }, + { + input: "dev@grafana.org\nops@grafana.org\n", + expected: []string{"dev@grafana.org", "ops@grafana.org"}, + }, + } + + for _, tt := range testcases { + emails := SplitEmails(tt.input) + assert.Equal(t, tt.expected, emails) + } +} diff --git a/pkg/util/sql.go b/pkg/util/sql.go new file mode 100644 index 0000000..b0be8f9 --- /dev/null +++ b/pkg/util/sql.go @@ -0,0 +1,23 @@ +package util + +import ( + "github.com/pkg/errors" + "github.com/xwb1989/sqlparser" +) + +func ExtractTableName(sql string) ([]string, error) { + stmt, err := sqlparser.Parse(sql) + if err != nil { + return nil, errors.WithStack(err) + } + tableNames := make([]string, 0) + err = sqlparser.Walk(func(node sqlparser.SQLNode) (kontinue bool, err error) { + switch node := node.(type) { + case sqlparser.TableName: + tableNames = append(tableNames, node.Name.CompliantName()) + } + return true, nil + }, stmt) + + return tableNames, err +} diff --git a/pkg/util/strings.go b/pkg/util/strings.go new file mode 100644 index 0000000..1cacce6 --- /dev/null +++ b/pkg/util/strings.go @@ -0,0 +1,133 @@ +package util + +import ( + "fmt" + "math" + "strings" + "time" + "unicode" +) + +// StringsFallback2 returns the first of two not empty strings. +func StringsFallback2(val1 string, val2 string) string { + return stringsFallback(val1, val2) +} + +// StringsFallback3 returns the first of three not empty strings. +func StringsFallback3(val1 string, val2 string, val3 string) string { + return stringsFallback(val1, val2, val3) +} + +func stringsFallback(vals ...string) string { + for _, v := range vals { + if v != "" { + return v + } + } + return "" +} + +// SplitString splits a string by commas or empty spaces. +func SplitString(str string) []string { + if len(str) == 0 { + return []string{} + } + + return strings.Fields(strings.ReplaceAll(str, ",", " ")) +} + +// GetAgeString returns a string representing certain time from years to minutes. +func GetAgeString(t time.Time) string { + if t.IsZero() { + return "?" + } + + sinceNow := time.Since(t) + minutes := sinceNow.Minutes() + years := int(math.Floor(minutes / 525600)) + months := int(math.Floor(minutes / 43800)) + days := int(math.Floor(minutes / 1440)) + hours := int(math.Floor(minutes / 60)) + var amount string + if years > 0 { + if years == 1 { + amount = "year" + } else { + amount = "years" + } + return fmt.Sprintf("%d %s", years, amount) + } + if months > 0 { + if months == 1 { + amount = "month" + } else { + amount = "months" + } + return fmt.Sprintf("%d %s", months, amount) + } + if days > 0 { + if days == 1 { + amount = "day" + } else { + amount = "days" + } + return fmt.Sprintf("%d %s", days, amount) + } + if hours > 0 { + if hours == 1 { + amount = "hour" + } else { + amount = "hours" + } + return fmt.Sprintf("%d %s", hours, amount) + } + if int(minutes) > 0 { + if int(minutes) == 1 { + amount = "minute" + } else { + amount = "minutes" + } + return fmt.Sprintf("%d %s", int(minutes), amount) + } + + return "< 1 minute" +} + +// ToCamelCase changes kebab case, snake case or mixed strings to camel case. See unit test for examples. +func ToCamelCase(str string) string { + var finalParts []string + parts := strings.Split(str, "_") + + for _, part := range parts { + finalParts = append(finalParts, strings.Split(part, "-")...) + } + + for index, part := range finalParts[1:] { + finalParts[index+1] = strings.Title(part) + } + + return strings.Join(finalParts, "") +} + +func Capitalize(s string) string { + if len(s) == 0 { + return s + } + r := []rune(s) + r[0] = unicode.ToUpper(r[0]) + return string(r) +} + +func ByteCountSI(b int64) string { + const unit = 1000 + if b < unit { + return fmt.Sprintf("%d B", b) + } + div, exp := int64(unit), 0 + for n := b / unit; n >= unit; n /= unit { + div *= unit + exp++ + } + return fmt.Sprintf("%.1f %cB", + float64(b)/float64(div), "kMGTPE"[exp]) +} diff --git a/pkg/util/strings_test.go b/pkg/util/strings_test.go new file mode 100644 index 0000000..efb3dbb --- /dev/null +++ b/pkg/util/strings_test.go @@ -0,0 +1,154 @@ +package util + +import ( + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +func TestStringsFallback2(t *testing.T) { + tests := []struct { + val1 string + val2 string + expected string + }{ + // testing every scenario + {"", "", ""}, + {"1", "", "1"}, + {"1", "2", "1"}, + {"", "2", "2"}, + } + for _, testcase := range tests { + assert.EqualValues(t, testcase.expected, StringsFallback2(testcase.val1, testcase.val2)) + } +} + +func TestStringsFallback3(t *testing.T) { + tests := []struct { + val1 string + val2 string + val3 string + expected string + }{ + {"", "", "", ""}, + {"1", "", "", "1"}, + {"1", "2", "", "1"}, + {"1", "2", "3", "1"}, + {"", "2", "", "2"}, + {"", "2", "3", "2"}, + {"", "", "3", "3"}, + } + for _, testcase := range tests { + assert.EqualValues(t, testcase.expected, StringsFallback3(testcase.val1, testcase.val2, testcase.val3)) + } +} + +func TestSplitString(t *testing.T) { + tests := map[string][]string{ + "": {}, + "test": {"test"}, + "test1 test2 test3": {"test1", "test2", "test3"}, + "test1,test2,test3": {"test1", "test2", "test3"}, + "test1, test2, test3": {"test1", "test2", "test3"}, + "test1 , test2 test3": {"test1", "test2", "test3"}, + } + for input, expected := range tests { + assert.EqualValues(t, expected, SplitString(input)) + } +} + +func BenchmarkSplitString(b *testing.B) { + b.Run("empty input", func(b *testing.B) { + for i := 0; i < b.N; i++ { + SplitString("") + } + }) + b.Run("single string", func(b *testing.B) { + for i := 0; i < b.N; i++ { + SplitString("test") + } + }) + b.Run("space-separated", func(b *testing.B) { + for i := 0; i < b.N; i++ { + SplitString("test1 test2 test3") + } + }) + b.Run("comma-separated", func(b *testing.B) { + for i := 0; i < b.N; i++ { + SplitString("test1,test2,test3") + } + }) + b.Run("comma-separated with spaces", func(b *testing.B) { + for i := 0; i < b.N; i++ { + SplitString("test1 , test2 test3") + } + }) + b.Run("mixed commas and spaces", func(b *testing.B) { + for i := 0; i < b.N; i++ { + SplitString("test1 , test2 test3,test4") + } + }) + b.Run("very long mixed", func(b *testing.B) { + for i := 0; i < b.N; i++ { + SplitString("test1 , test2 test3,test4, test5 test6 test7,test8 test9 test10" + + " test11 test12 test13,test14 test15 test16,test17 test18 test19,test20 test21 test22" + + " test23,test24 test25 test26,test27 test28 test29,test30 test31 test32" + + " test33,test34 test35 test36,test37 test38 test39,test40 test41 test42" + + " test43,test44 test45 test46,test47 test48 test49,test50 test51 test52" + + " test53,test54 test55 test56,test57 test58 test59,test60 test61 test62" + + " test63,test64 test65 test66,test67 test68 test69,test70 test71 test72" + + " test73,test74 test75 test76,test77 test78 test79,test80 test81 test82" + + " test83,test84 test85 test86,test87 test88 test89,test90 test91 test92" + + " test93,test94 test95 test96,test97 test98 test99,test100 ") + } + }) +} + +func TestDateAge(t *testing.T) { + assert.Equal(t, "?", GetAgeString(time.Time{})) // base case + + tests := map[time.Duration]string{ + -1 * time.Hour: "< 1 minute", // one hour in the future + 0: "< 1 minute", + 2 * time.Second: "< 1 minute", + 2 * time.Minute: "2 minutes", + 2 * time.Hour: "2 hours", + 3 * 24 * time.Hour: "3 days", + 67 * 24 * time.Hour: "2 months", + 409 * 24 * time.Hour: "1 year", + } + for elapsed, expected := range tests { + assert.Equalf( + t, + expected, + GetAgeString(time.Now().Add(-elapsed)), + "duration '%s'", + elapsed.String(), + ) + } +} + +func TestToCamelCase(t *testing.T) { + tests := map[string]string{ + "kebab-case-string": "kebabCaseString", + "snake_case_string": "snakeCaseString", + "mixed-case_string": "mixedCaseString", + "alreadyCamelCase": "alreadyCamelCase", + "": "", + } + for input, expected := range tests { + assert.Equal(t, expected, ToCamelCase(input)) + } +} + +func TestCapitalize(t *testing.T) { + tests := map[string]string{ + "properly capitalizes": "Properly capitalizes", + "Already capitalized": "Already capitalized", + "": "", + } + for input, expected := range tests { + assert.Equal(t, expected, Capitalize(input)) + } +} diff --git a/pkg/util/sys.go b/pkg/util/sys.go new file mode 100644 index 0000000..08e8e70 --- /dev/null +++ b/pkg/util/sys.go @@ -0,0 +1,16 @@ +package util + +import ( + "os" + "os/signal" + "syscall" +) + +func WaitQuit(fns ...func()) { + c := make(chan os.Signal, 1) + signal.Notify(c, os.Interrupt, syscall.SIGTERM) + <-c + for _, fn := range fns { + fn() + } +} diff --git a/pkg/util/time.go b/pkg/util/time.go new file mode 100644 index 0000000..3c968a1 --- /dev/null +++ b/pkg/util/time.go @@ -0,0 +1,75 @@ +package util + +import ( + "log" + "time" +) + +const ( + TimeFormat = "2006-01-02 15:04:05" + TimeFormat2 = "2006-01-02 15:04:00" + + TimeFormatDay = "20060102" + TimeFormatMonth = "200601" + TimeFormatMonth2 = "2006-01" + TimeFormatDay2 = "2006-01-02" + TimeFormatHour = "02号15:04" + TimeFormatDay3 = "2006/01/02" + TimeFormatDay4 = "2006.01.02_15" + TimeFormatDay5 = "2006-01-02 00:00:00" + TimeFormatDay6 = "2006年01月02日" +) + +/** + * 二个时间戳是否同一天 + * @return true 是 false 不是今天 + */ +func IsSameDay(oldDay, anotherDay int64) bool { + tm := time.Unix(oldDay, 0) + tmAnother := time.Unix(anotherDay, 0) + if tm.Format(TimeFormatDay2) == tmAnother.Format(TimeFormatDay2) { + return true + } + return false +} + +/**字符串->时间对象*/ +func Str2Time(formatTimeStr, timeFormat string) time.Time { + loc, err := time.LoadLocation("Local") + theTime, err := time.ParseInLocation(timeFormat, formatTimeStr, loc) //使用模板在对应时区转化为time.time类型 + log.Println(err, formatTimeStr, timeFormat) + return theTime +} + +/**字符串->时间对象*/ +func StrToTime(timeFormat, formatTimeStr string) time.Time { + + theTime, err := time.ParseInLocation(timeFormat, formatTimeStr, time.Local) //使用模板在对应时区转化为time.time类型 + if err != nil { + log.Println(err) + } + return theTime +} + +/**字符串->时间对象*/ +func StrToTimeHaveErr(timeFormat, formatTimeStr string) (time.Time, error) { + + theTime, err := time.ParseInLocation(timeFormat, formatTimeStr, time.Local) //使用模板在对应时区转化为time.time类型 + if err != nil { + return time.Now(), err + } + return theTime, nil +} + +type TimeLog struct { + T time.Time +} + +func NewTimeLog() *TimeLog { + return &TimeLog{T: time.Now()} +} + +func (this *TimeLog) Log(tag string) { + return + log.Println(tag, time.Now().Sub(this.T).String()) +} diff --git a/pkg/util/token.go b/pkg/util/token.go new file mode 100644 index 0000000..8e38904 --- /dev/null +++ b/pkg/util/token.go @@ -0,0 +1,33 @@ +package util + +import ( + "github.com/google/uuid" + "github.com/sony/sonyflake" + "log" + "strconv" + "sync" + "time" +) + +var TokenBucket sync.Map + +func GetUUid() string { + return uuid.New().String() +} + +var UUIDBucket sync.Map + +func GetUUid2() string { + flake := sonyflake.NewSonyflake(sonyflake.Settings{}) + id, err := flake.NextID() + if err != nil { + log.Println("err", err) + } + uuid := strconv.Itoa(int(id)) + if _, ok := UUIDBucket.Load(uuid); ok { + time.Sleep(100 * time.Millisecond) + return GetUUid2() + } + UUIDBucket.Store(uuid, struct{}{}) + return uuid +} diff --git a/pkg/util/url.go b/pkg/util/url.go new file mode 100644 index 0000000..6421df6 --- /dev/null +++ b/pkg/util/url.go @@ -0,0 +1,52 @@ +package util + +import ( + "net/url" + "strings" +) + +// URLQueryReader is a ApiURL query type. +type URLQueryReader struct { + values url.Values +} + +// NewURLQueryReader parses a raw query and returns it as a URLQueryReader type. +func NewURLQueryReader(urlInfo *url.URL) (*URLQueryReader, error) { + u, err := url.ParseQuery(urlInfo.RawQuery) + if err != nil { + return nil, err + } + + return &URLQueryReader{ + values: u, + }, nil +} + +// Get parse parameters from an ApiURL. If the parameter does not exist, it returns +// the default value. +func (r *URLQueryReader) Get(name string, def string) string { + val := r.values[name] + if len(val) == 0 { + return def + } + + return val[0] +} + +// JoinURLFragments joins two ApiURL fragments into only one ApiURL string. +func JoinURLFragments(a, b string) string { + aslash := strings.HasSuffix(a, "/") + bslash := strings.HasPrefix(b, "/") + + if len(b) == 0 { + return a + } + + switch { + case aslash && bslash: + return a + b[1:] + case !aslash && !bslash: + return a + "/" + b + } + return a + b +} diff --git a/pkg/util/url_test.go b/pkg/util/url_test.go new file mode 100644 index 0000000..4c5e713 --- /dev/null +++ b/pkg/util/url_test.go @@ -0,0 +1,81 @@ +package util + +import ( + "net/url" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestJoinURLFragments(t *testing.T) { + t.Parallel() + + tests := []struct { + description string + base string + path string + expected string + }{ + { + description: "RHS is empty", + base: "http://localhost:8080", + path: "", + expected: "http://localhost:8080", + }, + { + description: "RHS is empty and LHS has trailing slash", + base: "http://localhost:8080/", + path: "", + expected: "http://localhost:8080/", + }, + { + description: "neither has trailing slash", + base: "http://localhost:8080", + path: "api", + expected: "http://localhost:8080/api", + }, + { + description: "LHS has trailing slash", + base: "http://localhost:8080/", + path: "api", + expected: "http://localhost:8080/api", + }, + { + description: "LHS and RHS has trailing slash", + base: "http://localhost:8080/", + path: "api/", + expected: "http://localhost:8080/api/", + }, + { + description: "LHS has trailing slash and RHS has preceding slash", + base: "http://localhost:8080/", + path: "/api/", + expected: "http://localhost:8080/api/", + }, + } + for _, testcase := range tests { + t.Run("where "+testcase.description, func(t *testing.T) { + assert.Equalf( + t, + testcase.expected, + JoinURLFragments(testcase.base, testcase.path), + "base: '%s', path: '%s'", + testcase.base, + testcase.path, + ) + }) + } +} + +func TestNewURLQueryReader(t *testing.T) { + u, err := url.Parse("http://www.abc.com/foo?bar=baz&bar2=baz2") + require.NoError(t, err) + + uqr, err := NewURLQueryReader(u) + require.NoError(t, err) + + assert.Equal(t, "baz", uqr.Get("bar", "foodef"), "first param") + assert.Equal(t, "baz2", uqr.Get("bar2", "foodef"), "second param") + assert.Equal(t, "foodef", uqr.Get("bar3", "foodef"), "non-existing param, use fallback") +} diff --git a/pkg/util/util.go b/pkg/util/util.go new file mode 100644 index 0000000..329bad9 --- /dev/null +++ b/pkg/util/util.go @@ -0,0 +1,59 @@ +package util + +import ( + "errors" + "fmt" + "golang.org/x/text/encoding/simplifiedchinese" + "os/exec" + "strconv" + "strings" +) + +// KillProcessByPort 根据端口找到服务并杀死对应进程 +func KillProcessByPort(port int) (string, error) { + c1 := exec.Command("powershell.exe", "netstat", "-ano", "| findstr", strconv.Itoa(port), "| findstr", "LISTENING") + output, err := c1.CombinedOutput() + if err != nil { + return "", err + } + decodeBytes, _ := simplifiedchinese.GB18030.NewDecoder().Bytes(output) + strNetstat := string(decodeBytes) + + Pid := "0" + + for _, v := range strings.Split(strNetstat, "\r\n") { + for { + if strings.Contains(v, " ") { + v = strings.ReplaceAll(v, " ", " ") + } else { + break + } + } + strings.Trim(v, " ") + + arrTmp := strings.Split(v, " ") + arr := make([]string, 0) + for _, vv := range arrTmp { + if vv != "" { + arr = append(arr, vv) + } + } + if len(arr) == 5 && strings.Contains(arr[1], fmt.Sprintf(":%v", port)) { + Pid = arr[4] + break + } + } + + if Pid == "0" { + return "", errors.New(fmt.Sprintf("No service with port number %v found", port)) + } + + c2 := exec.Command("powershell.exe", "taskkill -PID ", Pid, "-F") + output, err = c2.CombinedOutput() + if err != nil { + return "", err + } + decodeBytes, _ = simplifiedchinese.GB18030.NewDecoder().Bytes(output) + delStr := string(decodeBytes) + return delStr, nil +} diff --git a/pkg/util/validation.go b/pkg/util/validation.go new file mode 100644 index 0000000..88f92fd --- /dev/null +++ b/pkg/util/validation.go @@ -0,0 +1,19 @@ +package util + +import ( + "regexp" + "strings" +) + +const ( + emailRegexPattern string = "^(((([a-zA-Z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])+(\\.([a-zA-Z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])|(\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-zA-Z]|\\d|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])|(([a-zA-Z]|\\d|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])([a-zA-Z]|\\d|-|\\.|_|~|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])*([a-zA-Z]|\\d|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])))\\.)+(([a-zA-Z]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])|(([a-zA-Z]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])([a-zA-Z]|\\d|-|\\.|_|~|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])*([a-zA-Z]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])))\\.?$" +) + +var ( + regexEmail = regexp.MustCompile(emailRegexPattern) +) + +// IsEmail checks if a string is a valid email address. +func IsEmail(str string) bool { + return regexEmail.MatchString(strings.ToLower(str)) +} diff --git a/pkg/util/validation_test.go b/pkg/util/validation_test.go new file mode 100644 index 0000000..165364e --- /dev/null +++ b/pkg/util/validation_test.go @@ -0,0 +1,38 @@ +package util + +import ( + "fmt" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestIsEmail(t *testing.T) { + t.Parallel() + + emails := map[string]struct { + description string + valid bool + }{ + "": {description: "the empty string", valid: false}, + "@.": {description: "at dot", valid: false}, + "me@": {description: "no domain", valid: false}, + "abcdef.com": {description: "only a domain name", valid: false}, + "@example.org": {description: "no recipient", valid: false}, + "please\x0Ano@example.org": {description: "new line", valid: false}, + + "abc@def.com": {description: "a simple valid email", valid: true}, + "grapher+grafana@example.org": {description: "a gmail style alias", valid: true}, + "öhnej@example.se": {description: "non-ASCII characters", valid: true}, + } + for input, testcase := range emails { + validity := "invalid" + if testcase.valid { + validity = "valid" + } + + t.Run(fmt.Sprintf("validating that %s is %s", testcase.description, validity), func(t *testing.T) { + assert.Equal(t, testcase.valid, IsEmail(input)) + }) + } +} diff --git a/pkg/util/version.go b/pkg/util/version.go new file mode 100644 index 0000000..c7d8682 --- /dev/null +++ b/pkg/util/version.go @@ -0,0 +1 @@ +package util diff --git a/pkg/util/zip.go b/pkg/util/zip.go new file mode 100644 index 0000000..3585cc2 --- /dev/null +++ b/pkg/util/zip.go @@ -0,0 +1,67 @@ +package util + +import ( + "archive/zip" + "io" + "os" +) + +// CompressPathToZip 压缩文件夹 +func CompressPathToZip(path, targetFile string) error { + d, err := os.Create(targetFile) + if err != nil { + return err + } + defer d.Close() + w := zip.NewWriter(d) + defer w.Close() + + f, err := os.Open(path) + if err != nil { + return err + } + + err = compress(f, "", w) + + return err +} + +func compress(file *os.File, prefix string, zw *zip.Writer) error { + info, err := file.Stat() + if err != nil { + return err + } + if info.IsDir() { + prefix = prefix + "/" + info.Name() + fileInfos, err := file.Readdir(-1) + if err != nil { + return err + } + for _, fi := range fileInfos { + f, err := os.Open(file.Name() + "/" + fi.Name()) + if err != nil { + return err + } + err = compress(f, prefix, zw) + if err != nil { + return err + } + } + } else { + header, err := zip.FileInfoHeader(info) + header.Name = prefix + "/" + header.Name + if err != nil { + return err + } + writer, err := zw.CreateHeader(header) + if err != nil { + return err + } + _, err = io.Copy(writer, file) + file.Close() + if err != nil { + return err + } + } + return nil +} diff --git a/pkg/web/es.go b/pkg/web/es.go new file mode 100644 index 0000000..dc007ce --- /dev/null +++ b/pkg/web/es.go @@ -0,0 +1,15 @@ +package web + +// ES基础操作 路由 +func (this *WebServer) runEs() { + + const AbsolutePath = "/api/es" + group := this.engine.Group("ES基础操作", AbsolutePath) + { + + group.POST(false, "Ping连接", "/PingAction", this.esController.PingAction) + group.POST(false, "获取ES索引数", "/IndexsCountAction", this.esController.IndexsCountAction) + group.POST(false, "进行ES的Cat操作", "/CatAction", this.esController.CatAction) + + } +} diff --git a/pkg/web/es_link.go b/pkg/web/es_link.go new file mode 100644 index 0000000..8b8980e --- /dev/null +++ b/pkg/web/es_link.go @@ -0,0 +1,27 @@ +package web + +// ES连接 路由 +func (this *WebServer) runEsLink() { + + const AbsolutePath = "/api/es_link" + group := this.engine.Group("数据源", AbsolutePath) + { + group.POST(false, "查看连接配置下拉选", "/OptAction", this.esLinkController.OptAction) + group.POST(false, "查看数据源列表", "/ListAction", this.esLinkController.ListAction) + group.POST(false, "查看鉴权列表", "/GetEsCfgList", this.esLinkController.GetEsCfgList) + group.POST(false, "查看鉴权配置下拉选", "/GetEsCfgOpt", this.esLinkController.GetEsCfgOpt) + + group.Use(this.middleWareService.OperaterLog) + + group.POST(false, "按id删除连接鉴权配置", "/DeleteEsCfgRelation", this.esLinkController.DeleteEsCfgRelation) + + group.POST(true, "新增数据源信息", "/InsertAction", this.esLinkController.InsertAction) + group.POST(true, "删除数据源信息", "/DeleteAction", this.esLinkController.DeleteAction) + group.POST(true, "修改数据源信息", "/UpdateAction", this.esLinkController.UpdateAction) + + group.POST(true, "新增鉴权配置信息", "/InsertEsCfgAction", this.esLinkController.InsertEsCfgAction) + group.POST(true, "修改鉴权配置信息", "/UpdateEsCfgAction", this.esLinkController.UpdateEsCfgAction) + group.POST(true, "删除鉴权配置信息", "/DeleteEsCfgAction", this.esLinkController.DeleteEsCfgAction) + + } +} diff --git a/pkg/web/manager_user.go b/pkg/web/manager_user.go new file mode 100644 index 0000000..eeaa82e --- /dev/null +++ b/pkg/web/manager_user.go @@ -0,0 +1,38 @@ +package web + +// BI用户 路由 +func (this *WebServer) runManagerUser() { + group := this.engine.Group("权限模块", "/api/gm_user") + { + + group.Any(false, "获取前端路由配置", "/GetRoutesConfig", this.managerUserController.GetRoutesConfig) + + group.Any(false, "查询用户信息", "/info", this.managerUserController.UserInfo) + group.Any(false, "查询用户信息V2", "/infoV2", this.managerUserController.UserInfoV2) + + group.POST(false, "角色下拉选", "/roleOption", this.managerRoleController.RoleOptionAction) + group.Use(this.middleWareService.OperaterLog) + group.Any(true, "查询第三方认证配置", "/GetOAuthConfigs", this.managerUserController.GetOAuthConfigs) + group.Any(true, "设置第三方认证配置", "/SaveOAuthConfigs", this.managerUserController.SaveOAuthConfigs) + + group.POST(false, "GM角色列表", "/roles", this.managerRoleController.RolesAction) + group.POST(false, "退出登录", "/logout", this.managerUserController.LogoutAction) + group.POST(false, "查询用户列表", "/userlist", this.managerUserController.UserListAction) + + group.POST(false, "通过ID获取用户信息", "/getUserById", this.managerUserController.GetUserByIdAction) + group.POST(false, "获取接口路由信息", "/UrlConfig", this.managerUserController.UrlConfig) + group.POST(false, "修改自己的密码", "/ModifyPwd", this.managerUserController.ModifyPwd) + group.POST(true, "修改用户的密码", "/ModifyPwdByUserId", this.managerUserController.ModifyPwdByUserId) + + group.POST(true, "修改角色", "/role/update", this.managerRoleController.RolesUpdateAction) + group.POST(true, "新增角色", "role/add", this.managerRoleController.RolesAddAction) + group.POST(true, "删除角色", "/role/delete", this.managerRoleController.RolesDelAction) + group.POST(true, "修改用户", "/UpdateUser", this.managerUserController.UserUpdateAction) + group.POST(true, "新增用户", "/InsertUser", this.managerUserController.UserAddAction) + group.POST(true, "删除用户", "/DelUser", this.managerUserController.DeleteUserAction) + group.POST(true, "封禁用户", "/SealUserAction", this.managerUserController.SealUserAction) + + group.POST(true, "解封用户", "/UnSealUserAction", this.managerUserController.UnSealUserAction) + + } +} diff --git a/pkg/web/no_verification.go b/pkg/web/no_verification.go new file mode 100644 index 0000000..f04de16 --- /dev/null +++ b/pkg/web/no_verification.go @@ -0,0 +1,5 @@ +package web + +func (this *WebServer) runNoVerificationRouter() { + +} diff --git a/pkg/web/operater_log.go b/pkg/web/operater_log.go new file mode 100644 index 0000000..03ba6b7 --- /dev/null +++ b/pkg/web/operater_log.go @@ -0,0 +1,8 @@ +package web + +func (this *WebServer) runOperaterLog() { + group := this.engine.Group("操作记录模块", "/api/operater_log") + { + group.POST(false, "查看用户操作记录", "/ListAction", this.gmOperaterController.ListAction) + } +} diff --git a/pkg/web/plugins.go b/pkg/web/plugins.go new file mode 100644 index 0000000..c805bc3 --- /dev/null +++ b/pkg/web/plugins.go @@ -0,0 +1,23 @@ +package web + +// ES基础操作 路由 +func (this *WebServer) runPlugins() { + + const AbsolutePath = "/api/plugins" + group := this.engine.Group("插件操作", AbsolutePath) + { + group.Use(this.middleWareService.OperaterLog) + + group.POST(false, "查询本地插件列表", "/GetLocalPluginList", this.pluginController.GetLocalPluginList) + + group.POST(false, "导入EvKey到配置文件", "/ImportEvKey", this.pluginController.ImportEvKey) + + group.POST(false, "查询插件动态", "/GetWxArticleList", this.pluginController.GetWxArticleList) + group.POST(false, "查询插件市场", "/PluginMarket", this.pluginController.PluginMarket) + group.POST(false, "查询插件详情", "/GetPluginInfo", this.pluginController.GetPluginInfo) + group.POST(true, "安装插件", "/InstallPlugin", this.pluginController.InstallPlugin) + group.POST(true, "卸载插件", "/UnInstallPlugin", this.pluginController.UnInstallPlugin) + + group.POST(true, "给插件star", "/StarPlugin", this.pluginController.StarPlugin) + } +} diff --git a/pkg/web/web_server.go b/pkg/web/web_server.go new file mode 100644 index 0000000..ffd820d --- /dev/null +++ b/pkg/web/web_server.go @@ -0,0 +1,180 @@ +package web + +import ( + "context" + "fmt" + _ "github.com/1340691923/ElasticView/docs" + "github.com/1340691923/ElasticView/pkg/api" + "github.com/1340691923/ElasticView/pkg/infrastructure/access_control" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/infrastructure/logger" + "github.com/1340691923/ElasticView/pkg/infrastructure/middleware" + "github.com/1340691923/ElasticView/pkg/infrastructure/web_engine" + "github.com/1340691923/ElasticView/pkg/util" + "github.com/1340691923/ElasticView/resources/views" + "github.com/gin-contrib/cors" + "github.com/gin-gonic/gin" + swaggerFiles "github.com/swaggo/files" + ginSwagger "github.com/swaggo/gin-swagger" + "go.uber.org/zap" + "html/template" + "io/fs" + "log" + "net/http" + "strconv" + "time" +) + +type WebServer struct { + engine *web_engine.WebEngine + log *logger.AppLogger + cfg *config.Config + rbac *access_control.Rbac + middleWareService *middleware.MiddleWareService + gmOperaterController *api.GmOperaterController + managerRoleController *api.ManagerRoleController + esLinkController *api.EsLinkController + managerUserController *api.ManagerUserController + esController *api.EsController + wsController *api.WsController + indexController *api.IndexController + pluginController *api.PluginController +} + +func NewWebServer(engine *web_engine.WebEngine, log *logger.AppLogger, cfg *config.Config, rbac *access_control.Rbac, middleWareService *middleware.MiddleWareService, gmOperaterController *api.GmOperaterController, managerRoleController *api.ManagerRoleController, esLinkController *api.EsLinkController, managerUserController *api.ManagerUserController, esController *api.EsController, wsController *api.WsController, indexController *api.IndexController, pluginController *api.PluginController) *WebServer { + return &WebServer{engine: engine, log: log, cfg: cfg, rbac: rbac, middleWareService: middleWareService, gmOperaterController: gmOperaterController, managerRoleController: managerRoleController, esLinkController: esLinkController, managerUserController: managerUserController, esController: esController, wsController: wsController, indexController: indexController, pluginController: pluginController} +} + +type Config struct { + Name string +} + +func (this *WebServer) runRouter() { + + htmlTpl := template.Must(template.New("").ParseFS(views.IndexFileTemplate, "dist/*.html")) + + this.engine.GetGinEngine().SetHTMLTemplate(htmlTpl) + + js, _ := fs.Sub(views.JsFs, "dist/js") + + staticServer := this.engine.GetGinEngine() + + staticServer.StaticFS("/js/", http.FS(js)) + + css, _ := fs.Sub(views.CssFs, "dist/css") + staticServer.StaticFS("/css/", http.FS(css)) + + img, _ := fs.Sub(views.ImgFs, "dist/img") + staticServer.StaticFS("/img/", http.FS(img)) + + staticServer.StaticFS("/favicon.ico", http.FS(views.FaviconFs)) + + staticServer.GET("/", this.indexController.IndexHtml) + + this.engine.GetGinEngine().GET("/api/callback", this.indexController.CallBack) + + this.engine.GetGinEngine().Use( + cors.New(cors.Config{ + AllowOrigins: []string{"*"}, + AllowMethods: []string{"PUT", "PATCH", "POST", "GET", "DELETE"}, + AllowHeaders: []string{"Accept", "Accept-Encoding", "Accept-Language", "Access-Control-Request-Headers", + "Access-Control-Request-Method", "Connection", "Referer", "Sec-Fetch-Dest", "User-Agent", + "Origin", "Authorization", "Content-Type", "X-Token", "x-token", "X-Version", "Current-Language"}, + ExposeHeaders: []string{"Content-Type"}, + AllowCredentials: true, + AllowOriginFunc: func(origin string) bool { + return true + }, + MaxAge: 24 * time.Hour, + }), + ) + this.engine.GetGinEngine().GET("/api/Health", this.indexController.Health) + this.engine.GetGinEngine().POST("/api/GetI18nCfg", this.indexController.GetI18nCfg) + this.engine.GetGinEngine().POST("/api/GetOAuthList", this.managerUserController.GetOAuthList) + + this.engine.GetGinEngine().Any("/api/call_plugin_views/:plugin_id/*action", + this.pluginController.CallPluginViews) + + this.engine.GetGinEngine().Use( + this.middleWareService.CheckVersion, + ) + + this.engine.GetGinEngine().POST("/api/gm_user/login", this.managerUserController.Login) + + this.runNoVerificationRouter() + + this.engine.GetGinEngine().Any("/api/call_plugin/:plugin_id/*action", + this.pluginController.CallPlugin) + + this.engine.GetGinEngine().GET("/swagger/*any", func(c *gin.Context) { + ginSwagger.DisablingWrapHandler(swaggerFiles.Handler, "SWAGGER")(c) + }) + this.engine.GetGinEngine().Use( + this.middleWareService.JwtMiddleware, + this.middleWareService.Rbac, + ) + + this.runOperaterLog() + this.runManagerUser() + this.runEsLink() + this.runEs() + this.runPlugins() + + this.engine.GetGinEngine().NoRoute(func(c *gin.Context) { + c.JSON(200, map[string]interface{}{ + "code": 500, + "msg": "路由不存在", + }) + }) + +} + +func (this *WebServer) Run(ctx context.Context) (err error) { + + err = this.rbac.LoadPolicy() + if err != nil { + return + } + this.runRouter() + + srv := &http.Server{ + Addr: fmt.Sprintf(":%d", this.cfg.Port), + Handler: this.engine.GetGinEngine(), + } + + go func() { + + this.InitOpenWinBrowser() + + if this.cfg.DeBug { + this.log.Debug("WebServer RUN ", zap.String("端口号", fmt.Sprintf(":%d", this.cfg.Port))) + } else { + this.log.Debug("WebServer RUN ", zap.String("端口号", fmt.Sprintf(":%d", this.cfg.Port))) + this.log.Info("WebServer RUN ", zap.String("端口号", fmt.Sprintf(":%d", this.cfg.Port))) + } + + if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed { + this.log.Error("WebServer RUN err", zap.Error(err)) + panic(err) + } + }() + + <-ctx.Done() + if srv == nil { + return + } + err = srv.Shutdown(context.Background()) + if err != nil { + return + } + return +} + +func (this *WebServer) InitOpenWinBrowser() { + if !this.cfg.DeBug { + port := ":" + strconv.Itoa(this.cfg.Port) + uri := fmt.Sprintf("%s%s", "http://localhost", port) + util.OpenWinBrowser(uri) + log.Println(fmt.Sprintf("将打开浏览器!地址为:%v", uri)) + } +} diff --git a/pkg/web/ws.go b/pkg/web/ws.go new file mode 100644 index 0000000..5fbc10d --- /dev/null +++ b/pkg/web/ws.go @@ -0,0 +1,6 @@ +package web + +// ES 任务 路由 +func (this *WebServer) runWs() { + this.engine.GetGinEngine().GET("/ws", this.wsController.WsAction) +} diff --git a/resources/views/dist/css/401.CvIIrYMJ.css b/resources/views/dist/css/401.CvIIrYMJ.css new file mode 100644 index 0000000..170d15d --- /dev/null +++ b/resources/views/dist/css/401.CvIIrYMJ.css @@ -0,0 +1 @@ +@charset "UTF-8";[data-v-849ad0a6]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-849ad0a6]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-849ad0a6]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.page-container[data-v-849ad0a6]{width:100%;padding:100px}.page-container .pan-back-btn[data-v-849ad0a6]{color:#fff;background:#008489;border:none!important}.page-container .pan-gif[data-v-849ad0a6]{display:block;margin:0 auto}.page-container .pan-img[data-v-849ad0a6]{display:block;width:100%;margin:0 auto}.page-container .text-jumbo[data-v-849ad0a6]{font-size:60px;font-weight:700;color:#484848}.page-container .list-unstyled[data-v-849ad0a6]{font-size:14px}.page-container .list-unstyled li[data-v-849ad0a6]{padding-bottom:5px}.page-container .list-unstyled a[data-v-849ad0a6]{color:#008489;text-decoration:none}.page-container .list-unstyled a[data-v-849ad0a6]:hover{text-decoration:underline} diff --git a/resources/views/dist/css/404.CdPDqZCv.css b/resources/views/dist/css/404.CdPDqZCv.css new file mode 100644 index 0000000..a252178 --- /dev/null +++ b/resources/views/dist/css/404.CdPDqZCv.css @@ -0,0 +1 @@ +@charset "UTF-8";[data-v-2b9b8493]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-2b9b8493]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-2b9b8493]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.page-container[data-v-2b9b8493]{display:flex;padding:100px}.page-container .pic-404[data-v-2b9b8493]{width:600px;overflow:hidden}.page-container .pic-404__parent[data-v-2b9b8493]{width:100%}.page-container .pic-404__child.left[data-v-2b9b8493]{top:17px;left:220px;width:80px;opacity:0;animation-name:cloudLeft-2b9b8493;animation-duration:2s;animation-timing-function:linear;animation-delay:1s;animation-fill-mode:forwards}.page-container .pic-404__child.mid[data-v-2b9b8493]{top:10px;left:420px;width:46px;opacity:0;animation-name:cloudMid-2b9b8493;animation-duration:2s;animation-timing-function:linear;animation-delay:1.2s;animation-fill-mode:forwards}.page-container .pic-404__child.right[data-v-2b9b8493]{top:100px;left:500px;width:62px;opacity:0;animation-name:cloudRight-2b9b8493;animation-duration:2s;animation-timing-function:linear;animation-delay:1s;animation-fill-mode:forwards}@keyframes cloudLeft-2b9b8493{0%{top:17px;left:220px;opacity:0}20%{top:33px;left:188px;opacity:1}80%{top:81px;left:92px;opacity:1}to{top:97px;left:60px;opacity:0}}@keyframes cloudMid-2b9b8493{0%{top:10px;left:420px;opacity:0}20%{top:40px;left:360px;opacity:1}70%{top:130px;left:180px;opacity:1}to{top:160px;left:120px;opacity:0}}@keyframes cloudRight-2b9b8493{0%{top:100px;left:500px;opacity:0}20%{top:120px;left:460px;opacity:1}80%{top:180px;left:340px;opacity:1}to{top:200px;left:300px;opacity:0}}.page-container .bullshit[data-v-2b9b8493]{width:300px;padding:30px 0;overflow:hidden}.page-container .bullshit__oops[data-v-2b9b8493]{margin-bottom:20px;font-size:32px;font-weight:700;line-height:40px;color:#1482f0;opacity:0;animation-name:slideUp-2b9b8493;animation-duration:.5s;animation-fill-mode:forwards}.page-container .bullshit__headline[data-v-2b9b8493]{margin-bottom:10px;font-size:20px;font-weight:700;line-height:24px;color:#222;opacity:0;animation-name:slideUp-2b9b8493;animation-duration:.5s;animation-delay:.1s;animation-fill-mode:forwards}.page-container .bullshit__info[data-v-2b9b8493]{margin-bottom:30px;font-size:13px;line-height:21px;color:gray;opacity:0;animation-name:slideUp-2b9b8493;animation-duration:.5s;animation-delay:.2s;animation-fill-mode:forwards}.page-container .bullshit__return-home[data-v-2b9b8493]{display:block;float:left;width:110px;height:36px;font-size:14px;line-height:36px;color:#fff;text-align:center;cursor:pointer;background:#1482f0;border-radius:100px;opacity:0;animation-name:slideUp-2b9b8493;animation-duration:.5s;animation-delay:.3s;animation-fill-mode:forwards}@keyframes slideUp-2b9b8493{0%{opacity:0;transform:translateY(60px)}to{opacity:1;transform:translateY(0)}} diff --git a/resources/views/dist/css/EsHeader.DxYu6_fD.css b/resources/views/dist/css/EsHeader.DxYu6_fD.css new file mode 100644 index 0000000..224c1a4 --- /dev/null +++ b/resources/views/dist/css/EsHeader.DxYu6_fD.css @@ -0,0 +1 @@ +.el-input[data-v-b0993104]{width:100%} diff --git a/resources/views/dist/css/apifox.DQAG05N_.css b/resources/views/dist/css/apifox.DQAG05N_.css new file mode 100644 index 0000000..0442c70 --- /dev/null +++ b/resources/views/dist/css/apifox.DQAG05N_.css @@ -0,0 +1 @@ +@charset "UTF-8";[data-v-31dcf336]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-31dcf336]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-31dcf336]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.app-container[data-v-31dcf336]{height:calc(100vh - 50px)}.hasTagsView .app-container[data-v-31dcf336]{height:calc(100vh - 84px)} diff --git a/resources/views/dist/css/auth.Ch64Sp5X.css b/resources/views/dist/css/auth.Ch64Sp5X.css new file mode 100644 index 0000000..a415b43 --- /dev/null +++ b/resources/views/dist/css/auth.Ch64Sp5X.css @@ -0,0 +1 @@ +.el-autocomplete{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;display:inline-block;position:relative;width:var(--el-input-width)}.el-autocomplete__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-autocomplete__popper.el-popper,.el-autocomplete__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-autocomplete__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-autocomplete-suggestion{border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-autocomplete-suggestion__wrap{box-sizing:border-box;max-height:280px;padding:10px 0}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-base);line-height:34px;list-style:none;margin:0;overflow:hidden;padding:0 20px;text-align:left;text-overflow:ellipsis;white-space:nowrap}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:var(--el-fill-color-light)}.el-autocomplete-suggestion li.divider{border-top:1px solid var(--el-color-black);margin-top:6px}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{color:var(--el-text-color-secondary);font-size:20px;height:100px;line-height:100px;text-align:center}.el-autocomplete-suggestion.is-loading li:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:var(--el-bg-color-overlay)}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-transfer{--el-transfer-border-color:var(--el-border-color-lighter);--el-transfer-border-radius:var(--el-border-radius-base);--el-transfer-panel-width:200px;--el-transfer-panel-header-height:40px;--el-transfer-panel-header-bg-color:var(--el-fill-color-light);--el-transfer-panel-footer-height:40px;--el-transfer-panel-body-height:278px;--el-transfer-item-height:30px;--el-transfer-filter-height:32px;font-size:var(--el-font-size-base)}.el-transfer__buttons{display:inline-block;padding:0 30px;vertical-align:middle}.el-transfer__button{vertical-align:top}.el-transfer__button:nth-child(2){margin:0 0 0 10px}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer__button .el-icon+span{margin-left:0}.el-transfer-panel{background:var(--el-bg-color-overlay);box-sizing:border-box;display:inline-block;max-height:100%;overflow:hidden;position:relative;text-align:left;vertical-align:middle;width:var(--el-transfer-panel-width)}.el-transfer-panel__body{border-bottom:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius);border-left:1px solid var(--el-transfer-border-color);border-right:1px solid var(--el-transfer-border-color);height:var(--el-transfer-panel-body-height);overflow:hidden}.el-transfer-panel__body.is-with-footer{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.el-transfer-panel__list{box-sizing:border-box;height:var(--el-transfer-panel-body-height);list-style:none;margin:0;overflow:auto;padding:6px 0}.el-transfer-panel__list.is-filterable{height:calc(100% - var(--el-transfer-filter-height) - 30px);padding-top:0}.el-transfer-panel__item{display:block!important;height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);padding-left:15px}.el-transfer-panel__item+.el-transfer-panel__item{margin-left:0}.el-transfer-panel__item.el-checkbox{color:var(--el-text-color-regular)}.el-transfer-panel__item:hover{color:var(--el-color-primary)}.el-transfer-panel__item.el-checkbox .el-checkbox__label{box-sizing:border-box;display:block;line-height:var(--el-transfer-item-height);overflow:hidden;padding-left:22px;text-overflow:ellipsis;white-space:nowrap;width:100%}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{box-sizing:border-box;padding:15px;text-align:center}.el-transfer-panel__filter .el-input__inner{border-radius:calc(var(--el-transfer-filter-height)/2);box-sizing:border-box;display:inline-block;font-size:12px;height:var(--el-transfer-filter-height);width:100%}.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-transfer-panel .el-transfer-panel__header{align-items:center;background:var(--el-transfer-panel-header-bg-color);border:1px solid var(--el-transfer-border-color);border-top-left-radius:var(--el-transfer-border-radius);border-top-right-radius:var(--el-transfer-border-radius);box-sizing:border-box;color:var(--el-color-black);display:flex;height:var(--el-transfer-panel-header-height);margin:0;padding-left:15px}.el-transfer-panel .el-transfer-panel__header .el-checkbox{align-items:center;display:flex;position:relative;width:100%}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{color:var(--el-text-color-primary);font-size:16px;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{color:var(--el-text-color-secondary);font-size:12px;font-weight:400;position:absolute;right:15px;top:50%;transform:translate3d(0,-50%,0)}.el-transfer-panel .el-transfer-panel__footer{background:var(--el-bg-color-overlay);border:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius);height:var(--el-transfer-panel-footer-height);margin:0;padding:0}.el-transfer-panel .el-transfer-panel__footer:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{color:var(--el-text-color-regular);padding-left:20px}.el-transfer-panel .el-transfer-panel__empty{color:var(--el-text-color-secondary);height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);margin:0;padding:6px 15px 0;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{border-radius:3px;height:14px;width:14px}.el-transfer-panel .el-checkbox__inner:after{height:6px;left:4px;width:3px} diff --git a/resources/views/dist/css/el-alert.CGNjtr_4.css b/resources/views/dist/css/el-alert.CGNjtr_4.css new file mode 100644 index 0000000..16906b7 --- /dev/null +++ b/resources/views/dist/css/el-alert.CGNjtr_4.css @@ -0,0 +1 @@ +.el-alert{--el-alert-padding:8px 16px;--el-alert-border-radius-base:var(--el-border-radius-base);--el-alert-title-font-size:14px;--el-alert-title-with-description-font-size:16px;--el-alert-description-font-size:14px;--el-alert-close-font-size:16px;--el-alert-close-customed-font-size:14px;--el-alert-icon-size:16px;--el-alert-icon-large-size:28px;align-items:center;background-color:var(--el-color-white);border-radius:var(--el-alert-border-radius-base);box-sizing:border-box;display:flex;margin:0;opacity:1;overflow:hidden;padding:var(--el-alert-padding);position:relative;transition:opacity var(--el-transition-duration-fast);width:100%}.el-alert.is-light .el-alert__close-btn{color:var(--el-text-color-placeholder)}.el-alert.is-dark .el-alert__close-btn,.el-alert.is-dark .el-alert__description{color:var(--el-color-white)}.el-alert.is-center{justify-content:center}.el-alert--success{--el-alert-bg-color:var(--el-color-success-light-9)}.el-alert--success.is-light{background-color:var(--el-alert-bg-color)}.el-alert--success.is-light,.el-alert--success.is-light .el-alert__description{color:var(--el-color-success)}.el-alert--success.is-dark{background-color:var(--el-color-success);color:var(--el-color-white)}.el-alert--info{--el-alert-bg-color:var(--el-color-info-light-9)}.el-alert--info.is-light{background-color:var(--el-alert-bg-color)}.el-alert--info.is-light,.el-alert--info.is-light .el-alert__description{color:var(--el-color-info)}.el-alert--info.is-dark{background-color:var(--el-color-info);color:var(--el-color-white)}.el-alert--warning{--el-alert-bg-color:var(--el-color-warning-light-9)}.el-alert--warning.is-light{background-color:var(--el-alert-bg-color)}.el-alert--warning.is-light,.el-alert--warning.is-light .el-alert__description{color:var(--el-color-warning)}.el-alert--warning.is-dark{background-color:var(--el-color-warning);color:var(--el-color-white)}.el-alert--error{--el-alert-bg-color:var(--el-color-error-light-9)}.el-alert--error.is-light{background-color:var(--el-alert-bg-color)}.el-alert--error.is-light,.el-alert--error.is-light .el-alert__description{color:var(--el-color-error)}.el-alert--error.is-dark{background-color:var(--el-color-error);color:var(--el-color-white)}.el-alert__content{display:flex;flex-direction:column;gap:4px}.el-alert .el-alert__icon{font-size:var(--el-alert-icon-size);margin-right:8px;width:var(--el-alert-icon-size)}.el-alert .el-alert__icon.is-big{font-size:var(--el-alert-icon-large-size);margin-right:12px;width:var(--el-alert-icon-large-size)}.el-alert__title{font-size:var(--el-alert-title-font-size);line-height:24px}.el-alert__title.with-description{font-size:var(--el-alert-title-with-description-font-size)}.el-alert .el-alert__description{font-size:var(--el-alert-description-font-size);margin:0}.el-alert .el-alert__close-btn{cursor:pointer;font-size:var(--el-alert-close-font-size);opacity:1;position:absolute;right:16px;top:12px}.el-alert .el-alert__close-btn.is-customed{font-size:var(--el-alert-close-customed-font-size);font-style:normal;line-height:24px;top:8px}.el-alert-fade-enter-from,.el-alert-fade-leave-active{opacity:0} diff --git a/resources/views/dist/css/el-card.BJ3sbP9B.css b/resources/views/dist/css/el-card.BJ3sbP9B.css new file mode 100644 index 0000000..2d9b34d --- /dev/null +++ b/resources/views/dist/css/el-card.BJ3sbP9B.css @@ -0,0 +1 @@ +.el-card{--el-card-border-color:var(--el-border-color-light);--el-card-border-radius:4px;--el-card-padding:20px;--el-card-bg-color:var(--el-fill-color-blank);background-color:var(--el-card-bg-color);border:1px solid var(--el-card-border-color);border-radius:var(--el-card-border-radius);color:var(--el-text-color-primary);overflow:hidden;transition:var(--el-transition-duration)}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:var(--el-box-shadow-light)}.el-card__header{border-bottom:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}.el-card__body{padding:var(--el-card-padding)}.el-card__footer{border-top:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)} diff --git a/resources/views/dist/css/el-checkbox-group.B3ldtHxN.css b/resources/views/dist/css/el-checkbox-group.B3ldtHxN.css new file mode 100644 index 0000000..b2a1822 --- /dev/null +++ b/resources/views/dist/css/el-checkbox-group.B3ldtHxN.css @@ -0,0 +1 @@ +.el-checkbox-group{font-size:0;line-height:0} diff --git a/resources/views/dist/css/el-checkbox.BFZaSjz7.css b/resources/views/dist/css/el-checkbox.BFZaSjz7.css new file mode 100644 index 0000000..6c2e56f --- /dev/null +++ b/resources/views/dist/css/el-checkbox.BFZaSjz7.css @@ -0,0 +1 @@ +.el-checkbox{--el-checkbox-font-size:14px;--el-checkbox-font-weight:var(--el-font-weight-primary);--el-checkbox-text-color:var(--el-text-color-regular);--el-checkbox-input-height:14px;--el-checkbox-input-width:14px;--el-checkbox-border-radius:var(--el-border-radius-small);--el-checkbox-bg-color:var(--el-fill-color-blank);--el-checkbox-input-border:var(--el-border);--el-checkbox-disabled-border-color:var(--el-border-color);--el-checkbox-disabled-input-fill:var(--el-fill-color-light);--el-checkbox-disabled-icon-color:var(--el-text-color-placeholder);--el-checkbox-disabled-checked-input-fill:var(--el-border-color-extra-light);--el-checkbox-disabled-checked-input-border-color:var(--el-border-color);--el-checkbox-disabled-checked-icon-color:var(--el-text-color-placeholder);--el-checkbox-checked-text-color:var(--el-color-primary);--el-checkbox-checked-input-border-color:var(--el-color-primary);--el-checkbox-checked-bg-color:var(--el-color-primary);--el-checkbox-checked-icon-color:var(--el-color-white);--el-checkbox-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-checkbox-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-checkbox-font-weight);height:var(--el-checkbox-height,32px);margin-right:30px;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.el-checkbox.is-disabled{cursor:not-allowed}.el-checkbox.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-checkbox.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-checkbox.is-bordered.is-disabled{border-color:var(--el-border-color-lighter)}.el-checkbox.is-bordered.el-checkbox--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__label{font-size:var(--el-font-size-base)}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{border-radius:calc(var(--el-border-radius-base) - 1px);padding:0 11px 0 7px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox input:focus-visible+.el-checkbox__inner{border-radius:var(--el-checkbox-border-radius);outline:2px solid var(--el-checkbox-input-border-color-hover);outline-offset:1px}.el-checkbox__input{cursor:pointer;display:inline-flex;outline:none;position:relative;white-space:nowrap}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:var(--el-checkbox-disabled-input-fill);border-color:var(--el-checkbox-disabled-border-color);cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-icon-color);cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-disabled-checked-icon-color);border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:var(--el-disabled-text-color);cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-checked-icon-color);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:var(--el-checkbox-checked-text-color)}.el-checkbox__input.is-focus:not(.is-checked) .el-checkbox__original:not(:focus-visible){border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-checked-icon-color);content:"";display:block;height:2px;left:0;position:absolute;right:0;top:5px;transform:scale(.5)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__inner{background-color:var(--el-checkbox-bg-color);border:var(--el-checkbox-input-border);border-radius:var(--el-checkbox-border-radius);box-sizing:border-box;display:inline-block;height:var(--el-checkbox-input-height);position:relative;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46),outline .25s cubic-bezier(.71,-.46,.29,1.46);width:var(--el-checkbox-input-width);z-index:var(--el-index-normal)}.el-checkbox__inner:hover{border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__inner:after{border:1px solid transparent;border-left:0;border-top:0;box-sizing:content-box;content:"";height:7px;left:4px;position:absolute;top:1px;transform:rotate(45deg) scaleY(0);transform-origin:center;transition:transform .15s ease-in .05s;width:3px}.el-checkbox__original{height:0;margin:0;opacity:0;outline:none;position:absolute;width:0;z-index:-1}.el-checkbox__label{display:inline-block;font-size:var(--el-checkbox-font-size);line-height:1;padding-left:8px}.el-checkbox.el-checkbox--large{height:40px}.el-checkbox.el-checkbox--large .el-checkbox__label{font-size:14px}.el-checkbox.el-checkbox--large .el-checkbox__inner{height:14px;width:14px}.el-checkbox.el-checkbox--small{height:24px}.el-checkbox.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.el-checkbox--small .el-checkbox__input.is-indeterminate .el-checkbox__inner:before{top:4px}.el-checkbox.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox:last-of-type{margin-right:0} diff --git a/resources/views/dist/css/el-col.BP4dtlli.css b/resources/views/dist/css/el-col.BP4dtlli.css new file mode 100644 index 0000000..2b68771 --- /dev/null +++ b/resources/views/dist/css/el-col.BP4dtlli.css @@ -0,0 +1 @@ +.el-row{box-sizing:border-box;display:flex;flex-wrap:wrap;position:relative}.el-row.is-justify-center{justify-content:center}.el-row.is-justify-end{justify-content:flex-end}.el-row.is-justify-space-between{justify-content:space-between}.el-row.is-justify-space-around{justify-content:space-around}.el-row.is-justify-space-evenly{justify-content:space-evenly}.el-row.is-align-top{align-items:flex-start}.el-row.is-align-middle{align-items:center}.el-row.is-align-bottom{align-items:flex-end}[class*=el-col-]{box-sizing:border-box}[class*=el-col-].is-guttered{display:block;min-height:1px}.el-col-0{flex:0 0 0%;max-width:0}.el-col-0,.el-col-0.is-guttered{display:none}.el-col-offset-0{margin-left:0}.el-col-pull-0{position:relative;right:0}.el-col-push-0{left:0;position:relative}.el-col-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-1,.el-col-1.is-guttered{display:block}.el-col-offset-1{margin-left:4.1666666667%}.el-col-pull-1{position:relative;right:4.1666666667%}.el-col-push-1{left:4.1666666667%;position:relative}.el-col-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-2,.el-col-2.is-guttered{display:block}.el-col-offset-2{margin-left:8.3333333333%}.el-col-pull-2{position:relative;right:8.3333333333%}.el-col-push-2{left:8.3333333333%;position:relative}.el-col-3{flex:0 0 12.5%;max-width:12.5%}.el-col-3,.el-col-3.is-guttered{display:block}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{position:relative;right:12.5%}.el-col-push-3{left:12.5%;position:relative}.el-col-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-4,.el-col-4.is-guttered{display:block}.el-col-offset-4{margin-left:16.6666666667%}.el-col-pull-4{position:relative;right:16.6666666667%}.el-col-push-4{left:16.6666666667%;position:relative}.el-col-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-5,.el-col-5.is-guttered{display:block}.el-col-offset-5{margin-left:20.8333333333%}.el-col-pull-5{position:relative;right:20.8333333333%}.el-col-push-5{left:20.8333333333%;position:relative}.el-col-6{flex:0 0 25%;max-width:25%}.el-col-6,.el-col-6.is-guttered{display:block}.el-col-offset-6{margin-left:25%}.el-col-pull-6{position:relative;right:25%}.el-col-push-6{left:25%;position:relative}.el-col-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-7,.el-col-7.is-guttered{display:block}.el-col-offset-7{margin-left:29.1666666667%}.el-col-pull-7{position:relative;right:29.1666666667%}.el-col-push-7{left:29.1666666667%;position:relative}.el-col-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-8,.el-col-8.is-guttered{display:block}.el-col-offset-8{margin-left:33.3333333333%}.el-col-pull-8{position:relative;right:33.3333333333%}.el-col-push-8{left:33.3333333333%;position:relative}.el-col-9{flex:0 0 37.5%;max-width:37.5%}.el-col-9,.el-col-9.is-guttered{display:block}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{position:relative;right:37.5%}.el-col-push-9{left:37.5%;position:relative}.el-col-10{flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-10,.el-col-10.is-guttered{display:block}.el-col-offset-10{margin-left:41.6666666667%}.el-col-pull-10{position:relative;right:41.6666666667%}.el-col-push-10{left:41.6666666667%;position:relative}.el-col-11{flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-11,.el-col-11.is-guttered{display:block}.el-col-offset-11{margin-left:45.8333333333%}.el-col-pull-11{position:relative;right:45.8333333333%}.el-col-push-11{left:45.8333333333%;position:relative}.el-col-12{flex:0 0 50%;max-width:50%}.el-col-12,.el-col-12.is-guttered{display:block}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{left:50%;position:relative}.el-col-13{flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-13,.el-col-13.is-guttered{display:block}.el-col-offset-13{margin-left:54.1666666667%}.el-col-pull-13{position:relative;right:54.1666666667%}.el-col-push-13{left:54.1666666667%;position:relative}.el-col-14{flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-14,.el-col-14.is-guttered{display:block}.el-col-offset-14{margin-left:58.3333333333%}.el-col-pull-14{position:relative;right:58.3333333333%}.el-col-push-14{left:58.3333333333%;position:relative}.el-col-15{flex:0 0 62.5%;max-width:62.5%}.el-col-15,.el-col-15.is-guttered{display:block}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{position:relative;right:62.5%}.el-col-push-15{left:62.5%;position:relative}.el-col-16{flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-16,.el-col-16.is-guttered{display:block}.el-col-offset-16{margin-left:66.6666666667%}.el-col-pull-16{position:relative;right:66.6666666667%}.el-col-push-16{left:66.6666666667%;position:relative}.el-col-17{flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-17,.el-col-17.is-guttered{display:block}.el-col-offset-17{margin-left:70.8333333333%}.el-col-pull-17{position:relative;right:70.8333333333%}.el-col-push-17{left:70.8333333333%;position:relative}.el-col-18{flex:0 0 75%;max-width:75%}.el-col-18,.el-col-18.is-guttered{display:block}.el-col-offset-18{margin-left:75%}.el-col-pull-18{position:relative;right:75%}.el-col-push-18{left:75%;position:relative}.el-col-19{flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-19,.el-col-19.is-guttered{display:block}.el-col-offset-19{margin-left:79.1666666667%}.el-col-pull-19{position:relative;right:79.1666666667%}.el-col-push-19{left:79.1666666667%;position:relative}.el-col-20{flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-20,.el-col-20.is-guttered{display:block}.el-col-offset-20{margin-left:83.3333333333%}.el-col-pull-20{position:relative;right:83.3333333333%}.el-col-push-20{left:83.3333333333%;position:relative}.el-col-21{flex:0 0 87.5%;max-width:87.5%}.el-col-21,.el-col-21.is-guttered{display:block}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{position:relative;right:87.5%}.el-col-push-21{left:87.5%;position:relative}.el-col-22{flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-22,.el-col-22.is-guttered{display:block}.el-col-offset-22{margin-left:91.6666666667%}.el-col-pull-22{position:relative;right:91.6666666667%}.el-col-push-22{left:91.6666666667%;position:relative}.el-col-23{flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-23,.el-col-23.is-guttered{display:block}.el-col-offset-23{margin-left:95.8333333333%}.el-col-pull-23{position:relative;right:95.8333333333%}.el-col-push-23{left:95.8333333333%;position:relative}.el-col-24{flex:0 0 100%;max-width:100%}.el-col-24,.el-col-24.is-guttered{display:block}.el-col-offset-24{margin-left:100%}.el-col-pull-24{position:relative;right:100%}.el-col-push-24{left:100%;position:relative}@media only screen and (max-width:767px){.el-col-xs-0{display:none;flex:0 0 0%;max-width:0}.el-col-xs-0.is-guttered{display:none}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{left:0;position:relative}.el-col-xs-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-xs-1,.el-col-xs-1.is-guttered{display:block}.el-col-xs-offset-1{margin-left:4.1666666667%}.el-col-xs-pull-1{position:relative;right:4.1666666667%}.el-col-xs-push-1{left:4.1666666667%;position:relative}.el-col-xs-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-xs-2,.el-col-xs-2.is-guttered{display:block}.el-col-xs-offset-2{margin-left:8.3333333333%}.el-col-xs-pull-2{position:relative;right:8.3333333333%}.el-col-xs-push-2{left:8.3333333333%;position:relative}.el-col-xs-3{flex:0 0 12.5%;max-width:12.5%}.el-col-xs-3,.el-col-xs-3.is-guttered{display:block}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{left:12.5%;position:relative}.el-col-xs-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-xs-4,.el-col-xs-4.is-guttered{display:block}.el-col-xs-offset-4{margin-left:16.6666666667%}.el-col-xs-pull-4{position:relative;right:16.6666666667%}.el-col-xs-push-4{left:16.6666666667%;position:relative}.el-col-xs-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-xs-5,.el-col-xs-5.is-guttered{display:block}.el-col-xs-offset-5{margin-left:20.8333333333%}.el-col-xs-pull-5{position:relative;right:20.8333333333%}.el-col-xs-push-5{left:20.8333333333%;position:relative}.el-col-xs-6{flex:0 0 25%;max-width:25%}.el-col-xs-6,.el-col-xs-6.is-guttered{display:block}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{left:25%;position:relative}.el-col-xs-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-xs-7,.el-col-xs-7.is-guttered{display:block}.el-col-xs-offset-7{margin-left:29.1666666667%}.el-col-xs-pull-7{position:relative;right:29.1666666667%}.el-col-xs-push-7{left:29.1666666667%;position:relative}.el-col-xs-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-xs-8,.el-col-xs-8.is-guttered{display:block}.el-col-xs-offset-8{margin-left:33.3333333333%}.el-col-xs-pull-8{position:relative;right:33.3333333333%}.el-col-xs-push-8{left:33.3333333333%;position:relative}.el-col-xs-9{flex:0 0 37.5%;max-width:37.5%}.el-col-xs-9,.el-col-xs-9.is-guttered{display:block}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{left:37.5%;position:relative}.el-col-xs-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-xs-10.is-guttered{display:block}.el-col-xs-offset-10{margin-left:41.6666666667%}.el-col-xs-pull-10{position:relative;right:41.6666666667%}.el-col-xs-push-10{left:41.6666666667%;position:relative}.el-col-xs-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-xs-11.is-guttered{display:block}.el-col-xs-offset-11{margin-left:45.8333333333%}.el-col-xs-pull-11{position:relative;right:45.8333333333%}.el-col-xs-push-11{left:45.8333333333%;position:relative}.el-col-xs-12{display:block;flex:0 0 50%;max-width:50%}.el-col-xs-12.is-guttered{display:block}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{left:50%;position:relative}.el-col-xs-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-xs-13.is-guttered{display:block}.el-col-xs-offset-13{margin-left:54.1666666667%}.el-col-xs-pull-13{position:relative;right:54.1666666667%}.el-col-xs-push-13{left:54.1666666667%;position:relative}.el-col-xs-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-xs-14.is-guttered{display:block}.el-col-xs-offset-14{margin-left:58.3333333333%}.el-col-xs-pull-14{position:relative;right:58.3333333333%}.el-col-xs-push-14{left:58.3333333333%;position:relative}.el-col-xs-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-xs-15.is-guttered{display:block}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{left:62.5%;position:relative}.el-col-xs-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-xs-16.is-guttered{display:block}.el-col-xs-offset-16{margin-left:66.6666666667%}.el-col-xs-pull-16{position:relative;right:66.6666666667%}.el-col-xs-push-16{left:66.6666666667%;position:relative}.el-col-xs-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-xs-17.is-guttered{display:block}.el-col-xs-offset-17{margin-left:70.8333333333%}.el-col-xs-pull-17{position:relative;right:70.8333333333%}.el-col-xs-push-17{left:70.8333333333%;position:relative}.el-col-xs-18{display:block;flex:0 0 75%;max-width:75%}.el-col-xs-18.is-guttered{display:block}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{left:75%;position:relative}.el-col-xs-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-xs-19.is-guttered{display:block}.el-col-xs-offset-19{margin-left:79.1666666667%}.el-col-xs-pull-19{position:relative;right:79.1666666667%}.el-col-xs-push-19{left:79.1666666667%;position:relative}.el-col-xs-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-xs-20.is-guttered{display:block}.el-col-xs-offset-20{margin-left:83.3333333333%}.el-col-xs-pull-20{position:relative;right:83.3333333333%}.el-col-xs-push-20{left:83.3333333333%;position:relative}.el-col-xs-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-xs-21.is-guttered{display:block}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{left:87.5%;position:relative}.el-col-xs-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-xs-22.is-guttered{display:block}.el-col-xs-offset-22{margin-left:91.6666666667%}.el-col-xs-pull-22{position:relative;right:91.6666666667%}.el-col-xs-push-22{left:91.6666666667%;position:relative}.el-col-xs-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-xs-23.is-guttered{display:block}.el-col-xs-offset-23{margin-left:95.8333333333%}.el-col-xs-pull-23{position:relative;right:95.8333333333%}.el-col-xs-push-23{left:95.8333333333%;position:relative}.el-col-xs-24{display:block;flex:0 0 100%;max-width:100%}.el-col-xs-24.is-guttered{display:block}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{left:100%;position:relative}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;flex:0 0 0%;max-width:0}.el-col-sm-0.is-guttered{display:none}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{left:0;position:relative}.el-col-sm-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-sm-1,.el-col-sm-1.is-guttered{display:block}.el-col-sm-offset-1{margin-left:4.1666666667%}.el-col-sm-pull-1{position:relative;right:4.1666666667%}.el-col-sm-push-1{left:4.1666666667%;position:relative}.el-col-sm-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-sm-2,.el-col-sm-2.is-guttered{display:block}.el-col-sm-offset-2{margin-left:8.3333333333%}.el-col-sm-pull-2{position:relative;right:8.3333333333%}.el-col-sm-push-2{left:8.3333333333%;position:relative}.el-col-sm-3{flex:0 0 12.5%;max-width:12.5%}.el-col-sm-3,.el-col-sm-3.is-guttered{display:block}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{left:12.5%;position:relative}.el-col-sm-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-sm-4,.el-col-sm-4.is-guttered{display:block}.el-col-sm-offset-4{margin-left:16.6666666667%}.el-col-sm-pull-4{position:relative;right:16.6666666667%}.el-col-sm-push-4{left:16.6666666667%;position:relative}.el-col-sm-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-sm-5,.el-col-sm-5.is-guttered{display:block}.el-col-sm-offset-5{margin-left:20.8333333333%}.el-col-sm-pull-5{position:relative;right:20.8333333333%}.el-col-sm-push-5{left:20.8333333333%;position:relative}.el-col-sm-6{flex:0 0 25%;max-width:25%}.el-col-sm-6,.el-col-sm-6.is-guttered{display:block}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{left:25%;position:relative}.el-col-sm-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-sm-7,.el-col-sm-7.is-guttered{display:block}.el-col-sm-offset-7{margin-left:29.1666666667%}.el-col-sm-pull-7{position:relative;right:29.1666666667%}.el-col-sm-push-7{left:29.1666666667%;position:relative}.el-col-sm-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-sm-8,.el-col-sm-8.is-guttered{display:block}.el-col-sm-offset-8{margin-left:33.3333333333%}.el-col-sm-pull-8{position:relative;right:33.3333333333%}.el-col-sm-push-8{left:33.3333333333%;position:relative}.el-col-sm-9{flex:0 0 37.5%;max-width:37.5%}.el-col-sm-9,.el-col-sm-9.is-guttered{display:block}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{left:37.5%;position:relative}.el-col-sm-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-sm-10.is-guttered{display:block}.el-col-sm-offset-10{margin-left:41.6666666667%}.el-col-sm-pull-10{position:relative;right:41.6666666667%}.el-col-sm-push-10{left:41.6666666667%;position:relative}.el-col-sm-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-sm-11.is-guttered{display:block}.el-col-sm-offset-11{margin-left:45.8333333333%}.el-col-sm-pull-11{position:relative;right:45.8333333333%}.el-col-sm-push-11{left:45.8333333333%;position:relative}.el-col-sm-12{display:block;flex:0 0 50%;max-width:50%}.el-col-sm-12.is-guttered{display:block}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{left:50%;position:relative}.el-col-sm-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-sm-13.is-guttered{display:block}.el-col-sm-offset-13{margin-left:54.1666666667%}.el-col-sm-pull-13{position:relative;right:54.1666666667%}.el-col-sm-push-13{left:54.1666666667%;position:relative}.el-col-sm-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-sm-14.is-guttered{display:block}.el-col-sm-offset-14{margin-left:58.3333333333%}.el-col-sm-pull-14{position:relative;right:58.3333333333%}.el-col-sm-push-14{left:58.3333333333%;position:relative}.el-col-sm-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-sm-15.is-guttered{display:block}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{left:62.5%;position:relative}.el-col-sm-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-sm-16.is-guttered{display:block}.el-col-sm-offset-16{margin-left:66.6666666667%}.el-col-sm-pull-16{position:relative;right:66.6666666667%}.el-col-sm-push-16{left:66.6666666667%;position:relative}.el-col-sm-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-sm-17.is-guttered{display:block}.el-col-sm-offset-17{margin-left:70.8333333333%}.el-col-sm-pull-17{position:relative;right:70.8333333333%}.el-col-sm-push-17{left:70.8333333333%;position:relative}.el-col-sm-18{display:block;flex:0 0 75%;max-width:75%}.el-col-sm-18.is-guttered{display:block}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{left:75%;position:relative}.el-col-sm-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-sm-19.is-guttered{display:block}.el-col-sm-offset-19{margin-left:79.1666666667%}.el-col-sm-pull-19{position:relative;right:79.1666666667%}.el-col-sm-push-19{left:79.1666666667%;position:relative}.el-col-sm-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-sm-20.is-guttered{display:block}.el-col-sm-offset-20{margin-left:83.3333333333%}.el-col-sm-pull-20{position:relative;right:83.3333333333%}.el-col-sm-push-20{left:83.3333333333%;position:relative}.el-col-sm-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-sm-21.is-guttered{display:block}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{left:87.5%;position:relative}.el-col-sm-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-sm-22.is-guttered{display:block}.el-col-sm-offset-22{margin-left:91.6666666667%}.el-col-sm-pull-22{position:relative;right:91.6666666667%}.el-col-sm-push-22{left:91.6666666667%;position:relative}.el-col-sm-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-sm-23.is-guttered{display:block}.el-col-sm-offset-23{margin-left:95.8333333333%}.el-col-sm-pull-23{position:relative;right:95.8333333333%}.el-col-sm-push-23{left:95.8333333333%;position:relative}.el-col-sm-24{display:block;flex:0 0 100%;max-width:100%}.el-col-sm-24.is-guttered{display:block}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{left:100%;position:relative}}@media only screen and (min-width:992px){.el-col-md-0{display:none;flex:0 0 0%;max-width:0}.el-col-md-0.is-guttered{display:none}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{left:0;position:relative}.el-col-md-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-md-1,.el-col-md-1.is-guttered{display:block}.el-col-md-offset-1{margin-left:4.1666666667%}.el-col-md-pull-1{position:relative;right:4.1666666667%}.el-col-md-push-1{left:4.1666666667%;position:relative}.el-col-md-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-md-2,.el-col-md-2.is-guttered{display:block}.el-col-md-offset-2{margin-left:8.3333333333%}.el-col-md-pull-2{position:relative;right:8.3333333333%}.el-col-md-push-2{left:8.3333333333%;position:relative}.el-col-md-3{flex:0 0 12.5%;max-width:12.5%}.el-col-md-3,.el-col-md-3.is-guttered{display:block}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{left:12.5%;position:relative}.el-col-md-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-md-4,.el-col-md-4.is-guttered{display:block}.el-col-md-offset-4{margin-left:16.6666666667%}.el-col-md-pull-4{position:relative;right:16.6666666667%}.el-col-md-push-4{left:16.6666666667%;position:relative}.el-col-md-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-md-5,.el-col-md-5.is-guttered{display:block}.el-col-md-offset-5{margin-left:20.8333333333%}.el-col-md-pull-5{position:relative;right:20.8333333333%}.el-col-md-push-5{left:20.8333333333%;position:relative}.el-col-md-6{flex:0 0 25%;max-width:25%}.el-col-md-6,.el-col-md-6.is-guttered{display:block}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{left:25%;position:relative}.el-col-md-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-md-7,.el-col-md-7.is-guttered{display:block}.el-col-md-offset-7{margin-left:29.1666666667%}.el-col-md-pull-7{position:relative;right:29.1666666667%}.el-col-md-push-7{left:29.1666666667%;position:relative}.el-col-md-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-md-8,.el-col-md-8.is-guttered{display:block}.el-col-md-offset-8{margin-left:33.3333333333%}.el-col-md-pull-8{position:relative;right:33.3333333333%}.el-col-md-push-8{left:33.3333333333%;position:relative}.el-col-md-9{flex:0 0 37.5%;max-width:37.5%}.el-col-md-9,.el-col-md-9.is-guttered{display:block}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{left:37.5%;position:relative}.el-col-md-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-md-10.is-guttered{display:block}.el-col-md-offset-10{margin-left:41.6666666667%}.el-col-md-pull-10{position:relative;right:41.6666666667%}.el-col-md-push-10{left:41.6666666667%;position:relative}.el-col-md-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-md-11.is-guttered{display:block}.el-col-md-offset-11{margin-left:45.8333333333%}.el-col-md-pull-11{position:relative;right:45.8333333333%}.el-col-md-push-11{left:45.8333333333%;position:relative}.el-col-md-12{display:block;flex:0 0 50%;max-width:50%}.el-col-md-12.is-guttered{display:block}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{left:50%;position:relative}.el-col-md-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-md-13.is-guttered{display:block}.el-col-md-offset-13{margin-left:54.1666666667%}.el-col-md-pull-13{position:relative;right:54.1666666667%}.el-col-md-push-13{left:54.1666666667%;position:relative}.el-col-md-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-md-14.is-guttered{display:block}.el-col-md-offset-14{margin-left:58.3333333333%}.el-col-md-pull-14{position:relative;right:58.3333333333%}.el-col-md-push-14{left:58.3333333333%;position:relative}.el-col-md-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-md-15.is-guttered{display:block}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{left:62.5%;position:relative}.el-col-md-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-md-16.is-guttered{display:block}.el-col-md-offset-16{margin-left:66.6666666667%}.el-col-md-pull-16{position:relative;right:66.6666666667%}.el-col-md-push-16{left:66.6666666667%;position:relative}.el-col-md-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-md-17.is-guttered{display:block}.el-col-md-offset-17{margin-left:70.8333333333%}.el-col-md-pull-17{position:relative;right:70.8333333333%}.el-col-md-push-17{left:70.8333333333%;position:relative}.el-col-md-18{display:block;flex:0 0 75%;max-width:75%}.el-col-md-18.is-guttered{display:block}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{left:75%;position:relative}.el-col-md-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-md-19.is-guttered{display:block}.el-col-md-offset-19{margin-left:79.1666666667%}.el-col-md-pull-19{position:relative;right:79.1666666667%}.el-col-md-push-19{left:79.1666666667%;position:relative}.el-col-md-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-md-20.is-guttered{display:block}.el-col-md-offset-20{margin-left:83.3333333333%}.el-col-md-pull-20{position:relative;right:83.3333333333%}.el-col-md-push-20{left:83.3333333333%;position:relative}.el-col-md-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-md-21.is-guttered{display:block}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{left:87.5%;position:relative}.el-col-md-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-md-22.is-guttered{display:block}.el-col-md-offset-22{margin-left:91.6666666667%}.el-col-md-pull-22{position:relative;right:91.6666666667%}.el-col-md-push-22{left:91.6666666667%;position:relative}.el-col-md-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-md-23.is-guttered{display:block}.el-col-md-offset-23{margin-left:95.8333333333%}.el-col-md-pull-23{position:relative;right:95.8333333333%}.el-col-md-push-23{left:95.8333333333%;position:relative}.el-col-md-24{display:block;flex:0 0 100%;max-width:100%}.el-col-md-24.is-guttered{display:block}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{left:100%;position:relative}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;flex:0 0 0%;max-width:0}.el-col-lg-0.is-guttered{display:none}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{left:0;position:relative}.el-col-lg-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-lg-1,.el-col-lg-1.is-guttered{display:block}.el-col-lg-offset-1{margin-left:4.1666666667%}.el-col-lg-pull-1{position:relative;right:4.1666666667%}.el-col-lg-push-1{left:4.1666666667%;position:relative}.el-col-lg-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-lg-2,.el-col-lg-2.is-guttered{display:block}.el-col-lg-offset-2{margin-left:8.3333333333%}.el-col-lg-pull-2{position:relative;right:8.3333333333%}.el-col-lg-push-2{left:8.3333333333%;position:relative}.el-col-lg-3{flex:0 0 12.5%;max-width:12.5%}.el-col-lg-3,.el-col-lg-3.is-guttered{display:block}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{left:12.5%;position:relative}.el-col-lg-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-lg-4,.el-col-lg-4.is-guttered{display:block}.el-col-lg-offset-4{margin-left:16.6666666667%}.el-col-lg-pull-4{position:relative;right:16.6666666667%}.el-col-lg-push-4{left:16.6666666667%;position:relative}.el-col-lg-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-lg-5,.el-col-lg-5.is-guttered{display:block}.el-col-lg-offset-5{margin-left:20.8333333333%}.el-col-lg-pull-5{position:relative;right:20.8333333333%}.el-col-lg-push-5{left:20.8333333333%;position:relative}.el-col-lg-6{flex:0 0 25%;max-width:25%}.el-col-lg-6,.el-col-lg-6.is-guttered{display:block}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{left:25%;position:relative}.el-col-lg-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-lg-7,.el-col-lg-7.is-guttered{display:block}.el-col-lg-offset-7{margin-left:29.1666666667%}.el-col-lg-pull-7{position:relative;right:29.1666666667%}.el-col-lg-push-7{left:29.1666666667%;position:relative}.el-col-lg-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-lg-8,.el-col-lg-8.is-guttered{display:block}.el-col-lg-offset-8{margin-left:33.3333333333%}.el-col-lg-pull-8{position:relative;right:33.3333333333%}.el-col-lg-push-8{left:33.3333333333%;position:relative}.el-col-lg-9{flex:0 0 37.5%;max-width:37.5%}.el-col-lg-9,.el-col-lg-9.is-guttered{display:block}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{left:37.5%;position:relative}.el-col-lg-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-lg-10.is-guttered{display:block}.el-col-lg-offset-10{margin-left:41.6666666667%}.el-col-lg-pull-10{position:relative;right:41.6666666667%}.el-col-lg-push-10{left:41.6666666667%;position:relative}.el-col-lg-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-lg-11.is-guttered{display:block}.el-col-lg-offset-11{margin-left:45.8333333333%}.el-col-lg-pull-11{position:relative;right:45.8333333333%}.el-col-lg-push-11{left:45.8333333333%;position:relative}.el-col-lg-12{display:block;flex:0 0 50%;max-width:50%}.el-col-lg-12.is-guttered{display:block}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{left:50%;position:relative}.el-col-lg-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-lg-13.is-guttered{display:block}.el-col-lg-offset-13{margin-left:54.1666666667%}.el-col-lg-pull-13{position:relative;right:54.1666666667%}.el-col-lg-push-13{left:54.1666666667%;position:relative}.el-col-lg-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-lg-14.is-guttered{display:block}.el-col-lg-offset-14{margin-left:58.3333333333%}.el-col-lg-pull-14{position:relative;right:58.3333333333%}.el-col-lg-push-14{left:58.3333333333%;position:relative}.el-col-lg-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-lg-15.is-guttered{display:block}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{left:62.5%;position:relative}.el-col-lg-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-lg-16.is-guttered{display:block}.el-col-lg-offset-16{margin-left:66.6666666667%}.el-col-lg-pull-16{position:relative;right:66.6666666667%}.el-col-lg-push-16{left:66.6666666667%;position:relative}.el-col-lg-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-lg-17.is-guttered{display:block}.el-col-lg-offset-17{margin-left:70.8333333333%}.el-col-lg-pull-17{position:relative;right:70.8333333333%}.el-col-lg-push-17{left:70.8333333333%;position:relative}.el-col-lg-18{display:block;flex:0 0 75%;max-width:75%}.el-col-lg-18.is-guttered{display:block}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{left:75%;position:relative}.el-col-lg-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-lg-19.is-guttered{display:block}.el-col-lg-offset-19{margin-left:79.1666666667%}.el-col-lg-pull-19{position:relative;right:79.1666666667%}.el-col-lg-push-19{left:79.1666666667%;position:relative}.el-col-lg-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-lg-20.is-guttered{display:block}.el-col-lg-offset-20{margin-left:83.3333333333%}.el-col-lg-pull-20{position:relative;right:83.3333333333%}.el-col-lg-push-20{left:83.3333333333%;position:relative}.el-col-lg-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-lg-21.is-guttered{display:block}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{left:87.5%;position:relative}.el-col-lg-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-lg-22.is-guttered{display:block}.el-col-lg-offset-22{margin-left:91.6666666667%}.el-col-lg-pull-22{position:relative;right:91.6666666667%}.el-col-lg-push-22{left:91.6666666667%;position:relative}.el-col-lg-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-lg-23.is-guttered{display:block}.el-col-lg-offset-23{margin-left:95.8333333333%}.el-col-lg-pull-23{position:relative;right:95.8333333333%}.el-col-lg-push-23{left:95.8333333333%;position:relative}.el-col-lg-24{display:block;flex:0 0 100%;max-width:100%}.el-col-lg-24.is-guttered{display:block}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{left:100%;position:relative}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;flex:0 0 0%;max-width:0}.el-col-xl-0.is-guttered{display:none}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{left:0;position:relative}.el-col-xl-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-xl-1,.el-col-xl-1.is-guttered{display:block}.el-col-xl-offset-1{margin-left:4.1666666667%}.el-col-xl-pull-1{position:relative;right:4.1666666667%}.el-col-xl-push-1{left:4.1666666667%;position:relative}.el-col-xl-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-xl-2,.el-col-xl-2.is-guttered{display:block}.el-col-xl-offset-2{margin-left:8.3333333333%}.el-col-xl-pull-2{position:relative;right:8.3333333333%}.el-col-xl-push-2{left:8.3333333333%;position:relative}.el-col-xl-3{flex:0 0 12.5%;max-width:12.5%}.el-col-xl-3,.el-col-xl-3.is-guttered{display:block}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{left:12.5%;position:relative}.el-col-xl-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-xl-4,.el-col-xl-4.is-guttered{display:block}.el-col-xl-offset-4{margin-left:16.6666666667%}.el-col-xl-pull-4{position:relative;right:16.6666666667%}.el-col-xl-push-4{left:16.6666666667%;position:relative}.el-col-xl-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-xl-5,.el-col-xl-5.is-guttered{display:block}.el-col-xl-offset-5{margin-left:20.8333333333%}.el-col-xl-pull-5{position:relative;right:20.8333333333%}.el-col-xl-push-5{left:20.8333333333%;position:relative}.el-col-xl-6{flex:0 0 25%;max-width:25%}.el-col-xl-6,.el-col-xl-6.is-guttered{display:block}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{left:25%;position:relative}.el-col-xl-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-xl-7,.el-col-xl-7.is-guttered{display:block}.el-col-xl-offset-7{margin-left:29.1666666667%}.el-col-xl-pull-7{position:relative;right:29.1666666667%}.el-col-xl-push-7{left:29.1666666667%;position:relative}.el-col-xl-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-xl-8,.el-col-xl-8.is-guttered{display:block}.el-col-xl-offset-8{margin-left:33.3333333333%}.el-col-xl-pull-8{position:relative;right:33.3333333333%}.el-col-xl-push-8{left:33.3333333333%;position:relative}.el-col-xl-9{flex:0 0 37.5%;max-width:37.5%}.el-col-xl-9,.el-col-xl-9.is-guttered{display:block}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{left:37.5%;position:relative}.el-col-xl-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-xl-10.is-guttered{display:block}.el-col-xl-offset-10{margin-left:41.6666666667%}.el-col-xl-pull-10{position:relative;right:41.6666666667%}.el-col-xl-push-10{left:41.6666666667%;position:relative}.el-col-xl-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-xl-11.is-guttered{display:block}.el-col-xl-offset-11{margin-left:45.8333333333%}.el-col-xl-pull-11{position:relative;right:45.8333333333%}.el-col-xl-push-11{left:45.8333333333%;position:relative}.el-col-xl-12{display:block;flex:0 0 50%;max-width:50%}.el-col-xl-12.is-guttered{display:block}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{left:50%;position:relative}.el-col-xl-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-xl-13.is-guttered{display:block}.el-col-xl-offset-13{margin-left:54.1666666667%}.el-col-xl-pull-13{position:relative;right:54.1666666667%}.el-col-xl-push-13{left:54.1666666667%;position:relative}.el-col-xl-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-xl-14.is-guttered{display:block}.el-col-xl-offset-14{margin-left:58.3333333333%}.el-col-xl-pull-14{position:relative;right:58.3333333333%}.el-col-xl-push-14{left:58.3333333333%;position:relative}.el-col-xl-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-xl-15.is-guttered{display:block}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{left:62.5%;position:relative}.el-col-xl-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-xl-16.is-guttered{display:block}.el-col-xl-offset-16{margin-left:66.6666666667%}.el-col-xl-pull-16{position:relative;right:66.6666666667%}.el-col-xl-push-16{left:66.6666666667%;position:relative}.el-col-xl-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-xl-17.is-guttered{display:block}.el-col-xl-offset-17{margin-left:70.8333333333%}.el-col-xl-pull-17{position:relative;right:70.8333333333%}.el-col-xl-push-17{left:70.8333333333%;position:relative}.el-col-xl-18{display:block;flex:0 0 75%;max-width:75%}.el-col-xl-18.is-guttered{display:block}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{left:75%;position:relative}.el-col-xl-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-xl-19.is-guttered{display:block}.el-col-xl-offset-19{margin-left:79.1666666667%}.el-col-xl-pull-19{position:relative;right:79.1666666667%}.el-col-xl-push-19{left:79.1666666667%;position:relative}.el-col-xl-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-xl-20.is-guttered{display:block}.el-col-xl-offset-20{margin-left:83.3333333333%}.el-col-xl-pull-20{position:relative;right:83.3333333333%}.el-col-xl-push-20{left:83.3333333333%;position:relative}.el-col-xl-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-xl-21.is-guttered{display:block}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{left:87.5%;position:relative}.el-col-xl-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-xl-22.is-guttered{display:block}.el-col-xl-offset-22{margin-left:91.6666666667%}.el-col-xl-pull-22{position:relative;right:91.6666666667%}.el-col-xl-push-22{left:91.6666666667%;position:relative}.el-col-xl-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-xl-23.is-guttered{display:block}.el-col-xl-offset-23{margin-left:95.8333333333%}.el-col-xl-pull-23{position:relative;right:95.8333333333%}.el-col-xl-push-23{left:95.8333333333%;position:relative}.el-col-xl-24{display:block;flex:0 0 100%;max-width:100%}.el-col-xl-24.is-guttered{display:block}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{left:100%;position:relative}} diff --git a/resources/views/dist/css/el-date-picker.DZdkGm2i.css b/resources/views/dist/css/el-date-picker.DZdkGm2i.css new file mode 100644 index 0000000..33a90a8 --- /dev/null +++ b/resources/views/dist/css/el-date-picker.DZdkGm2i.css @@ -0,0 +1 @@ +.el-date-table{font-size:12px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:var(--el-datepicker-text-color)}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child .el-date-table-cell{border-bottom-left-radius:15px;border-top-left-radius:15px;margin-left:5px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child .el-date-table-cell{border-bottom-right-radius:15px;border-top-right-radius:15px;margin-right:5px}.el-date-table.is-week-mode .el-date-table__row.current .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td{box-sizing:border-box;cursor:pointer;height:30px;padding:4px 0;position:relative;text-align:center;width:32px}.el-date-table td .el-date-table-cell{box-sizing:border-box;height:30px;padding:3px 0}.el-date-table td .el-date-table-cell .el-date-table-cell__text{border-radius:50%;display:block;height:24px;left:50%;line-height:24px;margin:0 auto;position:absolute;transform:translate(-50%);width:24px}.el-date-table td.next-month,.el-date-table td.prev-month{color:var(--el-datepicker-off-text-color)}.el-date-table td.today{position:relative}.el-date-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-date-table td.today.end-date .el-date-table-cell__text,.el-date-table td.today.start-date .el-date-table-cell__text{color:#fff}.el-date-table td.available:hover{color:var(--el-datepicker-hover-text-color)}.el-date-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-date-table td.current:not(.disabled) .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-date-table td.current:not(.disabled):focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-date-table td.end-date .el-date-table-cell,.el-date-table td.start-date .el-date-table-cell{color:#fff}.el-date-table td.end-date .el-date-table-cell__text,.el-date-table td.start-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color)}.el-date-table td.start-date .el-date-table-cell{border-bottom-left-radius:15px;border-top-left-radius:15px;margin-left:5px}.el-date-table td.end-date .el-date-table-cell{border-bottom-right-radius:15px;border-top-right-radius:15px;margin-right:5px}.el-date-table td.disabled .el-date-table-cell{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed;opacity:1}.el-date-table td.selected .el-date-table-cell{border-radius:15px;margin-left:5px;margin-right:5px}.el-date-table td.selected .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);border-radius:15px;color:#fff}.el-date-table td.week{color:var(--el-datepicker-header-text-color);font-size:80%}.el-date-table td:focus{outline:none}.el-date-table th{border-bottom:1px solid var(--el-border-color-lighter);color:var(--el-datepicker-header-text-color);font-weight:400;padding:5px}.el-month-table{border-collapse:collapse;font-size:12px;margin:-1px}.el-month-table td{cursor:pointer;padding:8px 0;position:relative;text-align:center;width:68px}.el-month-table td div{box-sizing:border-box;height:48px;padding:6px 0}.el-month-table td.today .cell{color:var(--el-color-primary);font-weight:700}.el-month-table td.today.end-date .cell,.el-month-table td.today.start-date .cell{color:#fff}.el-month-table td.disabled .cell{background-color:var(--el-fill-color-light);cursor:not-allowed}.el-month-table td.disabled .cell,.el-month-table td.disabled .cell:hover{color:var(--el-text-color-placeholder)}.el-month-table td .cell{border-radius:18px;color:var(--el-datepicker-text-color);display:block;height:36px;left:50%;line-height:36px;margin:0 auto;position:absolute;transform:translate(-50%);width:54px}.el-month-table td .cell:hover{color:var(--el-datepicker-hover-text-color)}.el-month-table td.in-range div{background-color:var(--el-datepicker-inrange-bg-color)}.el-month-table td.in-range div:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-month-table td.end-date div,.el-month-table td.start-date div{color:#fff}.el-month-table td.end-date .cell,.el-month-table td.start-date .cell{background-color:var(--el-datepicker-active-color);color:#fff}.el-month-table td.start-date div{border-bottom-left-radius:24px;border-top-left-radius:24px;margin-left:3px}.el-month-table td.end-date div{border-bottom-right-radius:24px;border-top-right-radius:24px;margin-right:3px}.el-month-table td.current:not(.disabled) div{border-radius:24px;margin-left:3px;margin-right:3px}.el-month-table td.current:not(.disabled) .cell{background-color:var(--el-datepicker-active-color);color:#fff}.el-month-table td:focus-visible{outline:none}.el-month-table td:focus-visible .cell{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-year-table{border-collapse:collapse;font-size:12px;margin:-1px}.el-year-table .el-icon{color:var(--el-datepicker-icon-color)}.el-year-table td{cursor:pointer;padding:8px 0;position:relative;text-align:center;width:68px}.el-year-table td div{box-sizing:border-box;height:48px;padding:6px 0}.el-year-table td.today .cell{color:var(--el-color-primary);font-weight:700}.el-year-table td.disabled .cell{background-color:var(--el-fill-color-light);cursor:not-allowed}.el-year-table td.disabled .cell,.el-year-table td.disabled .cell:hover{color:var(--el-text-color-placeholder)}.el-year-table td .cell{border-radius:18px;color:var(--el-datepicker-text-color);display:block;height:36px;left:50%;line-height:36px;margin:0 auto;position:absolute;transform:translate(-50%);width:54px}.el-year-table td .cell:hover{color:var(--el-datepicker-hover-text-color)}.el-year-table td.current:not(.disabled) div{border-radius:24px;margin-left:3px;margin-right:3px}.el-year-table td.current:not(.disabled) .cell{background-color:var(--el-datepicker-active-color);color:#fff}.el-year-table td:focus-visible{outline:none}.el-year-table td:focus-visible .cell{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{display:inline-block;max-height:192px;overflow:auto;position:relative;vertical-align:top;width:50%}.el-time-spinner__wrapper.el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__wrapper.is-arrow{box-sizing:border-box;overflow:hidden;text-align:center}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:default}.el-time-spinner__arrow{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;height:30px;left:0;line-height:30px;position:absolute;text-align:center;width:100%;z-index:var(--el-index-normal)}.el-time-spinner__arrow:hover{color:var(--el-color-primary)}.el-time-spinner__arrow.arrow-up{top:10px}.el-time-spinner__arrow.arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__list{list-style:none;margin:0}.el-time-spinner__list:after,.el-time-spinner__list:before{content:"";display:block;height:80px;width:100%}.el-time-spinner__item{color:var(--el-text-color-regular);font-size:12px;height:32px;line-height:32px}.el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:pointer}.el-time-spinner__item.is-active:not(.is-disabled){color:var(--el-text-color-primary);font-weight:700}.el-time-spinner__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-picker__popper{--el-datepicker-border-color:var(--el-disabled-border-color)}.el-picker__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-picker__popper.el-popper,.el-picker__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-datepicker-border-color)}.el-picker__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-date-editor{--el-date-editor-width:220px;--el-date-editor-monthrange-width:300px;--el-date-editor-daterange-width:350px;--el-date-editor-datetimerange-width:400px;--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;position:relative;text-align:left;vertical-align:middle}.el-date-editor.el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset}.el-date-editor.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-date-editor.el-input,.el-date-editor.el-input__wrapper{height:var(--el-input-height,var(--el-component-size));width:var(--el-date-editor-width)}.el-date-editor--monthrange{--el-date-editor-width:var(--el-date-editor-monthrange-width)}.el-date-editor--daterange,.el-date-editor--timerange{--el-date-editor-width:var(--el-date-editor-daterange-width)}.el-date-editor--datetimerange{--el-date-editor-width:var(--el-date-editor-datetimerange-width)}.el-date-editor--dates .el-input__wrapper{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .clear-icon,.el-date-editor .close-icon{cursor:pointer}.el-date-editor .clear-icon:hover{color:var(--el-text-color-secondary)}.el-date-editor .el-range__icon{color:var(--el-text-color-placeholder);float:left;font-size:14px;height:inherit}.el-date-editor .el-range__icon svg{vertical-align:middle}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;color:var(--el-text-color-regular);display:inline-block;font-size:var(--el-font-size-base);height:30px;line-height:30px;margin:0;outline:none;padding:0;text-align:center;width:39%}.el-date-editor .el-range-input::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-input::placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-separator{align-items:center;color:var(--el-text-color-primary);display:inline-flex;flex:1;font-size:14px;height:100%;justify-content:center;margin:0;overflow-wrap:break-word;padding:0 5px}.el-date-editor .el-range__close-icon{color:var(--el-text-color-placeholder);cursor:pointer;font-size:14px;height:inherit;width:unset}.el-date-editor .el-range__close-icon:hover{color:var(--el-text-color-secondary)}.el-date-editor .el-range__close-icon svg{vertical-align:middle}.el-date-editor .el-range__close-icon--hidden{opacity:0;visibility:hidden}.el-range-editor.el-input__wrapper{align-items:center;display:inline-flex;padding:0 10px}.el-range-editor.is-active,.el-range-editor.is-active:hover{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-range-editor--large{line-height:var(--el-component-size-large)}.el-range-editor--large.el-input__wrapper{height:var(--el-component-size-large)}.el-range-editor--large .el-range-separator{font-size:14px;line-height:40px}.el-range-editor--large .el-range-input{font-size:14px;height:38px;line-height:38px}.el-range-editor--small{line-height:var(--el-component-size-small)}.el-range-editor--small.el-input__wrapper{height:var(--el-component-size-small)}.el-range-editor--small .el-range-separator{font-size:12px;line-height:24px}.el-range-editor--small .el-range-input{font-size:12px;height:22px;line-height:22px}.el-range-editor.is-disabled{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled,.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:var(--el-disabled-border-color)}.el-range-editor.is-disabled input{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled input::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled input::placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled .el-range-separator{color:var(--el-disabled-text-color)}.el-picker-panel{background:var(--el-bg-color-overlay);border-radius:var(--el-border-radius-base);color:var(--el-text-color-regular);line-height:30px}.el-picker-panel .el-time-panel{background-color:var(--el-bg-color-overlay);border:1px solid var(--el-datepicker-border-color);box-shadow:var(--el-box-shadow-light);margin:5px 0}.el-picker-panel__body-wrapper:after,.el-picker-panel__body:after{clear:both;content:"";display:table}.el-picker-panel__content{margin:15px;position:relative}.el-picker-panel__footer{background-color:var(--el-bg-color-overlay);border-top:1px solid var(--el-datepicker-inner-border-color);font-size:0;padding:4px 12px;position:relative;text-align:right}.el-picker-panel__shortcut{background-color:transparent;border:0;color:var(--el-datepicker-text-color);cursor:pointer;display:block;font-size:14px;line-height:28px;outline:none;padding-left:12px;text-align:left;width:100%}.el-picker-panel__shortcut:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:var(--el-datepicker-active-color)}.el-picker-panel__btn{background-color:transparent;border:1px solid var(--el-fill-color-darker);border-radius:2px;color:var(--el-text-color-primary);cursor:pointer;font-size:12px;line-height:24px;outline:none;padding:0 20px}.el-picker-panel__btn[disabled]{color:var(--el-text-color-disabled);cursor:not-allowed}.el-picker-panel__icon-btn{background:transparent;border:0;color:var(--el-datepicker-icon-color);cursor:pointer;font-size:12px;margin-top:8px;outline:none}.el-picker-panel__icon-btn:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn:focus-visible{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn.is-disabled{color:var(--el-text-color-disabled)}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__icon-btn .el-icon{cursor:pointer;font-size:inherit}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{background-color:var(--el-bg-color-overlay);border-right:1px solid var(--el-datepicker-inner-border-color);bottom:0;box-sizing:border-box;overflow:auto;padding-top:6px;position:absolute;top:0;width:110px}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-date-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary);width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{display:table-cell;padding:0 5px;position:relative}.el-date-picker__time-header{border-bottom:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;display:table;font-size:12px;padding:8px 5px 5px;position:relative;width:100%}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{border-bottom:1px solid var(--el-border-color-lighter);margin-bottom:0;padding-bottom:12px}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{color:var(--el-text-color-regular);cursor:pointer;font-size:16px;font-weight:500;line-height:22px;padding:0 5px;text-align:center}.el-date-picker__header-label:hover{color:var(--el-datepicker-hover-text-color)}.el-date-picker__header-label:focus-visible{color:var(--el-datepicker-hover-text-color);outline:none}.el-date-picker__header-label.active{color:var(--el-datepicker-active-color)}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{cursor:pointer;float:left;line-height:30px;margin-left:10px}.el-date-picker .el-time-panel{position:absolute}.el-date-range-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary);width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{height:28px;position:relative;text-align:center}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{box-sizing:border-box;float:left;margin:0;padding:16px;width:50%}.el-date-range-picker__content.is-left{border-right:1px solid var(--el-datepicker-inner-border-color)}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{border-bottom:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;display:table;font-size:12px;padding:8px 5px 5px;position:relative;width:100%}.el-date-range-picker__time-header>.el-icon-arrow-right{color:var(--el-datepicker-icon-color);display:table-cell;font-size:20px;vertical-align:middle}.el-date-range-picker__time-picker-wrap{display:table-cell;padding:0 5px;position:relative}.el-date-range-picker__time-picker-wrap .el-picker-panel{background:#fff;position:absolute;right:0;top:13px;z-index:1}.el-date-range-picker__time-picker-wrap .el-time-panel{position:absolute}.el-time-range-picker{overflow:visible;width:354px}.el-time-range-picker__content{padding:10px;position:relative;text-align:center;z-index:1}.el-time-range-picker__cell{box-sizing:border-box;display:inline-block;margin:0;padding:4px 7px 7px;width:50%}.el-time-range-picker__header{font-size:14px;margin-bottom:5px;text-align:center}.el-time-range-picker__body{border:1px solid var(--el-datepicker-border-color);border-radius:2px}.el-time-panel{border-radius:2px;box-sizing:content-box;left:0;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:180px;z-index:var(--el-index-top)}.el-time-panel__content{font-size:0;overflow:hidden;position:relative}.el-time-panel__content:after,.el-time-panel__content:before{box-sizing:border-box;content:"";height:32px;left:0;margin-top:-16px;padding-top:6px;position:absolute;right:0;text-align:left;top:50%;z-index:-1}.el-time-panel__content:after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content:before{border-bottom:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);margin-left:12%;margin-right:12%;padding-left:50%}.el-time-panel__content.has-seconds:after{left:66.6666666667%}.el-time-panel__content.has-seconds:before{padding-left:33.3333333333%}.el-time-panel__footer{border-top:1px solid var(--el-timepicker-inner-border-color,var(--el-border-color-light));box-sizing:border-box;height:36px;line-height:25px;padding:4px;text-align:right}.el-time-panel__btn{background-color:transparent;border:none;color:var(--el-text-color-primary);cursor:pointer;font-size:12px;line-height:28px;margin:0 5px;outline:none;padding:0 5px}.el-time-panel__btn.confirm{color:var(--el-timepicker-active-color,var(--el-color-primary));font-weight:800} diff --git a/resources/views/dist/css/el-dialog.BCeqVwJ2.css b/resources/views/dist/css/el-dialog.BCeqVwJ2.css new file mode 100644 index 0000000..215678e --- /dev/null +++ b/resources/views/dist/css/el-dialog.BCeqVwJ2.css @@ -0,0 +1 @@ +:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{background:var(--el-popup-modal-bg-color);height:100%;left:0;opacity:var(--el-popup-modal-opacity);position:fixed;top:0;width:100%}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:16px;--el-dialog-border-radius:var(--el-border-radius-small);background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;margin:var(--el-dialog-margin-top,15vh) auto 50px;overflow-wrap:break-word;padding:var(--el-dialog-padding-primary);position:relative;width:var(--el-dialog-width,50%)}.el-dialog:focus{outline:none!important}.el-dialog.is-align-center{margin:auto}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;height:100%;margin-bottom:0;overflow:auto}.el-dialog__wrapper{bottom:0;left:0;margin:0;overflow:auto;position:fixed;right:0;top:0}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-dialog__header{padding-bottom:var(--el-dialog-padding-primary)}.el-dialog__header.show-close{padding-right:calc(var(--el-dialog-padding-primary) + var(--el-message-close-size, 16px))}.el-dialog__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:48px;outline:none;padding:0;position:absolute;right:0;top:0;width:48px}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{color:var(--el-text-color-primary);font-size:var(--el-dialog-title-font-size);line-height:var(--el-dialog-font-line-height)}.el-dialog__body{color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size)}.el-dialog__footer{box-sizing:border-box;padding-top:var(--el-dialog-padding-primary);text-align:right}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-overlay-dialog{bottom:0;left:0;overflow:auto;position:fixed;right:0;top:0}.dialog-fade-enter-active{animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{animation:dialog-fade-out var(--el-transition-duration)}@keyframes dialog-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes dialog-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}} diff --git a/resources/views/dist/css/el-divider.DtiKewmW.css b/resources/views/dist/css/el-divider.DtiKewmW.css new file mode 100644 index 0000000..88c73b4 --- /dev/null +++ b/resources/views/dist/css/el-divider.DtiKewmW.css @@ -0,0 +1 @@ +.el-button-group{display:inline-block;vertical-align:middle}.el-button-group:after,.el-button-group:before{content:"";display:table}.el-button-group:after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button:first-child{border-bottom-right-radius:0;border-top-right-radius:0}.el-button-group>.el-button:last-child{border-bottom-left-radius:0;border-top-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-bottom-left-radius:var(--el-border-radius-base);border-bottom-right-radius:var(--el-border-radius-base);border-top-left-radius:var(--el-border-radius-base);border-top-right-radius:var(--el-border-radius-base)}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:var(--el-border-radius-round)}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button.is-active,.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.el-button-group>.el-dropdown>.el-button{border-bottom-left-radius:0;border-left-color:var(--el-button-divide-border-color);border-top-left-radius:0}.el-button-group .el-button--primary:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--primary:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-dropdown{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);line-height:1;position:relative;vertical-align:top}.el-dropdown.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-dropdown__popper{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10}.el-dropdown__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-dropdown-menu-box-shadow)}.el-dropdown__popper.el-popper,.el-dropdown__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-dropdown__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-dropdown__popper .el-dropdown-menu{border:none}.el-dropdown__popper .el-dropdown__popper-selfdefine{outline:none}.el-dropdown__popper .el-scrollbar__bar{z-index:calc(var(--el-dropdown-menu-index) + 1)}.el-dropdown__popper .el-dropdown__list{box-sizing:border-box;list-style:none;margin:0;padding:0}.el-dropdown .el-dropdown__caret-button{align-items:center;border-left:none;display:inline-flex;justify-content:center;padding-left:0;padding-right:0;width:32px}.el-dropdown .el-dropdown__caret-button>span{display:inline-flex}.el-dropdown .el-dropdown__caret-button:before{background:var(--el-overlay-color-lighter);bottom:-1px;content:"";display:block;left:0;position:absolute;top:-1px;width:1px}.el-dropdown .el-dropdown__caret-button.el-button:before{background:var(--el-border-color);opacity:.5}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{font-size:inherit;padding-left:0}.el-dropdown .el-dropdown-selfdefine{outline:none}.el-dropdown--large .el-dropdown__caret-button{width:40px}.el-dropdown--small .el-dropdown__caret-button{width:24px}.el-dropdown-menu{background-color:var(--el-bg-color-overlay);border:none;border-radius:var(--el-border-radius-base);box-shadow:none;left:0;list-style:none;margin:0;padding:5px 0;position:relative;top:0;z-index:var(--el-dropdown-menu-index)}.el-dropdown-menu__item{align-items:center;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:var(--el-font-size-base);line-height:22px;list-style:none;margin:0;outline:none;padding:5px 16px;white-space:nowrap}.el-dropdown-menu__item:not(.is-disabled):focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:var(--el-dropdown-menuItem-hover-fill);color:var(--el-dropdown-menuItem-hover-color)}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{border-top:1px solid var(--el-border-color-lighter);margin:6px 0}.el-dropdown-menu__item.is-disabled{color:var(--el-text-color-disabled);cursor:not-allowed}.el-dropdown-menu--large{padding:7px 0}.el-dropdown-menu--large .el-dropdown-menu__item{font-size:14px;line-height:22px;padding:7px 20px}.el-dropdown-menu--large .el-dropdown-menu__item--divided{margin:8px 0}.el-dropdown-menu--small{padding:3px 0}.el-dropdown-menu--small .el-dropdown-menu__item{font-size:12px;line-height:20px;padding:2px 12px}.el-dropdown-menu--small .el-dropdown-menu__item--divided{margin:4px 0}.el-divider{position:relative}.el-divider--horizontal{border-top:1px var(--el-border-color) var(--el-border-style);display:block;height:1px;margin:24px 0;width:100%}.el-divider--vertical{border-left:1px var(--el-border-color) var(--el-border-style);display:inline-block;height:1em;margin:0 8px;position:relative;vertical-align:middle;width:1px}.el-divider__text{background-color:var(--el-bg-color);color:var(--el-text-color-primary);font-size:14px;font-weight:500;padding:0 20px;position:absolute}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translate(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)} diff --git a/resources/views/dist/css/el-drawer.CswTcYR2.css b/resources/views/dist/css/el-drawer.CswTcYR2.css new file mode 100644 index 0000000..a09ffa2 --- /dev/null +++ b/resources/views/dist/css/el-drawer.CswTcYR2.css @@ -0,0 +1 @@ +.el-drawer{--el-drawer-bg-color:var(--el-dialog-bg-color,var(--el-bg-color));--el-drawer-padding-primary:var(--el-dialog-padding-primary,20px);background-color:var(--el-drawer-bg-color);box-shadow:var(--el-box-shadow-dark);box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden;position:absolute;transition:all var(--el-transition-duration)}.el-drawer .btt,.el-drawer .ltr,.el-drawer .rtl,.el-drawer .ttb{transform:translate(0)}.el-drawer__sr-focus:focus{outline:none!important}.el-drawer__header{align-items:center;color:#72767b;display:flex;margin-bottom:32px;padding:var(--el-drawer-padding-primary);padding-bottom:0}.el-drawer__header>:first-child{flex:1}.el-drawer__title{flex:1;font-size:16px;line-height:inherit;margin:0}.el-drawer__footer{padding:var(--el-drawer-padding-primary);padding-top:10px;text-align:right}.el-drawer__close-btn{background-color:transparent;border:none;color:inherit;cursor:pointer;display:inline-flex;font-size:var(--el-font-size-extra-large);outline:none}.el-drawer__close-btn:focus i,.el-drawer__close-btn:hover i{color:var(--el-color-primary)}.el-drawer__body{flex:1;overflow:auto;padding:var(--el-drawer-padding-primary)}.el-drawer__body>*{box-sizing:border-box}.el-drawer.ltr,.el-drawer.rtl{bottom:0;height:100%;top:0}.el-drawer.btt,.el-drawer.ttb{left:0;right:0;width:100%}.el-drawer.ltr{left:0}.el-drawer.rtl{right:0}.el-drawer.ttb{top:0}.el-drawer.btt{bottom:0}.el-drawer-fade-enter-active,.el-drawer-fade-leave-active{transition:all var(--el-transition-duration)}.el-drawer-fade-enter-active,.el-drawer-fade-enter-from,.el-drawer-fade-enter-to,.el-drawer-fade-leave-active,.el-drawer-fade-leave-from,.el-drawer-fade-leave-to{overflow:hidden!important}.el-drawer-fade-enter-from,.el-drawer-fade-leave-to{opacity:0}.el-drawer-fade-enter-to,.el-drawer-fade-leave-from{opacity:1}.el-drawer-fade-enter-from .rtl,.el-drawer-fade-leave-to .rtl{transform:translate(100%)}.el-drawer-fade-enter-from .ltr,.el-drawer-fade-leave-to .ltr{transform:translate(-100%)}.el-drawer-fade-enter-from .ttb,.el-drawer-fade-leave-to .ttb{transform:translateY(-100%)}.el-drawer-fade-enter-from .btt,.el-drawer-fade-leave-to .btt{transform:translateY(100%)} diff --git a/resources/views/dist/css/el-form.Bw6vhIyH.css b/resources/views/dist/css/el-form.Bw6vhIyH.css new file mode 100644 index 0000000..8fc4828 --- /dev/null +++ b/resources/views/dist/css/el-form.Bw6vhIyH.css @@ -0,0 +1 @@ +.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{display:inline-flex;margin-right:32px;vertical-align:middle}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{justify-content:flex-start}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{display:block;height:auto;line-height:22px;margin-bottom:8px;text-align:left}.el-form-item__label-wrap{display:flex}.el-form-item__label{align-items:flex-start;box-sizing:border-box;color:var(--el-text-color-regular);display:inline-flex;flex:0 0 auto;font-size:var(--el-form-label-font-size);height:32px;justify-content:flex-end;line-height:32px;padding:0 12px 0 0}.el-form-item__content{align-items:center;display:flex;flex:1;flex-wrap:wrap;font-size:var(--font-size);line-height:32px;min-width:0;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;left:0;line-height:1;padding-top:2px;position:absolute;top:100%}.el-form-item__error--inline{display:inline-block;left:auto;margin-left:10px;position:relative;top:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before{color:var(--el-color-danger);content:"*";margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after{color:var(--el-color-danger);content:"*";margin-left:4px}.el-form-item.is-error .el-input__wrapper,.el-form-item.is-error .el-input__wrapper.is-focus,.el-form-item.is-error .el-input__wrapper:focus,.el-form-item.is-error .el-input__wrapper:hover,.el-form-item.is-error .el-select__wrapper,.el-form-item.is-error .el-select__wrapper.is-focus,.el-form-item.is-error .el-select__wrapper:focus,.el-form-item.is-error .el-select__wrapper:hover,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner.is-focus,.el-form-item.is-error .el-textarea__inner:focus,.el-form-item.is-error .el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px transparent}.el-form-item.is-error .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon{display:inline-flex} diff --git a/resources/views/dist/css/el-image-viewer.DufDdbED.css b/resources/views/dist/css/el-image-viewer.DufDdbED.css new file mode 100644 index 0000000..cbfa761 --- /dev/null +++ b/resources/views/dist/css/el-image-viewer.DufDdbED.css @@ -0,0 +1 @@ +.el-image-viewer__wrapper{bottom:0;left:0;position:fixed;right:0;top:0}.el-image-viewer__btn{align-items:center;border-radius:50%;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;opacity:.8;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:1}.el-image-viewer__btn .el-icon{cursor:pointer;font-size:inherit}.el-image-viewer__close{font-size:40px;height:40px;right:40px;top:40px;width:40px}.el-image-viewer__canvas{align-items:center;display:flex;height:100%;justify-content:center;position:static;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}.el-image-viewer__actions{background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px;bottom:30px;height:44px;left:50%;padding:0 23px;transform:translate(-50%);width:282px}.el-image-viewer__actions__inner{align-items:center;color:#fff;cursor:default;display:flex;font-size:23px;height:100%;justify-content:space-around;width:100%}.el-image-viewer__prev{left:40px}.el-image-viewer__next,.el-image-viewer__prev{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;top:50%;transform:translateY(-50%);width:44px}.el-image-viewer__next{right:40px;text-indent:2px}.el-image-viewer__close{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;width:44px}.el-image-viewer__mask{background:#000;height:100%;left:0;opacity:.5;position:absolute;top:0;width:100%}.viewer-fade-enter-active{animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--el-transition-duration)}@keyframes viewer-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes viewer-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}} diff --git a/resources/views/dist/css/el-image.BrUZgf8Q.css b/resources/views/dist/css/el-image.BrUZgf8Q.css new file mode 100644 index 0000000..174c23d --- /dev/null +++ b/resources/views/dist/css/el-image.BrUZgf8Q.css @@ -0,0 +1 @@ +.el-image__error,.el-image__inner,.el-image__placeholder,.el-image__wrapper{height:100%;width:100%}.el-image{display:inline-block;overflow:hidden;position:relative}.el-image__inner{opacity:1;vertical-align:top}.el-image__inner.is-loading{opacity:0}.el-image__wrapper{left:0;position:absolute;top:0}.el-image__error,.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{align-items:center;color:var(--el-text-color-placeholder);display:flex;font-size:14px;justify-content:center;vertical-align:middle}.el-image__preview{cursor:pointer} diff --git a/resources/views/dist/css/el-input-number.52TPlFlv.css b/resources/views/dist/css/el-input-number.52TPlFlv.css new file mode 100644 index 0000000..a7dd168 --- /dev/null +++ b/resources/views/dist/css/el-input-number.52TPlFlv.css @@ -0,0 +1 @@ +.el-input-number{display:inline-flex;line-height:30px;position:relative;width:150px}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;line-height:1;text-align:center}.el-input-number .el-input__inner::-webkit-inner-spin-button,.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number__decrease,.el-input-number__increase{align-items:center;background:var(--el-fill-color-light);bottom:1px;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:13px;height:auto;justify-content:center;position:absolute;top:1px;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:32px;z-index:1}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--el-color-primary)}.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-left:var(--el-border);border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{line-height:38px;width:180px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{font-size:14px;width:40px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{line-height:22px;width:120px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{font-size:12px;width:24px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-bottom:var(--el-border);border-radius:0 var(--el-border-radius-base) 0 0;bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;border-right:none;left:auto;right:1px;top:auto}.el-input-number.is-controls-right[class*=large] [class*=decrease],.el-input-number.is-controls-right[class*=large] [class*=increase]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{--el-input-number-controls-height:11px} diff --git a/resources/views/dist/css/el-link.Dc88KzPr.css b/resources/views/dist/css/el-link.Dc88KzPr.css new file mode 100644 index 0000000..218976c --- /dev/null +++ b/resources/views/dist/css/el-link.Dc88KzPr.css @@ -0,0 +1 @@ +.el-link{--el-link-font-size:var(--el-font-size-base);--el-link-font-weight:var(--el-font-weight-primary);--el-link-text-color:var(--el-text-color-regular);--el-link-hover-text-color:var(--el-color-primary);--el-link-disabled-text-color:var(--el-text-color-placeholder);align-items:center;color:var(--el-link-text-color);cursor:pointer;display:inline-flex;flex-direction:row;font-size:var(--el-link-font-size);font-weight:var(--el-link-font-weight);justify-content:center;outline:none;padding:0;position:relative;text-decoration:none;vertical-align:middle}.el-link:hover{color:var(--el-link-hover-text-color)}.el-link.is-underline:hover:after{border-bottom:1px solid var(--el-link-hover-text-color);bottom:0;content:"";height:0;left:0;position:absolute;right:0}.el-link.is-disabled{color:var(--el-link-disabled-text-color);cursor:not-allowed}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link.el-link--default:after{border-color:var(--el-link-hover-text-color)}.el-link__inner{align-items:center;display:inline-flex;justify-content:center}.el-link.el-link--primary{--el-link-text-color:var(--el-color-primary);--el-link-hover-text-color:var(--el-color-primary-light-3);--el-link-disabled-text-color:var(--el-color-primary-light-5)}.el-link.el-link--primary.is-underline:hover:after,.el-link.el-link--primary:after{border-color:var(--el-link-text-color)}.el-link.el-link--success{--el-link-text-color:var(--el-color-success);--el-link-hover-text-color:var(--el-color-success-light-3);--el-link-disabled-text-color:var(--el-color-success-light-5)}.el-link.el-link--success.is-underline:hover:after,.el-link.el-link--success:after{border-color:var(--el-link-text-color)}.el-link.el-link--warning{--el-link-text-color:var(--el-color-warning);--el-link-hover-text-color:var(--el-color-warning-light-3);--el-link-disabled-text-color:var(--el-color-warning-light-5)}.el-link.el-link--warning.is-underline:hover:after,.el-link.el-link--warning:after{border-color:var(--el-link-text-color)}.el-link.el-link--danger{--el-link-text-color:var(--el-color-danger);--el-link-hover-text-color:var(--el-color-danger-light-3);--el-link-disabled-text-color:var(--el-color-danger-light-5)}.el-link.el-link--danger.is-underline:hover:after,.el-link.el-link--danger:after{border-color:var(--el-link-text-color)}.el-link.el-link--error{--el-link-text-color:var(--el-color-error);--el-link-hover-text-color:var(--el-color-error-light-3);--el-link-disabled-text-color:var(--el-color-error-light-5)}.el-link.el-link--error.is-underline:hover:after,.el-link.el-link--error:after{border-color:var(--el-link-text-color)}.el-link.el-link--info{--el-link-text-color:var(--el-color-info);--el-link-hover-text-color:var(--el-color-info-light-3);--el-link-disabled-text-color:var(--el-color-info-light-5)}.el-link.el-link--info.is-underline:hover:after,.el-link.el-link--info:after{border-color:var(--el-link-text-color)} diff --git a/resources/views/dist/css/el-loading.x7H6yciF.css b/resources/views/dist/css/el-loading.x7H6yciF.css new file mode 100644 index 0000000..014632e --- /dev/null +++ b/resources/views/dist/css/el-loading.x7H6yciF.css @@ -0,0 +1 @@ +:root{--el-loading-spinner-size:42px;--el-loading-fullscreen-spinner-size:50px}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{background-color:var(--el-mask-color);bottom:0;left:0;margin:0;position:absolute;right:0;top:0;transition:opacity var(--el-transition-duration);z-index:2000}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:calc((0px - var(--el-loading-fullscreen-spinner-size))/2)}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:var(--el-loading-fullscreen-spinner-size);width:var(--el-loading-fullscreen-spinner-size)}.el-loading-spinner{margin-top:calc((0px - var(--el-loading-spinner-size))/2);position:absolute;text-align:center;top:50%;width:100%}.el-loading-spinner .el-loading-text{color:var(--el-color-primary);font-size:14px;margin:3px 0}.el-loading-spinner .circular{animation:loading-rotate 2s linear infinite;display:inline;height:var(--el-loading-spinner-size);width:var(--el-loading-spinner-size)}.el-loading-spinner .path{animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:var(--el-color-primary);stroke-linecap:round}.el-loading-spinner i{color:var(--el-color-primary)}.el-loading-fade-enter-from,.el-loading-fade-leave-to{opacity:0}@keyframes loading-rotate{to{transform:rotate(1turn)}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}} diff --git a/resources/views/dist/css/el-pagination.EEgK1E05.css b/resources/views/dist/css/el-pagination.EEgK1E05.css new file mode 100644 index 0000000..03fa853 --- /dev/null +++ b/resources/views/dist/css/el-pagination.EEgK1E05.css @@ -0,0 +1 @@ +.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;align-items:center;color:var(--el-pagination-text-color);display:flex;font-size:var(--el-pagination-font-size);font-weight:400;white-space:nowrap}.el-pagination .el-input__inner{-moz-appearance:textfield;text-align:center}.el-pagination .el-select{width:128px}.el-pagination button{align-items:center;background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;display:flex;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pagination button *{pointer-events:none}.el-pagination button:focus{outline:none}.el-pagination button.is-active,.el-pagination button:hover{color:var(--el-pagination-hover-color)}.el-pagination button.is-active{cursor:default;font-weight:700}.el-pagination button.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination button.is-disabled,.el-pagination button:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pagination button:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700;width:inherit}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{color:var(--el-text-color-regular);font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{align-items:center;color:var(--el-text-color-regular);display:flex;font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{box-sizing:border-box;text-align:center}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{align-items:center;display:flex;flex:1;justify-content:flex-end}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.is-disabled,.el-pagination.is-background .el-pager li:disabled{background-color:var(--el-disabled-bg-color);color:var(--el-text-color-placeholder)}.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active{background-color:var(--el-fill-color-dark);color:var(--el-text-color-secondary)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li{font-size:var(--el-pagination-font-size-small);height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-next,.el-pagination--large .btn-prev,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{font-size:0;list-style:none;margin:0;padding:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-pager,.el-pager li{align-items:center;display:flex}.el-pager li{background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li.is-active,.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pager li.is-disabled,.el-pager li:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px} diff --git a/resources/views/dist/css/el-popover.BXo9j6C6.css b/resources/views/dist/css/el-popover.BXo9j6C6.css new file mode 100644 index 0000000..8831521 --- /dev/null +++ b/resources/views/dist/css/el-popover.BXo9j6C6.css @@ -0,0 +1 @@ +.el-popover{--el-popover-bg-color:var(--el-bg-color-overlay);--el-popover-font-size:var(--el-font-size-base);--el-popover-border-color:var(--el-border-color-lighter);--el-popover-padding:12px;--el-popover-padding-large:18px 20px;--el-popover-title-font-size:16px;--el-popover-title-text-color:var(--el-text-color-primary);--el-popover-border-radius:4px}.el-popover.el-popper{background:var(--el-popover-bg-color);border:1px solid var(--el-popover-border-color);border-radius:var(--el-popover-border-radius);box-shadow:var(--el-box-shadow-light);box-sizing:border-box;color:var(--el-text-color-regular);font-size:var(--el-popover-font-size);line-height:1.4;min-width:150px;overflow-wrap:break-word;padding:var(--el-popover-padding);z-index:var(--el-index-popper)}.el-popover.el-popper--plain{padding:var(--el-popover-padding-large)}.el-popover__title{color:var(--el-popover-title-text-color);font-size:var(--el-popover-title-font-size);line-height:1;margin-bottom:12px}.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}.el-popover.el-popper.is-dark{--el-popover-bg-color:var(--el-text-color-primary);--el-popover-border-color:var(--el-text-color-primary);--el-popover-title-text-color:var(--el-bg-color);color:var(--el-bg-color)}.el-popover.el-popper:focus,.el-popover.el-popper:focus:active{outline-width:0} diff --git a/resources/views/dist/css/el-popper.8rcjPMiY.css b/resources/views/dist/css/el-popper.8rcjPMiY.css new file mode 100644 index 0000000..3bf45be --- /dev/null +++ b/resources/views/dist/css/el-popper.8rcjPMiY.css @@ -0,0 +1 @@ +.el-popper{--el-popper-border-radius:var(--el-popover-border-radius,4px);border-radius:var(--el-popper-border-radius);font-size:12px;line-height:20px;min-width:10px;overflow-wrap:break-word;padding:5px 11px;position:absolute;visibility:visible;z-index:2000}.el-popper.is-dark{color:var(--el-bg-color)}.el-popper.is-dark,.el-popper.is-dark .el-popper__arrow:before{background:var(--el-text-color-primary);border:1px solid var(--el-text-color-primary)}.el-popper.is-dark .el-popper__arrow:before{right:0}.el-popper.is-light,.el-popper.is-light .el-popper__arrow:before{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light)}.el-popper.is-light .el-popper__arrow:before{right:0}.el-popper.is-pure{padding:0}.el-popper__arrow,.el-popper__arrow:before{height:10px;position:absolute;width:10px;z-index:-1}.el-popper__arrow:before{background:var(--el-text-color-primary);box-sizing:border-box;content:" ";transform:rotate(45deg)}.el-popper[data-popper-placement^=top]>.el-popper__arrow{bottom:-5px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-bottom-right-radius:2px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow{top:-5px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-top-left-radius:2px}.el-popper[data-popper-placement^=left]>.el-popper__arrow{right:-5px}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-top-right-radius:2px}.el-popper[data-popper-placement^=right]>.el-popper__arrow{left:-5px}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-bottom-left-radius:2px}.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent!important;border-top-color:transparent!important}.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent!important;border-right-color:transparent!important}.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent!important;border-left-color:transparent!important}.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent!important;border-top-color:transparent!important} diff --git a/resources/views/dist/css/el-progress.BISVJXDI.css b/resources/views/dist/css/el-progress.BISVJXDI.css new file mode 100644 index 0000000..d3db089 --- /dev/null +++ b/resources/views/dist/css/el-progress.BISVJXDI.css @@ -0,0 +1 @@ +.el-upload{--el-upload-dragger-padding-horizontal:40px;--el-upload-dragger-padding-vertical:10px;align-items:center;cursor:pointer;display:inline-flex;justify-content:center;outline:none}.el-upload__input{display:none}.el-upload__tip{color:var(--el-text-color-regular);font-size:12px;margin-top:7px}.el-upload iframe{filter:alpha(opacity=0);left:0;opacity:0;position:absolute;top:0;z-index:-1}.el-upload--picture-card{--el-upload-picture-card-size:148px;align-items:center;background-color:var(--el-fill-color-lighter);border:1px dashed var(--el-border-color-darker);border-radius:6px;box-sizing:border-box;cursor:pointer;display:inline-flex;height:var(--el-upload-picture-card-size);justify-content:center;vertical-align:top;width:var(--el-upload-picture-card-size)}.el-upload--picture-card>i{color:var(--el-text-color-secondary);font-size:28px}.el-upload--picture-card:hover{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload.is-drag{display:block}.el-upload:focus{color:var(--el-color-primary)}.el-upload:focus,.el-upload:focus .el-upload-dragger{border-color:var(--el-color-primary)}.el-upload-dragger{background-color:var(--el-fill-color-blank);border:1px dashed var(--el-border-color);border-radius:6px;box-sizing:border-box;cursor:pointer;overflow:hidden;padding:var(--el-upload-dragger-padding-horizontal) var(--el-upload-dragger-padding-vertical);position:relative;text-align:center}.el-upload-dragger .el-icon--upload{color:var(--el-text-color-placeholder);font-size:67px;line-height:50px;margin-bottom:16px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:var(--el-border);margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:var(--el-text-color-regular);font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:var(--el-color-primary);font-style:normal}.el-upload-dragger:hover{border-color:var(--el-color-primary)}.el-upload-dragger.is-dragover{background-color:var(--el-color-primary-light-9);border:2px dashed var(--el-color-primary);padding:calc(var(--el-upload-dragger-padding-horizontal) - 1px) calc(var(--el-upload-dragger-padding-vertical) - 1px)}.el-upload-list{list-style:none;margin:10px 0 0;padding:0;position:relative}.el-upload-list__item{border-radius:4px;box-sizing:border-box;color:var(--el-text-color-regular);font-size:14px;margin-bottom:5px;position:relative;transition:all .5s cubic-bezier(.55,0,.1,1);width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item .el-icon--upload-success{color:var(--el-color-success)}.el-upload-list__item .el-icon--close{color:var(--el-text-color-regular);cursor:pointer;display:none;opacity:.75;position:absolute;right:5px;top:50%;transform:translateY(-50%);transition:opacity var(--el-transition-duration)}.el-upload-list__item .el-icon--close:hover{color:var(--el-color-primary);opacity:1}.el-upload-list__item .el-icon--close-tip{color:var(--el-color-primary);cursor:pointer;display:none;font-size:12px;font-style:normal;opacity:1;position:absolute;right:5px;top:1px}.el-upload-list__item:hover{background-color:var(--el-fill-color-light)}.el-upload-list__item:hover .el-icon--close{display:inline-flex}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item .el-upload-list__item-info{display:inline-flex;flex-direction:column;justify-content:center;margin-left:4px;width:calc(100% - 30px)}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:var(--el-color-primary);cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon--close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon--close-tip,.el-upload-list__item.is-success:not(.focusing):focus .el-icon--close-tip{display:none}.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none;opacity:0}.el-upload-list__item-name{align-items:center;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);padding:0 4px;text-align:center;transition:color var(--el-transition-duration)}.el-upload-list__item-name .el-icon{color:var(--el-text-color-secondary);margin-right:6px}.el-upload-list__item-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-upload-list__item-status-label{align-items:center;display:none;height:100%;justify-content:center;line-height:inherit;position:absolute;right:5px;top:0;transition:opacity var(--el-transition-duration)}.el-upload-list__item-delete{color:var(--el-text-color-regular);display:none;font-size:12px;position:absolute;right:10px;top:0}.el-upload-list__item-delete:hover{color:var(--el-color-primary)}.el-upload-list--picture-card{--el-upload-list-picture-card-size:148px;display:inline-flex;flex-wrap:wrap;margin:0}.el-upload-list--picture-card .el-upload-list__item{background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:inline-flex;height:var(--el-upload-list-picture-card-size);margin:0 8px 8px 0;overflow:hidden;padding:0;width:var(--el-upload-list-picture-card-size)}.el-upload-list--picture-card .el-upload-list__item .el-icon--check,.el-upload-list--picture-card .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon--close{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:block;opacity:0}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{height:100%;-o-object-fit:contain;object-fit:contain;width:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{align-items:center;background-color:var(--el-overlay-color-lighter);color:#fff;cursor:default;display:inline-flex;font-size:20px;height:100%;justify-content:center;left:0;opacity:0;position:absolute;top:0;transition:opacity var(--el-transition-duration);width:100%}.el-upload-list--picture-card .el-upload-list__item-actions span{cursor:pointer;display:none}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:16px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{color:inherit;font-size:inherit;position:static}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-flex}.el-upload-list--picture-card .el-progress{bottom:auto;left:50%;top:50%;transform:translate(-50%,-50%);width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{align-items:center;background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:flex;margin-top:10px;overflow:hidden;padding:10px;z-index:0}.el-upload-list--picture .el-upload-list__item .el-icon--check,.el-upload-list--picture .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{display:inline-flex;opacity:0}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item .el-icon--close{top:5px;transform:translateY(0)}.el-upload-list--picture .el-upload-list__item-thumbnail{align-items:center;background-color:var(--el-color-white);display:inline-flex;height:70px;justify-content:center;-o-object-fit:contain;object-fit:contain;position:relative;width:70px;z-index:1}.el-upload-list--picture .el-upload-list__item-status-label{background:var(--el-color-success);height:26px;position:absolute;right:-17px;text-align:center;top:-7px;transform:rotate(45deg);width:46px}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{cursor:default;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:10}.el-upload-cover:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;height:100%;width:100%}.el-upload-cover__label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-cover__label i{color:#fff;font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-cover__progress{display:inline-block;position:static;vertical-align:middle;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{height:100%;left:0;position:absolute;top:0;width:100%}.el-upload-cover__interact{background-color:var(--el-overlay-color-light);bottom:0;height:100%;left:0;position:absolute;text-align:center;width:100%}.el-upload-cover__interact .btn{color:#fff;cursor:pointer;display:inline-block;font-size:14px;margin-top:60px;transition:var(--el-transition-md-fade);vertical-align:middle}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{background-color:#fff;bottom:0;color:var(--el-text-color-primary);font-size:14px;font-weight:400;height:36px;left:0;line-height:36px;margin:0;overflow:hidden;padding:0 10px;position:absolute;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-progress{align-items:center;display:flex;line-height:1;position:relative}.el-progress__text{color:var(--el-text-color-regular);font-size:14px;line-height:1;margin-left:5px;min-width:50px}.el-progress__text i{display:block;vertical-align:middle}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{left:0;margin:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{display:inline-block;vertical-align:middle}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{display:block;margin-right:0;padding-right:0}.el-progress--text-inside .el-progress-bar{margin-right:0;padding-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{box-sizing:border-box;flex-grow:1}.el-progress-bar__outer{background-color:var(--el-border-color-lighter);border-radius:100px;height:6px;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{background-color:var(--el-color-primary);border-radius:100px;height:100%;left:0;line-height:1;position:absolute;text-align:right;top:0;transition:width .6s ease;white-space:nowrap}.el-progress-bar__inner:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{animation:indeterminate 3s infinite;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 0,transparent 50%,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 75%,transparent 0,transparent);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:striped-flow 3s linear infinite}.el-progress-bar__innerText{color:#fff;display:inline-block;font-size:12px;margin:0 5px;vertical-align:middle}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}@keyframes striped-flow{0%{background-position:-100%}to{background-position:100%}} diff --git a/resources/views/dist/css/el-radio.kPKi7vSu.css b/resources/views/dist/css/el-radio.kPKi7vSu.css new file mode 100644 index 0000000..81b41fb --- /dev/null +++ b/resources/views/dist/css/el-radio.kPKi7vSu.css @@ -0,0 +1 @@ +.el-radio-group{align-items:center;display:inline-flex;flex-wrap:wrap;font-size:0}.el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-radio-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-radio-font-weight);height:32px;margin-right:32px;outline:none;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{border-color:var(--el-border-color-lighter);cursor:not-allowed}.el-radio.is-bordered.el-radio--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.is-bordered.el-radio--small{border-radius:var(--el-border-radius-base);padding:0 11px 0 7px}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{cursor:pointer;display:inline-flex;outline:none;position:relative;vertical-align:middle;white-space:nowrap}.el-radio__input.is-disabled .el-radio__inner{border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled .el-radio__inner:after{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{background:var(--el-color-primary);border-color:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner:after{transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{background-color:var(--el-radio-input-bg-color);border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);box-sizing:border-box;cursor:pointer;display:inline-block;height:var(--el-radio-input-height);position:relative;width:var(--el-radio-input-width)}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner:after{background-color:var(--el-color-white);border-radius:var(--el-radio-input-border-radius);content:"";height:4px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in;width:4px}.el-radio__original{bottom:0;left:0;margin:0;opacity:0;outline:none;position:absolute;right:0;top:0;z-index:-1}.el-radio__original:focus-visible+.el-radio__inner{border-radius:var(--el-radio-input-border-radius);outline:2px solid var(--el-radio-input-border-color-hover);outline-offset:1px}.el-radio:focus:not(:focus-visible):not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{height:12px;width:12px} diff --git a/resources/views/dist/css/el-scrollbar.DgVM_IK3.css b/resources/views/dist/css/el-scrollbar.DgVM_IK3.css new file mode 100644 index 0000000..f06aa04 --- /dev/null +++ b/resources/views/dist/css/el-scrollbar.DgVM_IK3.css @@ -0,0 +1 @@ +.el-scrollbar{--el-scrollbar-opacity:.3;--el-scrollbar-bg-color:var(--el-text-color-secondary);--el-scrollbar-hover-opacity:.5;--el-scrollbar-hover-bg-color:var(--el-text-color-secondary);height:100%;overflow:hidden;position:relative}.el-scrollbar__wrap{height:100%;overflow:auto}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{display:none}.el-scrollbar__thumb{background-color:var(--el-scrollbar-bg-color,var(--el-text-color-secondary));border-radius:inherit;cursor:pointer;display:block;height:0;opacity:var(--el-scrollbar-opacity,.3);position:relative;transition:var(--el-transition-duration) background-color;width:0}.el-scrollbar__thumb:hover{background-color:var(--el-scrollbar-hover-bg-color,var(--el-text-color-secondary));opacity:var(--el-scrollbar-hover-opacity,.5)}.el-scrollbar__bar{border-radius:4px;bottom:2px;position:absolute;right:2px;z-index:1}.el-scrollbar__bar.is-vertical{top:2px;width:6px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-scrollbar-fade-enter-active{transition:opacity .34s ease-out}.el-scrollbar-fade-leave-active{transition:opacity .12s ease-out}.el-scrollbar-fade-enter-from,.el-scrollbar-fade-leave-active{opacity:0} diff --git a/resources/views/dist/css/el-select.DiVaJgmx.css b/resources/views/dist/css/el-select.DiVaJgmx.css new file mode 100644 index 0000000..1fbc0e2 --- /dev/null +++ b/resources/views/dist/css/el-select.DiVaJgmx.css @@ -0,0 +1 @@ +.el-select-dropdown.is-multiple .el-select-dropdown__item.is-selected:after{background-color:var(--el-color-primary);background-position:50%;background-repeat:no-repeat;border-right:none;border-top:none;content:"";height:12px;mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;mask-size:100% 100%;-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;-webkit-mask-size:100% 100%;position:absolute;right:20px;top:50%;transform:translateY(-50%);width:12px}.el-select-dropdown{border-radius:var(--el-border-radius-base);box-sizing:border-box;z-index:calc(var(--el-index-top) + 1)}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty,.el-select-dropdown__loading{color:var(--el-text-color-secondary);font-size:var(--el-select-font-size);margin:0;padding:10px 0;text-align:center}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{box-sizing:border-box;list-style:none;margin:0;padding:6px 0}.el-select-dropdown__list.el-vl__window{margin:6px 0;padding:0}.el-select-dropdown__header{border-bottom:1px solid var(--el-border-color-light);padding:10px}.el-select-dropdown__footer{border-top:1px solid var(--el-border-color-light);padding:10px}.el-select-dropdown__item{box-sizing:border-box;color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-base);height:34px;line-height:34px;overflow:hidden;padding:0 32px 0 20px;position:relative;text-overflow:ellipsis;white-space:nowrap}.el-select-dropdown__item.is-hovering{background-color:var(--el-fill-color-light)}.el-select-dropdown__item.is-selected{color:var(--el-color-primary);font-weight:700}.el-select-dropdown__item.is-disabled{background-color:unset;color:var(--el-text-color-placeholder);cursor:not-allowed}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-selected:after{background-color:var(--el-color-primary);background-position:50%;background-repeat:no-repeat;border-right:none;border-top:none;content:"";height:12px;mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;mask-size:100% 100%;-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;-webkit-mask-size:100% 100%;position:absolute;right:20px;top:50%;transform:translateY(-50%);width:12px}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-disabled:after{background-color:var(--el-text-color-placeholder)}.el-select-group{margin:0;padding:0}.el-select-group__wrap{list-style:none;margin:0;padding:0;position:relative}.el-select-group__title{color:var(--el-color-info);font-size:12px;line-height:34px;padding-left:20px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{--el-select-border-color-hover:var(--el-border-color-hover);--el-select-disabled-color:var(--el-disabled-text-color);--el-select-disabled-border:var(--el-disabled-border-color);--el-select-font-size:var(--el-font-size-base);--el-select-close-hover-color:var(--el-text-color-secondary);--el-select-input-color:var(--el-text-color-placeholder);--el-select-multiple-input-color:var(--el-text-color-regular);--el-select-input-focus-border-color:var(--el-color-primary);--el-select-input-font-size:14px;--el-select-width:100%;display:inline-block;position:relative;vertical-align:middle;width:var(--el-select-width)}.el-select__wrapper{align-items:center;background-color:var(--el-fill-color-blank);border-radius:var(--el-border-radius-base);box-shadow:0 0 0 1px var(--el-border-color) inset;box-sizing:border-box;cursor:pointer;display:flex;font-size:14px;gap:6px;line-height:24px;min-height:32px;padding:4px 12px;position:relative;text-align:left;transition:var(--el-transition-duration)}.el-select__wrapper:hover{box-shadow:0 0 0 1px var(--el-text-color) inset}.el-select__wrapper.is-filterable{cursor:text}.el-select__wrapper.is-focused{box-shadow:0 0 0 1px var(--el-color-primary) inset}.el-select__wrapper.is-hovering:not(.is-focused){box-shadow:0 0 0 1px var(--el-border-color-hover) inset}.el-select__wrapper.is-disabled{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed}.el-select__wrapper.is-disabled,.el-select__wrapper.is-disabled:hover{box-shadow:0 0 0 1px var(--el-select-disabled-border) inset}.el-select__wrapper.is-disabled.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-select__wrapper.is-disabled .el-select__selected-item{color:var(--el-select-disabled-color)}.el-select__wrapper.is-disabled .el-select__caret,.el-select__wrapper.is-disabled .el-tag{cursor:not-allowed}.el-select__prefix,.el-select__suffix{align-items:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:flex;flex-shrink:0;gap:6px}.el-select__caret{color:var(--el-select-input-color);cursor:pointer;font-size:var(--el-select-input-font-size);transform:rotate(0);transition:var(--el-transition-duration)}.el-select__caret.is-reverse{transform:rotate(180deg)}.el-select__selection{align-items:center;display:flex;flex:1;flex-wrap:wrap;gap:6px;min-width:0;position:relative}.el-select__selection.is-near{margin-left:-8px}.el-select__selection .el-tag{border-color:transparent;cursor:pointer}.el-select__selection .el-tag.el-tag--plain{border-color:var(--el-tag-border-color)}.el-select__selection .el-tag .el-tag__content{min-width:0}.el-select__selected-item{display:flex;flex-wrap:wrap;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-select__tags-text{line-height:normal}.el-select__placeholder,.el-select__tags-text{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-select__placeholder{color:var(--el-input-text-color,var(--el-text-color-regular));position:absolute;top:50%;transform:translateY(-50%);width:100%}.el-select__placeholder.is-transparent{color:var(--el-text-color-placeholder);-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-select__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-select__popper.el-popper,.el-select__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-select__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-select__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-select__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-select__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-select__input-wrapper{max-width:100%}.el-select__input-wrapper.is-hidden{opacity:0;position:absolute}.el-select__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;color:var(--el-select-multiple-input-color);font-family:inherit;font-size:inherit;height:24px;max-width:100%;outline:none;padding:0}.el-select__input.is-disabled{cursor:not-allowed}.el-select__input-calculator{left:0;max-width:100%;overflow:hidden;position:absolute;top:0;visibility:hidden;white-space:pre}.el-select--large .el-select__wrapper{font-size:14px;gap:6px;line-height:24px;min-height:40px;padding:8px 16px}.el-select--large .el-select__selection{gap:6px}.el-select--large .el-select__selection.is-near{margin-left:-8px}.el-select--large .el-select__prefix,.el-select--large .el-select__suffix{gap:6px}.el-select--large .el-select__input{height:24px}.el-select--small .el-select__wrapper{font-size:12px;gap:4px;line-height:20px;min-height:24px;padding:2px 8px}.el-select--small .el-select__selection{gap:4px}.el-select--small .el-select__selection.is-near{margin-left:-6px}.el-select--small .el-select__prefix,.el-select--small .el-select__suffix{gap:4px}.el-select--small .el-select__input{height:20px} diff --git a/resources/views/dist/css/el-switch.BhrVVMax.css b/resources/views/dist/css/el-switch.BhrVVMax.css new file mode 100644 index 0000000..8fec391 --- /dev/null +++ b/resources/views/dist/css/el-switch.BhrVVMax.css @@ -0,0 +1 @@ +.el-switch{--el-switch-on-color:var(--el-color-primary);--el-switch-off-color:var(--el-border-color);align-items:center;display:inline-flex;font-size:14px;height:32px;line-height:20px;position:relative;vertical-align:middle}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{color:var(--el-text-color-primary);cursor:pointer;display:inline-block;font-size:14px;font-weight:500;height:20px;transition:var(--el-transition-duration-fast);vertical-align:middle}.el-switch__label.is-active{color:var(--el-color-primary)}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{display:inline-block;font-size:14px;line-height:1}.el-switch__label .el-icon{height:inherit}.el-switch__label .el-icon svg{vertical-align:middle}.el-switch__input{height:0;margin:0;opacity:0;position:absolute;width:0}.el-switch__input:focus-visible~.el-switch__core{outline:2px solid var(--el-switch-on-color);outline-offset:1px}.el-switch__core{align-items:center;background:var(--el-switch-off-color);border:1px solid var(--el-switch-border-color,var(--el-switch-off-color));border-radius:10px;box-sizing:border-box;cursor:pointer;display:inline-flex;height:20px;min-width:40px;outline:none;position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration)}.el-switch__core .el-switch__inner{align-items:center;display:flex;height:16px;justify-content:center;overflow:hidden;padding:0 4px 0 18px;transition:all var(--el-transition-duration);width:100%}.el-switch__core .el-switch__inner .is-icon,.el-switch__core .el-switch__inner .is-text{color:var(--el-color-white);font-size:12px;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.el-switch__core .el-switch__action{align-items:center;background-color:var(--el-color-white);border-radius:var(--el-border-radius-circle);color:var(--el-switch-off-color);display:flex;height:16px;justify-content:center;left:1px;position:absolute;transition:all var(--el-transition-duration);width:16px}.el-switch.is-checked .el-switch__core{background-color:var(--el-switch-on-color);border-color:var(--el-switch-border-color,var(--el-switch-on-color))}.el-switch.is-checked .el-switch__core .el-switch__action{color:var(--el-switch-on-color);left:calc(100% - 17px)}.el-switch.is-checked .el-switch__core .el-switch__inner{padding:0 18px 0 4px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter-from,.el-switch .label-fade-leave-active{opacity:0}.el-switch--large{font-size:14px;height:40px;line-height:24px}.el-switch--large .el-switch__label{font-size:14px;height:24px}.el-switch--large .el-switch__label *{font-size:14px}.el-switch--large .el-switch__core{border-radius:12px;height:24px;min-width:50px}.el-switch--large .el-switch__core .el-switch__inner{height:20px;padding:0 6px 0 22px}.el-switch--large .el-switch__core .el-switch__action{height:20px;width:20px}.el-switch--large.is-checked .el-switch__core .el-switch__action{left:calc(100% - 21px)}.el-switch--large.is-checked .el-switch__core .el-switch__inner{padding:0 22px 0 6px}.el-switch--small{font-size:12px;height:24px;line-height:16px}.el-switch--small .el-switch__label{font-size:12px;height:16px}.el-switch--small .el-switch__label *{font-size:12px}.el-switch--small .el-switch__core{border-radius:8px;height:16px;min-width:30px}.el-switch--small .el-switch__core .el-switch__inner{height:12px;padding:0 2px 0 14px}.el-switch--small .el-switch__core .el-switch__action{height:12px;width:12px}.el-switch--small.is-checked .el-switch__core .el-switch__action{left:calc(100% - 13px)}.el-switch--small.is-checked .el-switch__core .el-switch__inner{padding:0 14px 0 2px} diff --git a/resources/views/dist/css/el-tab-pane.99T6i4TO.css b/resources/views/dist/css/el-tab-pane.99T6i4TO.css new file mode 100644 index 0000000..835370d --- /dev/null +++ b/resources/views/dist/css/el-tab-pane.99T6i4TO.css @@ -0,0 +1 @@ +.el-tabs{--el-tabs-header-height:40px}.el-tabs__header{align-items:center;display:flex;justify-content:space-between;margin:0 0 15px;padding:0;position:relative}.el-tabs__header-vertical{flex-direction:column}.el-tabs__active-bar{background-color:var(--el-color-primary);bottom:0;height:2px;left:0;list-style:none;position:absolute;transition:width var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),transform var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);z-index:1}.el-tabs__new-tab{align-items:center;border:1px solid var(--el-border-color);border-radius:3px;color:var(--el-text-color-primary);cursor:pointer;display:flex;font-size:12px;height:20px;justify-content:center;line-height:20px;margin:10px 0 10px 10px;text-align:center;transition:all .15s;width:20px}.el-tabs__new-tab .is-icon-plus{height:inherit;transform:scale(.8);width:inherit}.el-tabs__new-tab .is-icon-plus svg{vertical-align:middle}.el-tabs__new-tab:hover{color:var(--el-color-primary)}.el-tabs__new-tab-vertical{margin-left:0}.el-tabs__nav-wrap{flex:1 auto;margin-bottom:-1px;overflow:hidden;position:relative}.el-tabs__nav-wrap:after{background-color:var(--el-border-color-light);bottom:0;content:"";height:2px;left:0;position:absolute;width:100%;z-index:var(--el-index-normal)}.el-tabs__nav-wrap.is-scrollable{box-sizing:border-box;padding:0 20px}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;line-height:44px;position:absolute;text-align:center;width:20px}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{display:flex;float:left;position:relative;transition:transform var(--el-transition-duration);white-space:nowrap;z-index:calc(var(--el-index-normal) + 1)}.el-tabs__nav.is-stretch{display:flex;min-width:100%}.el-tabs__nav.is-stretch>*{flex:1;text-align:center}.el-tabs__item{align-items:center;box-sizing:border-box;color:var(--el-text-color-primary);display:flex;font-size:var(--el-font-size-base);font-weight:500;height:var(--el-tabs-header-height);justify-content:center;list-style:none;padding:0 20px;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:none}.el-tabs__item:focus-visible{border-radius:3px;box-shadow:0 0 2px 2px var(--el-color-primary) inset}.el-tabs__item .is-icon-close{border-radius:50%;margin-left:5px;text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs__item .is-icon-close:before{display:inline-block;transform:scale(.9)}.el-tabs__item .is-icon-close:hover{background-color:var(--el-text-color-placeholder);color:#fff}.el-tabs__item.is-active,.el-tabs__item:hover{color:var(--el-color-primary)}.el-tabs__item:hover{cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light);height:var(--el-tabs-header-height)}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid var(--el-border-color-light);border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{font-size:12px;height:14px;overflow:hidden;position:relative;right:-2px;transform-origin:100% 50%;width:0}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid var(--el-border-color-light);transition:color var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),padding var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .is-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:var(--el-bg-color)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .is-icon-close{width:14px}.el-tabs--border-card{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-light);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{border:1px solid transparent;color:var(--el-text-color-secondary);margin-top:-1px;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{background-color:var(--el-bg-color-overlay);border-left-color:var(--el-border-color);border-right-color:var(--el-border-color);color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:var(--el-disabled-text-color)}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2):not(.is-active).is-closable:hover,.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2):not(.is-active).is-closable:hover,.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2):not(.is-active).is-closable:hover,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2):not(.is-active).is-closable:hover,.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2):not(.is-active).is-closable:hover,.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2):not(.is-active).is-closable:hover,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2):not(.is-active).is-closable:hover,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2):not(.is-active).is-closable:hover{padding-left:13px}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:last-child:not(.is-active).is-closable:hover,.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:last-child:not(.is-active).is-closable:hover,.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child:not(.is-active).is-closable:hover,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child:not(.is-active).is-closable:hover,.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:last-child:not(.is-active).is-closable:hover,.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:last-child:not(.is-active).is-closable:hover,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child:not(.is-active).is-closable:hover,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child:not(.is-active).is-closable:hover{padding-right:13px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--el-border-color)}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-bottom:0;margin-top:-1px}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{bottom:auto;height:auto;top:0;width:2px}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{cursor:pointer;height:30px;line-height:30px;text-align:center;width:100%}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{bottom:0;right:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{bottom:auto;height:100%;top:0;width:2px}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{flex-direction:column}.el-tabs--left .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-left{justify-content:flex-end}.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-right{justify-content:flex-start}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{left:auto;right:0}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-bottom:none;border-left:none;border-right:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid var(--el-border-color-light);border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:none;border-right:1px solid #fff}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-radius:4px 0 0 4px;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid var(--el-border-color)}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:rgb(209,219,229) transparent}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:1px solid #fff;border-right:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-left:none;border-radius:0 4px 4px 0}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid var(--el-border-color)}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:rgb(209,219,229) transparent}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{animation:slideInRight-leave var(--el-transition-duration);left:0;position:absolute;right:0}.slideInLeft-enter{animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{animation:slideInLeft-leave var(--el-transition-duration);left:0;position:absolute;right:0}@keyframes slideInRight-enter{0%{opacity:0;transform:translate(100%);transform-origin:0 0}to{opacity:1;transform:translate(0);transform-origin:0 0}}@keyframes slideInRight-leave{0%{opacity:1;transform:translate(0);transform-origin:0 0}to{opacity:0;transform:translate(100%);transform-origin:0 0}}@keyframes slideInLeft-enter{0%{opacity:0;transform:translate(-100%);transform-origin:0 0}to{opacity:1;transform:translate(0);transform-origin:0 0}}@keyframes slideInLeft-leave{0%{opacity:1;transform:translate(0);transform-origin:0 0}to{opacity:0;transform:translate(-100%);transform-origin:0 0}} diff --git a/resources/views/dist/css/el-table-column.Ds_oPOdx.css b/resources/views/dist/css/el-table-column.Ds_oPOdx.css new file mode 100644 index 0000000..cba5c86 --- /dev/null +++ b/resources/views/dist/css/el-table-column.Ds_oPOdx.css @@ -0,0 +1 @@ +.el-table{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-bg-color);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-bg-color);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px rgba(0,0,0,.15);--el-table-fixed-right-column:inset -10px 0 10px -10px rgba(0,0,0,.15);--el-table-index:var(--el-index-normal);background-color:var(--el-table-bg-color);box-sizing:border-box;color:var(--el-table-text-color);font-size:14px;height:-moz-fit-content;height:fit-content;max-width:100%;overflow:hidden;position:relative;width:100%}.el-table__inner-wrapper{display:flex;flex-direction:column;height:100%;position:relative}.el-table__inner-wrapper:before{bottom:0;height:1px;left:0}.el-table tbody:focus-visible{outline:none}.el-table.has-footer.el-table--fluid-height tr:last-child td.el-table__cell,.el-table.has-footer.el-table--scrollable-y tr:last-child td.el-table__cell{border-bottom-color:transparent}.el-table__empty-block{align-items:center;display:flex;justify-content:center;left:0;min-height:60px;position:sticky;text-align:center;width:100%}.el-table__empty-text{color:var(--el-text-color-secondary);line-height:60px;width:50%}.el-table__expand-column .cell{padding:0;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-table__expand-icon{color:var(--el-text-color-regular);cursor:pointer;font-size:12px;height:20px;position:relative;transition:transform var(--el-transition-duration-fast) ease-in-out}.el-table__expand-icon--expanded{transform:rotate(90deg)}.el-table__expand-icon>.el-icon{font-size:12px}.el-table__expanded-cell{background-color:var(--el-table-expanded-cell-bg-color)}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-bottom:0;border-right:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table--fit .el-table__inner-wrapper:before{width:100%}.el-table thead{color:var(--el-table-header-text-color)}.el-table thead th{font-weight:600}.el-table thead.is-group th.el-table__cell{background:var(--el-fill-color-light)}.el-table .el-table__cell{box-sizing:border-box;min-width:0;padding:8px 0;position:relative;text-align:left;text-overflow:ellipsis;vertical-align:middle;z-index:var(--el-table-index)}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{border-bottom-width:0;border-right-width:0;padding:0;width:15px}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table .cell{box-sizing:border-box;line-height:23px;overflow:hidden;overflow-wrap:break-word;padding:0 12px;text-overflow:ellipsis;white-space:normal}.el-table .cell.el-tooltip{min-width:50px;white-space:nowrap}.el-table--large{font-size:var(--el-font-size-base)}.el-table--large .el-table__cell{padding:12px 0}.el-table--large .cell{padding:0 16px}.el-table--default{font-size:14px}.el-table--default .el-table__cell{padding:8px 0}.el-table--default .cell{padding:0 12px}.el-table--small{font-size:12px}.el-table--small .el-table__cell{padding:4px 0}.el-table--small .cell{padding:0 8px}.el-table tr{background-color:var(--el-table-tr-bg-color)}.el-table tr input[type=checkbox]{margin:0}.el-table td.el-table__cell,.el-table th.el-table__cell.is-leaf{border-bottom:var(--el-table-border)}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{background-color:var(--el-table-header-bg-color)}.el-table th.el-table__cell>.cell.highlight{color:var(--el-color-primary)}.el-table th.el-table__cell.required>div:before{background:#ff4d51;border-radius:50%;content:"";display:inline-block;height:8px;margin-right:5px;vertical-align:middle;width:8px}.el-table td.el-table__cell div{box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table--border .el-table__inner-wrapper:after,.el-table--border:after,.el-table--border:before,.el-table__inner-wrapper:before{background-color:var(--el-table-border-color);content:"";position:absolute;z-index:calc(var(--el-table-index) + 2)}.el-table--border .el-table__inner-wrapper:after{height:1px;left:0;top:0;width:100%;z-index:calc(var(--el-table-index) + 2)}.el-table--border:before{height:100%;left:0;top:-1px;width:1px}.el-table--border:after{height:100%;right:0;top:-1px;width:1px}.el-table--border .el-table__inner-wrapper{border-bottom:none;border-right:none}.el-table--border .el-table__footer-wrapper{flex-shrink:0;position:relative}.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:var(--el-table-border);border-bottom-width:1px}.el-table--border th.el-table__cell{border-bottom:var(--el-table-border)}.el-table--hidden{visibility:hidden}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__body-wrapper tr td.el-table-fixed-column--left,.el-table__body-wrapper tr td.el-table-fixed-column--right,.el-table__body-wrapper tr th.el-table-fixed-column--left,.el-table__body-wrapper tr th.el-table-fixed-column--right,.el-table__footer-wrapper tr td.el-table-fixed-column--left,.el-table__footer-wrapper tr td.el-table-fixed-column--right,.el-table__footer-wrapper tr th.el-table-fixed-column--left,.el-table__footer-wrapper tr th.el-table-fixed-column--right,.el-table__header-wrapper tr td.el-table-fixed-column--left,.el-table__header-wrapper tr td.el-table-fixed-column--right,.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background:inherit;position:sticky!important;z-index:calc(var(--el-table-index) + 1)}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{bottom:-1px;box-shadow:none;content:"";overflow-x:hidden;overflow-y:hidden;pointer-events:none;position:absolute;top:0;touch-action:none;width:10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before{left:-10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{box-shadow:none;right:-10px}.el-table__body-wrapper tr td.el-table__fixed-right-patch,.el-table__body-wrapper tr th.el-table__fixed-right-patch,.el-table__footer-wrapper tr td.el-table__fixed-right-patch,.el-table__footer-wrapper tr th.el-table__fixed-right-patch,.el-table__header-wrapper tr td.el-table__fixed-right-patch,.el-table__header-wrapper tr th.el-table__fixed-right-patch{background:#fff;position:sticky!important;right:0;z-index:calc(var(--el-table-index) + 1)}.el-table__header-wrapper{flex-shrink:0}.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body,.el-table__footer,.el-table__header{border-collapse:separate;table-layout:fixed}.el-table__header-wrapper{overflow:hidden}.el-table__header-wrapper tbody td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__footer-wrapper{flex-shrink:0;overflow:hidden}.el-table__footer-wrapper tfoot td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__body-wrapper .el-table-column--selection>.cell,.el-table__header-wrapper .el-table-column--selection>.cell{align-items:center;display:inline-flex;height:23px}.el-table__body-wrapper .el-table-column--selection .el-checkbox,.el-table__header-wrapper .el-table-column--selection .el-checkbox{height:unset}.el-table.is-scrolling-left .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-left.el-table--border .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:var(--el-table-border)}.el-table.is-scrolling-left th.el-table-fixed-column--left{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-right th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-middle .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-none .el-table-fixed-column--left.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--left.is-last-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-last-column:before{box-shadow:none}.el-table.is-scrolling-none th.el-table-fixed-column--left,.el-table.is-scrolling-none th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body-wrapper{flex:1;overflow:hidden;position:relative}.el-table__body-wrapper .el-scrollbar__bar{z-index:calc(var(--el-table-index) + 2)}.el-table .caret-wrapper{align-items:center;cursor:pointer;display:inline-flex;flex-direction:column;height:14px;overflow:initial;position:relative;vertical-align:middle;width:24px}.el-table .sort-caret{border:5px solid transparent;height:0;left:7px;position:absolute;width:0}.el-table .sort-caret.ascending{border-bottom-color:var(--el-text-color-placeholder);top:-5px}.el-table .sort-caret.descending{border-top-color:var(--el-text-color-placeholder);bottom:-3px}.el-table .ascending .sort-caret.ascending{border-bottom-color:var(--el-color-primary)}.el-table .descending .sort-caret.descending{border-top-color:var(--el-color-primary)}.el-table .hidden-columns{position:absolute;visibility:hidden;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:var(--el-fill-color-lighter)}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row>td.el-table__cell,.el-table__body tr>td.hover-cell{background-color:var(--el-table-row-hover-bg-color)}.el-table__body tr.current-row>td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table.el-table--scrollable-y .el-table__body-header{position:sticky;top:0;z-index:calc(var(--el-table-index) + 2)}.el-table.el-table--scrollable-y .el-table__body-footer{bottom:0;position:sticky;z-index:calc(var(--el-table-index) + 2)}.el-table__column-resize-proxy{border-left:var(--el-table-border);bottom:0;left:200px;position:absolute;top:0;width:0;z-index:calc(var(--el-table-index) + 9)}.el-table__column-filter-trigger{cursor:pointer;display:inline-block}.el-table__column-filter-trigger i{color:var(--el-color-info);font-size:14px;vertical-align:middle}.el-table__border-left-patch{height:100%;top:0;width:1px}.el-table__border-bottom-patch,.el-table__border-left-patch{background-color:var(--el-table-border-color);left:0;position:absolute;z-index:calc(var(--el-table-index) + 2)}.el-table__border-bottom-patch{height:1px}.el-table__border-right-patch{background-color:var(--el-table-border-color);height:100%;position:absolute;top:0;width:1px;z-index:calc(var(--el-table-index) + 2)}.el-table--enable-row-transition .el-table__body td.el-table__cell{transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:var(--el-table-row-hover-bg-color)}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;height:12px;line-height:12px;margin-right:8px;text-align:center;width:12px}.el-table .el-table.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table:not(.el-table--border) .el-table__cell{border-right:none}.el-table:not(.el-table--border)>.el-table__inner-wrapper:after{content:none}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{background-color:#fff;border:1px solid var(--el-border-color-lighter);border-radius:2px;box-shadow:var(--el-box-shadow-light);box-sizing:border-box}.el-table-filter__list{list-style:none;margin:0;min-width:100px;padding:5px 0}.el-table-filter__list-item{cursor:pointer;font-size:var(--el-font-size-base);line-height:36px;padding:0 10px}.el-table-filter__list-item:hover{background-color:var(--el-color-primary-light-9);color:var(--el-color-primary)}.el-table-filter__list-item.is-active{background-color:var(--el-color-primary);color:#fff}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid var(--el-border-color-lighter);padding:8px}.el-table-filter__bottom button{background:transparent;border:none;color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-small);padding:0 3px}.el-table-filter__bottom button:hover{color:var(--el-color-primary)}.el-table-filter__bottom button:focus{outline:none}.el-table-filter__bottom button.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{align-items:center;display:flex;height:unset;margin-bottom:12px;margin-left:5px;margin-right:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0} diff --git a/resources/views/dist/css/el-tag.5TqU4q48.css b/resources/views/dist/css/el-tag.5TqU4q48.css new file mode 100644 index 0000000..3d53e98 --- /dev/null +++ b/resources/views/dist/css/el-tag.5TqU4q48.css @@ -0,0 +1 @@ +.el-tag{--el-tag-font-size:12px;--el-tag-border-radius:4px;--el-tag-border-radius-rounded:9999px;align-items:center;background-color:var(--el-tag-bg-color);border-color:var(--el-tag-border-color);border-radius:var(--el-tag-border-radius);border-style:solid;border-width:1px;box-sizing:border-box;color:var(--el-tag-text-color);display:inline-flex;font-size:var(--el-tag-font-size);height:24px;justify-content:center;line-height:1;padding:0 9px;vertical-align:middle;white-space:nowrap;--el-icon-size:14px}.el-tag,.el-tag.el-tag--primary{--el-tag-bg-color:var(--el-color-primary-light-9);--el-tag-border-color:var(--el-color-primary-light-8);--el-tag-hover-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-bg-color:var(--el-color-success-light-9);--el-tag-border-color:var(--el-color-success-light-8);--el-tag-hover-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-bg-color:var(--el-color-warning-light-9);--el-tag-border-color:var(--el-color-warning-light-8);--el-tag-hover-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-bg-color:var(--el-color-danger-light-9);--el-tag-border-color:var(--el-color-danger-light-8);--el-tag-hover-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-bg-color:var(--el-color-error-light-9);--el-tag-border-color:var(--el-color-error-light-8);--el-tag-hover-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-bg-color:var(--el-color-info-light-9);--el-tag-border-color:var(--el-color-info-light-8);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-hit{border-color:var(--el-color-primary)}.el-tag.is-round{border-radius:var(--el-tag-border-radius-rounded)}.el-tag .el-tag__close{color:var(--el-tag-text-color);flex-shrink:0}.el-tag .el-tag__close:hover{background-color:var(--el-tag-hover-color);color:var(--el-color-white)}.el-tag.el-tag--primary{--el-tag-text-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-text-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-text-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-text-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-text-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-text-color:var(--el-color-info)}.el-tag .el-icon{border-radius:50%;cursor:pointer;font-size:calc(var(--el-icon-size) - 2px);height:var(--el-icon-size);width:var(--el-icon-size)}.el-tag .el-tag__close{margin-left:6px}.el-tag--dark{--el-tag-text-color:var(--el-color-white)}.el-tag--dark,.el-tag--dark.el-tag--primary{--el-tag-bg-color:var(--el-color-primary);--el-tag-border-color:var(--el-color-primary);--el-tag-hover-color:var(--el-color-primary-light-3)}.el-tag--dark.el-tag--success{--el-tag-bg-color:var(--el-color-success);--el-tag-border-color:var(--el-color-success);--el-tag-hover-color:var(--el-color-success-light-3)}.el-tag--dark.el-tag--warning{--el-tag-bg-color:var(--el-color-warning);--el-tag-border-color:var(--el-color-warning);--el-tag-hover-color:var(--el-color-warning-light-3)}.el-tag--dark.el-tag--danger{--el-tag-bg-color:var(--el-color-danger);--el-tag-border-color:var(--el-color-danger);--el-tag-hover-color:var(--el-color-danger-light-3)}.el-tag--dark.el-tag--error{--el-tag-bg-color:var(--el-color-error);--el-tag-border-color:var(--el-color-error);--el-tag-hover-color:var(--el-color-error-light-3)}.el-tag--dark.el-tag--info{--el-tag-bg-color:var(--el-color-info);--el-tag-border-color:var(--el-color-info);--el-tag-hover-color:var(--el-color-info-light-3)}.el-tag--dark.el-tag--danger,.el-tag--dark.el-tag--error,.el-tag--dark.el-tag--info,.el-tag--dark.el-tag--primary,.el-tag--dark.el-tag--success,.el-tag--dark.el-tag--warning{--el-tag-text-color:var(--el-color-white)}.el-tag--plain,.el-tag--plain.el-tag--primary{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-primary-light-5);--el-tag-hover-color:var(--el-color-primary)}.el-tag--plain.el-tag--success{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-success-light-5);--el-tag-hover-color:var(--el-color-success)}.el-tag--plain.el-tag--warning{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-warning-light-5);--el-tag-hover-color:var(--el-color-warning)}.el-tag--plain.el-tag--danger{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-danger-light-5);--el-tag-hover-color:var(--el-color-danger)}.el-tag--plain.el-tag--error{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-error-light-5);--el-tag-hover-color:var(--el-color-error)}.el-tag--plain.el-tag--info{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-info-light-5);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-closable{padding-right:5px}.el-tag--large{height:32px;padding:0 11px;--el-icon-size:16px}.el-tag--large .el-tag__close{margin-left:8px}.el-tag--large.is-closable{padding-right:7px}.el-tag--small{height:20px;padding:0 7px;--el-icon-size:12px}.el-tag--small .el-tag__close{margin-left:4px}.el-tag--small.is-closable{padding-right:3px}.el-tag--small .el-icon-close{transform:scale(.8)}.el-tag.el-tag--primary.is-hit{border-color:var(--el-color-primary)}.el-tag.el-tag--success.is-hit{border-color:var(--el-color-success)}.el-tag.el-tag--warning.is-hit{border-color:var(--el-color-warning)}.el-tag.el-tag--danger.is-hit{border-color:var(--el-color-danger)}.el-tag.el-tag--error.is-hit{border-color:var(--el-color-error)}.el-tag.el-tag--info.is-hit{border-color:var(--el-color-info)} diff --git a/resources/views/dist/css/el-text.CjuDOozN.css b/resources/views/dist/css/el-text.CjuDOozN.css new file mode 100644 index 0000000..79a28cb --- /dev/null +++ b/resources/views/dist/css/el-text.CjuDOozN.css @@ -0,0 +1 @@ +.el-text{--el-text-font-size:var(--el-font-size-base);--el-text-color:var(--el-text-color-regular);align-self:center;color:var(--el-text-color);font-size:var(--el-text-font-size);margin:0;overflow-wrap:break-word;padding:0}.el-text.is-truncated{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-text.is-line-clamp{display:-webkit-inline-box;-webkit-box-orient:vertical;overflow:hidden}.el-text--large{--el-text-font-size:var(--el-font-size-medium)}.el-text--default{--el-text-font-size:var(--el-font-size-base)}.el-text--small{--el-text-font-size:var(--el-font-size-extra-small)}.el-text.el-text--primary{--el-text-color:var(--el-color-primary)}.el-text.el-text--success{--el-text-color:var(--el-color-success)}.el-text.el-text--warning{--el-text-color:var(--el-color-warning)}.el-text.el-text--danger{--el-text-color:var(--el-color-danger)}.el-text.el-text--error{--el-text-color:var(--el-color-error)}.el-text.el-text--info{--el-text-color:var(--el-color-info)}.el-text>.el-icon{vertical-align:-2px} diff --git a/resources/views/dist/css/el-tree-select.BC9u6a6J.css b/resources/views/dist/css/el-tree-select.BC9u6a6J.css new file mode 100644 index 0000000..59d995b --- /dev/null +++ b/resources/views/dist/css/el-tree-select.BC9u6a6J.css @@ -0,0 +1 @@ +.el-tree-select{--el-tree-node-content-height:26px;--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder)}.el-tree-select__popper .el-tree-node__expand-icon{margin-left:8px}.el-tree-select__popper .el-tree-node.is-checked>.el-tree-node__content .el-select-dropdown__item.selected:after{content:none}.el-tree-select__popper .el-select-dropdown__list>.el-select-dropdown__item{padding-left:32px}.el-tree-select__popper .el-select-dropdown__item{background:transparent!important;flex:1;height:20px;line-height:20px;padding-left:0} diff --git a/resources/views/dist/css/el-tree.LD6oLcSu.css b/resources/views/dist/css/el-tree.LD6oLcSu.css new file mode 100644 index 0000000..e03a268 --- /dev/null +++ b/resources/views/dist/css/el-tree.LD6oLcSu.css @@ -0,0 +1 @@ +.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-tree{--el-tree-node-content-height:26px;--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder);background:var(--el-fill-color-blank);color:var(--el-tree-text-color);cursor:default;font-size:var(--el-font-size-base);position:relative}.el-tree__empty-block{height:100%;min-height:60px;position:relative;text-align:center;width:100%}.el-tree__empty-text{color:var(--el-text-color-secondary);font-size:var(--el-font-size-base);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.el-tree__drop-indicator{background-color:var(--el-color-primary);height:1px;left:0;position:absolute;right:0}.el-tree-node{outline:none;white-space:nowrap}.el-tree-node:focus>.el-tree-node__content{background-color:var(--el-tree-node-hover-bg-color)}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:var(--el-color-primary);color:#fff}.el-tree-node__content{--el-checkbox-height:var(--el-tree-node-content-height);align-items:center;cursor:pointer;display:flex;height:var(--el-tree-node-content-height)}.el-tree-node__content>.el-tree-node__expand-icon{box-sizing:content-box;padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:var(--el-tree-node-hover-bg-color)}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{color:var(--el-tree-expand-icon-color);cursor:pointer;font-size:12px;transform:rotate(0);transition:transform var(--el-transition-duration) ease-in-out}.el-tree-node__expand-icon.expanded{transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default;visibility:hidden}.el-tree-node__expand-icon.is-hidden{visibility:hidden}.el-tree-node__loading-icon{color:var(--el-tree-expand-icon-color);font-size:var(--el-font-size-base);margin-right:8px}.el-tree-node>.el-tree-node__children{background-color:transparent;overflow:hidden}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:var(--el-color-primary-light-9)} diff --git a/resources/views/dist/css/icons.Fl2phYMx.css b/resources/views/dist/css/icons.Fl2phYMx.css new file mode 100644 index 0000000..b2b5c07 --- /dev/null +++ b/resources/views/dist/css/icons.Fl2phYMx.css @@ -0,0 +1 @@ +@charset "UTF-8";[data-v-fed7a479]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-fed7a479]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-fed7a479]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.icons-container[data-v-fed7a479]{margin:10px 20px 0;overflow:hidden}.icons-container .grid[data-v-fed7a479]{position:relative;display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}.icons-container .icon-item[data-v-fed7a479]{float:left;width:100px;height:85px;margin:20px;font-size:30px;color:var(--el-text-color-regular);text-align:center;cursor:pointer}.icons-container span[data-v-fed7a479]{display:block;margin-top:10px;font-size:16px}.icons-container .disabled[data-v-fed7a479]{pointer-events:none} diff --git a/resources/views/dist/css/index.7eDotrm1.css b/resources/views/dist/css/index.7eDotrm1.css new file mode 100644 index 0000000..4b36131 --- /dev/null +++ b/resources/views/dist/css/index.7eDotrm1.css @@ -0,0 +1,7 @@ +@charset "UTF-8";:root{--el-color-white:#ffffff;--el-color-black:#000000;--el-color-primary-rgb:64,158,255;--el-color-success-rgb:103,194,58;--el-color-warning-rgb:230,162,60;--el-color-danger-rgb:245,108,108;--el-color-error-rgb:245,108,108;--el-color-info-rgb:144,147,153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:.3s;--el-transition-duration-fast:.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(.645,.045,.355,1);--el-transition-function-fast-bezier:cubic-bezier(.23,1,.32,1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier),opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-component-size-large:40px;--el-component-size:32px;--el-component-size-small:24px;color-scheme:light;--el-color-primary:#409eff;--el-color-primary-light-3:#79bbff;--el-color-primary-light-5:#a0cfff;--el-color-primary-light-7:#c6e2ff;--el-color-primary-light-8:#d9ecff;--el-color-primary-light-9:#ecf5ff;--el-color-primary-dark-2:#337ecc;--el-color-success:#67c23a;--el-color-success-light-3:#95d475;--el-color-success-light-5:#b3e19d;--el-color-success-light-7:#d1edc4;--el-color-success-light-8:#e1f3d8;--el-color-success-light-9:#f0f9eb;--el-color-success-dark-2:#529b2e;--el-color-warning:#e6a23c;--el-color-warning-light-3:#eebe77;--el-color-warning-light-5:#f3d19e;--el-color-warning-light-7:#f8e3c5;--el-color-warning-light-8:#faecd8;--el-color-warning-light-9:#fdf6ec;--el-color-warning-dark-2:#b88230;--el-color-danger:#f56c6c;--el-color-danger-light-3:#f89898;--el-color-danger-light-5:#fab6b6;--el-color-danger-light-7:#fcd3d3;--el-color-danger-light-8:#fde2e2;--el-color-danger-light-9:#fef0f0;--el-color-danger-dark-2:#c45656;--el-color-error:#f56c6c;--el-color-error-light-3:#f89898;--el-color-error-light-5:#fab6b6;--el-color-error-light-7:#fcd3d3;--el-color-error-light-8:#fde2e2;--el-color-error-light-9:#fef0f0;--el-color-error-dark-2:#c45656;--el-color-info:#909399;--el-color-info-light-3:#b1b3b8;--el-color-info-light-5:#c8c9cc;--el-color-info-light-7:#dedfe0;--el-color-info-light-8:#e9e9eb;--el-color-info-light-9:#f4f4f5;--el-color-info-dark-2:#73767a;--el-bg-color:#ffffff;--el-bg-color-page:#f2f3f5;--el-bg-color-overlay:#ffffff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#ffffff;--el-box-shadow:0px 12px 32px 4px rgba(0,0,0,.04),0px 8px 20px rgba(0,0,0,.08);--el-box-shadow-light:0px 0px 12px rgba(0,0,0,.12);--el-box-shadow-lighter:0px 0px 6px rgba(0,0,0,.12);--el-box-shadow-dark:0px 16px 48px 16px rgba(0,0,0,.08),0px 12px 32px rgba(0,0,0,.12),0px 8px 16px -8px rgba(0,0,0,.16);--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:rgba(0,0,0,.8);--el-overlay-color-light:rgba(0,0,0,.7);--el-overlay-color-lighter:rgba(0,0,0,.5);--el-mask-color:rgba(255,255,255,.9);--el-mask-color-extra-light:rgba(255,255,255,.3);--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-icon-loading{animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.el-icon{--color:inherit;align-items:center;display:inline-flex;height:1em;justify-content:center;line-height:1em;position:relative;width:1em;fill:currentColor;color:var(--color);font-size:inherit}.el-icon.is-loading{animation:rotating 2s linear infinite}.el-icon svg{height:1em;width:1em}.el-badge{--el-badge-bg-color:var(--el-color-danger);--el-badge-radius:10px;--el-badge-font-size:12px;--el-badge-padding:6px;--el-badge-size:18px;display:inline-block;position:relative;vertical-align:middle;width:-moz-fit-content;width:fit-content}.el-badge__content{align-items:center;background-color:var(--el-badge-bg-color);border:1px solid var(--el-bg-color);border-radius:var(--el-badge-radius);color:var(--el-color-white);display:inline-flex;font-size:var(--el-badge-font-size);height:var(--el-badge-size);justify-content:center;padding:0 var(--el-badge-padding);white-space:nowrap}.el-badge__content.is-fixed{position:absolute;right:calc(1px + var(--el-badge-size)/2);top:0;transform:translateY(-50%) translate(100%);z-index:var(--el-index-normal)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{border-radius:50%;height:8px;padding:0;right:0;width:8px}.el-badge__content--primary{background-color:var(--el-color-primary)}.el-badge__content--success{background-color:var(--el-color-success)}.el-badge__content--warning{background-color:var(--el-color-warning)}.el-badge__content--info{background-color:var(--el-color-info)}.el-badge__content--danger{background-color:var(--el-color-danger)}.el-message{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-border-color-lighter);--el-message-padding:11px 15px;--el-message-close-size:16px;--el-message-close-icon-color:var(--el-text-color-placeholder);--el-message-close-hover-color:var(--el-text-color-secondary);align-items:center;background-color:var(--el-message-bg-color);border-color:var(--el-message-border-color);border-radius:var(--el-border-radius-base);border-style:var(--el-border-style);border-width:var(--el-border-width);box-sizing:border-box;display:flex;gap:8px;left:50%;max-width:calc(100% - 32px);padding:var(--el-message-padding);position:fixed;top:20px;transform:translate(-50%);transition:opacity var(--el-transition-duration),transform .4s,top .4s;width:-moz-fit-content;width:fit-content}.el-message.is-center{justify-content:center}.el-message.is-plain{background-color:var(--el-bg-color-overlay);border-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-message p{margin:0}.el-message--success{--el-message-bg-color:var(--el-color-success-light-9);--el-message-border-color:var(--el-color-success-light-8);--el-message-text-color:var(--el-color-success)}.el-message--success .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--success{color:var(--el-message-text-color)}.el-message--info{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-color-info-light-8);--el-message-text-color:var(--el-color-info)}.el-message--info .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--info{color:var(--el-message-text-color)}.el-message--warning{--el-message-bg-color:var(--el-color-warning-light-9);--el-message-border-color:var(--el-color-warning-light-8);--el-message-text-color:var(--el-color-warning)}.el-message--warning .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--warning{color:var(--el-message-text-color)}.el-message--error{--el-message-bg-color:var(--el-color-error-light-9);--el-message-border-color:var(--el-color-error-light-8);--el-message-text-color:var(--el-color-error)}.el-message--error .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--error{color:var(--el-message-text-color)}.el-message .el-message__badge{position:absolute;right:-8px;top:-8px}.el-message__content{font-size:14px;line-height:1;padding:0}.el-message__content:focus{outline-width:0}.el-message .el-message__closeBtn{color:var(--el-message-close-icon-color);cursor:pointer;font-size:var(--el-message-close-size)}.el-message .el-message__closeBtn:focus{outline-width:0}.el-message .el-message__closeBtn:hover{color:var(--el-message-close-hover-color)}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0;transform:translate(-50%,-100%)}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{background:var(--el-popup-modal-bg-color);height:100%;left:0;opacity:var(--el-popup-modal-opacity);position:fixed;top:0;width:100%}.el-popup-parent--hidden{overflow:hidden}.el-message-box{--el-messagebox-title-color:var(--el-text-color-primary);--el-messagebox-width:420px;--el-messagebox-border-radius:4px;--el-messagebox-box-shadow:var(--el-box-shadow);--el-messagebox-font-size:var(--el-font-size-large);--el-messagebox-content-font-size:var(--el-font-size-base);--el-messagebox-content-color:var(--el-text-color-regular);--el-messagebox-error-font-size:12px;--el-messagebox-padding-primary:12px;--el-messagebox-font-line-height:var(--el-font-line-height-primary);backface-visibility:hidden;background-color:var(--el-bg-color);border-radius:var(--el-messagebox-border-radius);box-shadow:var(--el-messagebox-box-shadow);box-sizing:border-box;display:inline-block;font-size:var(--el-messagebox-font-size);max-width:var(--el-messagebox-width);overflow:hidden;overflow-wrap:break-word;padding:var(--el-messagebox-padding-primary);position:relative;text-align:left;vertical-align:middle;width:100%}.el-message-box:focus{outline:none!important}.el-overlay.is-message-box .el-overlay-message-box{bottom:0;left:0;overflow:auto;padding:16px;position:fixed;right:0;text-align:center;top:0}.el-overlay.is-message-box .el-overlay-message-box:after{content:"";display:inline-block;height:100%;vertical-align:middle;width:0}.el-message-box.is-draggable .el-message-box__header{cursor:move;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-message-box__header{padding-bottom:var(--el-messagebox-padding-primary)}.el-message-box__header.show-close{padding-right:calc(var(--el-messagebox-padding-primary) + var(--el-message-close-size, 16px))}.el-message-box__title{color:var(--el-messagebox-title-color);font-size:var(--el-messagebox-font-size);line-height:var(--el-messagebox-font-line-height)}.el-message-box__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:40px;outline:none;padding:0;position:absolute;right:0;top:0;width:40px}.el-message-box__headerbtn .el-message-box__close{color:var(--el-color-info);font-size:inherit}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:var(--el-color-primary)}.el-message-box__content{color:var(--el-messagebox-content-color);font-size:var(--el-messagebox-content-font-size)}.el-message-box__container{align-items:center;display:flex;gap:12px}.el-message-box__input{padding-top:12px}.el-message-box__input div.invalid>input,.el-message-box__input div.invalid>input:focus{border-color:var(--el-color-error)}.el-message-box__status{font-size:24px}.el-message-box__status.el-message-box-icon--success{--el-messagebox-color:var(--el-color-success);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--info{--el-messagebox-color:var(--el-color-info);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--warning{--el-messagebox-color:var(--el-color-warning);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--error{--el-messagebox-color:var(--el-color-error);color:var(--el-messagebox-color)}.el-message-box__message{margin:0}.el-message-box__message p{line-height:var(--el-messagebox-font-line-height);margin:0}.el-message-box__errormsg{color:var(--el-color-error);font-size:var(--el-messagebox-error-font-size);line-height:var(--el-messagebox-font-line-height)}.el-message-box__btns{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-end;padding-top:var(--el-messagebox-padding-primary)}.el-message-box--center .el-message-box__title{align-items:center;display:flex;gap:6px;justify-content:center}.el-message-box--center .el-message-box__status{font-size:inherit}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__container{justify-content:center}.fade-in-linear-enter-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration)}.fade-in-linear-leave-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration) reverse}@keyframes msgbox-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}.el-button{--el-button-font-weight:var(--el-font-weight-primary);--el-button-border-color:var(--el-border-color);--el-button-bg-color:var(--el-fill-color-blank);--el-button-text-color:var(--el-text-color-regular);--el-button-disabled-text-color:var(--el-disabled-text-color);--el-button-disabled-bg-color:var(--el-fill-color-blank);--el-button-disabled-border-color:var(--el-border-color-light);--el-button-divide-border-color:rgba(255,255,255,.5);--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-color-primary-light-9);--el-button-hover-border-color:var(--el-color-primary-light-7);--el-button-active-text-color:var(--el-button-hover-text-color);--el-button-active-border-color:var(--el-color-primary);--el-button-active-bg-color:var(--el-button-hover-bg-color);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-hover-link-text-color:var(--el-color-info);--el-button-active-color:var(--el-text-color-primary);align-items:center;-webkit-appearance:none;background-color:var(--el-button-bg-color);border:var(--el-border);border-color:var(--el-button-border-color);box-sizing:border-box;color:var(--el-button-text-color);cursor:pointer;display:inline-flex;font-weight:var(--el-button-font-weight);height:32px;justify-content:center;line-height:1;outline:none;text-align:center;transition:.1s;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-button:hover{background-color:var(--el-button-hover-bg-color);border-color:var(--el-button-hover-border-color);color:var(--el-button-hover-text-color);outline:none}.el-button:active{background-color:var(--el-button-active-bg-color);border-color:var(--el-button-active-border-color);color:var(--el-button-active-text-color);outline:none}.el-button:focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset 0s,outline 0s}.el-button>span{align-items:center;display:inline-flex}.el-button+.el-button{margin-left:12px}.el-button{border-radius:var(--el-border-radius-base);font-size:var(--el-font-size-base)}.el-button,.el-button.is-round{padding:8px 15px}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon]+span{margin-left:6px}.el-button [class*=el-icon] svg{vertical-align:bottom}.el-button.is-plain{--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-fill-color-blank);--el-button-hover-border-color:var(--el-color-primary)}.el-button.is-active{background-color:var(--el-button-active-bg-color);border-color:var(--el-button-active-border-color);color:var(--el-button-active-text-color);outline:none}.el-button.is-disabled,.el-button.is-disabled:hover{background-color:var(--el-button-disabled-bg-color);background-image:none;border-color:var(--el-button-disabled-border-color);color:var(--el-button-disabled-text-color);cursor:not-allowed}.el-button.is-loading{pointer-events:none;position:relative}.el-button.is-loading:before{background-color:var(--el-mask-color-extra-light);border-radius:inherit;bottom:-1px;content:"";left:-1px;pointer-events:none;position:absolute;right:-1px;top:-1px;z-index:1}.el-button.is-round{border-radius:var(--el-border-radius-round)}.el-button.is-circle{border-radius:50%;padding:8px;width:32px}.el-button.is-text{background-color:transparent;border:0 solid transparent;color:var(--el-button-text-color)}.el-button.is-text.is-disabled{background-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button.is-text:not(.is-disabled):hover{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled):focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset 0s,outline 0s}.el-button.is-text:not(.is-disabled):active{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled).is-has-bg:hover{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg:active{background-color:var(--el-fill-color-dark)}.el-button__text--expand{letter-spacing:.3em;margin-right:-.3em}.el-button.is-link{background:transparent;border-color:transparent;color:var(--el-button-text-color);height:auto;padding:2px}.el-button.is-link:hover{color:var(--el-button-hover-link-text-color)}.el-button.is-link.is-disabled{background-color:transparent!important;border-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button.is-link:not(.is-disabled):active,.el-button.is-link:not(.is-disabled):hover{background-color:transparent;border-color:transparent}.el-button.is-link:not(.is-disabled):active{color:var(--el-button-active-color)}.el-button--text{background:transparent;border-color:transparent;color:var(--el-color-primary);padding-left:0;padding-right:0}.el-button--text.is-disabled{background-color:transparent!important;border-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button--text:not(.is-disabled):hover{background-color:transparent;border-color:transparent;color:var(--el-color-primary-light-3)}.el-button--text:not(.is-disabled):active{background-color:transparent;border-color:transparent;color:var(--el-color-primary-dark-2)}.el-button__link--expand{letter-spacing:.3em;margin-right:-.3em}.el-button--primary{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-primary);--el-button-border-color:var(--el-color-primary);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-active-color:var(--el-color-primary-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-primary-light-5);--el-button-hover-bg-color:var(--el-color-primary-light-3);--el-button-hover-border-color:var(--el-color-primary-light-3);--el-button-active-bg-color:var(--el-color-primary-dark-2);--el-button-active-border-color:var(--el-color-primary-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-primary-light-5);--el-button-disabled-border-color:var(--el-color-primary-light-5)}.el-button--primary.is-link,.el-button--primary.is-plain,.el-button--primary.is-text{--el-button-text-color:var(--el-color-primary);--el-button-bg-color:var(--el-color-primary-light-9);--el-button-border-color:var(--el-color-primary-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-primary);--el-button-hover-border-color:var(--el-color-primary);--el-button-active-text-color:var(--el-color-white)}.el-button--primary.is-link.is-disabled,.el-button--primary.is-link.is-disabled:active,.el-button--primary.is-link.is-disabled:focus,.el-button--primary.is-link.is-disabled:hover,.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover,.el-button--primary.is-text.is-disabled,.el-button--primary.is-text.is-disabled:active,.el-button--primary.is-text.is-disabled:focus,.el-button--primary.is-text.is-disabled:hover{background-color:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-8);color:var(--el-color-primary-light-5)}.el-button--success{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-success);--el-button-border-color:var(--el-color-success);--el-button-outline-color:var(--el-color-success-light-5);--el-button-active-color:var(--el-color-success-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-success-light-5);--el-button-hover-bg-color:var(--el-color-success-light-3);--el-button-hover-border-color:var(--el-color-success-light-3);--el-button-active-bg-color:var(--el-color-success-dark-2);--el-button-active-border-color:var(--el-color-success-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-success-light-5);--el-button-disabled-border-color:var(--el-color-success-light-5)}.el-button--success.is-link,.el-button--success.is-plain,.el-button--success.is-text{--el-button-text-color:var(--el-color-success);--el-button-bg-color:var(--el-color-success-light-9);--el-button-border-color:var(--el-color-success-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-success);--el-button-hover-border-color:var(--el-color-success);--el-button-active-text-color:var(--el-color-white)}.el-button--success.is-link.is-disabled,.el-button--success.is-link.is-disabled:active,.el-button--success.is-link.is-disabled:focus,.el-button--success.is-link.is-disabled:hover,.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover,.el-button--success.is-text.is-disabled,.el-button--success.is-text.is-disabled:active,.el-button--success.is-text.is-disabled:focus,.el-button--success.is-text.is-disabled:hover{background-color:var(--el-color-success-light-9);border-color:var(--el-color-success-light-8);color:var(--el-color-success-light-5)}.el-button--warning{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-warning);--el-button-border-color:var(--el-color-warning);--el-button-outline-color:var(--el-color-warning-light-5);--el-button-active-color:var(--el-color-warning-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-warning-light-5);--el-button-hover-bg-color:var(--el-color-warning-light-3);--el-button-hover-border-color:var(--el-color-warning-light-3);--el-button-active-bg-color:var(--el-color-warning-dark-2);--el-button-active-border-color:var(--el-color-warning-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-warning-light-5);--el-button-disabled-border-color:var(--el-color-warning-light-5)}.el-button--warning.is-link,.el-button--warning.is-plain,.el-button--warning.is-text{--el-button-text-color:var(--el-color-warning);--el-button-bg-color:var(--el-color-warning-light-9);--el-button-border-color:var(--el-color-warning-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-warning);--el-button-hover-border-color:var(--el-color-warning);--el-button-active-text-color:var(--el-color-white)}.el-button--warning.is-link.is-disabled,.el-button--warning.is-link.is-disabled:active,.el-button--warning.is-link.is-disabled:focus,.el-button--warning.is-link.is-disabled:hover,.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover,.el-button--warning.is-text.is-disabled,.el-button--warning.is-text.is-disabled:active,.el-button--warning.is-text.is-disabled:focus,.el-button--warning.is-text.is-disabled:hover{background-color:var(--el-color-warning-light-9);border-color:var(--el-color-warning-light-8);color:var(--el-color-warning-light-5)}.el-button--danger{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-danger);--el-button-border-color:var(--el-color-danger);--el-button-outline-color:var(--el-color-danger-light-5);--el-button-active-color:var(--el-color-danger-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-danger-light-5);--el-button-hover-bg-color:var(--el-color-danger-light-3);--el-button-hover-border-color:var(--el-color-danger-light-3);--el-button-active-bg-color:var(--el-color-danger-dark-2);--el-button-active-border-color:var(--el-color-danger-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-danger-light-5);--el-button-disabled-border-color:var(--el-color-danger-light-5)}.el-button--danger.is-link,.el-button--danger.is-plain,.el-button--danger.is-text{--el-button-text-color:var(--el-color-danger);--el-button-bg-color:var(--el-color-danger-light-9);--el-button-border-color:var(--el-color-danger-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-danger);--el-button-hover-border-color:var(--el-color-danger);--el-button-active-text-color:var(--el-color-white)}.el-button--danger.is-link.is-disabled,.el-button--danger.is-link.is-disabled:active,.el-button--danger.is-link.is-disabled:focus,.el-button--danger.is-link.is-disabled:hover,.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover,.el-button--danger.is-text.is-disabled,.el-button--danger.is-text.is-disabled:active,.el-button--danger.is-text.is-disabled:focus,.el-button--danger.is-text.is-disabled:hover{background-color:var(--el-color-danger-light-9);border-color:var(--el-color-danger-light-8);color:var(--el-color-danger-light-5)}.el-button--info{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-info);--el-button-border-color:var(--el-color-info);--el-button-outline-color:var(--el-color-info-light-5);--el-button-active-color:var(--el-color-info-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-info-light-5);--el-button-hover-bg-color:var(--el-color-info-light-3);--el-button-hover-border-color:var(--el-color-info-light-3);--el-button-active-bg-color:var(--el-color-info-dark-2);--el-button-active-border-color:var(--el-color-info-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-info-light-5);--el-button-disabled-border-color:var(--el-color-info-light-5)}.el-button--info.is-link,.el-button--info.is-plain,.el-button--info.is-text{--el-button-text-color:var(--el-color-info);--el-button-bg-color:var(--el-color-info-light-9);--el-button-border-color:var(--el-color-info-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-info);--el-button-hover-border-color:var(--el-color-info);--el-button-active-text-color:var(--el-color-white)}.el-button--info.is-link.is-disabled,.el-button--info.is-link.is-disabled:active,.el-button--info.is-link.is-disabled:focus,.el-button--info.is-link.is-disabled:hover,.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover,.el-button--info.is-text.is-disabled,.el-button--info.is-text.is-disabled:active,.el-button--info.is-text.is-disabled:focus,.el-button--info.is-text.is-disabled:hover{background-color:var(--el-color-info-light-9);border-color:var(--el-color-info-light-8);color:var(--el-color-info-light-5)}.el-button--large{--el-button-size:40px;height:var(--el-button-size)}.el-button--large [class*=el-icon]+span{margin-left:8px}.el-button--large{border-radius:var(--el-border-radius-base);font-size:var(--el-font-size-base);padding:12px 19px}.el-button--large.is-round{padding:12px 19px}.el-button--large.is-circle{padding:12px;width:var(--el-button-size)}.el-button--small{--el-button-size:24px;height:var(--el-button-size)}.el-button--small [class*=el-icon]+span{margin-left:4px}.el-button--small{border-radius:calc(var(--el-border-radius-base) - 1px);font-size:12px;padding:5px 11px}.el-button--small.is-round{padding:5px 11px}.el-button--small.is-circle{padding:5px;width:var(--el-button-size)}.el-textarea{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;display:inline-block;font-size:var(--el-font-size-base);position:relative;vertical-align:bottom;width:100%}.el-textarea__inner{-webkit-appearance:none;background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;border:none;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;box-sizing:border-box;color:var(--el-input-text-color,var(--el-text-color-regular));display:block;font-family:inherit;font-size:inherit;line-height:1.5;padding:5px 11px;position:relative;resize:vertical;transition:var(--el-transition-box-shadow);width:100%}.el-textarea__inner::-moz-placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-textarea__inner:focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset;outline:none}.el-textarea .el-input__count{background:var(--el-fill-color-blank);bottom:5px;color:var(--el-color-info);font-size:12px;line-height:14px;position:absolute;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:var(--el-disabled-bg-color);box-shadow:0 0 0 1px var(--el-disabled-border-color) inset;color:var(--el-disabled-text-color);cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-exceed .el-textarea__inner{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-textarea.is-exceed .el-input__count{color:var(--el-color-danger)}.el-input{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;--el-input-height:var(--el-component-size);box-sizing:border-box;display:inline-flex;font-size:var(--el-font-size-base);line-height:var(--el-input-height);position:relative;vertical-align:middle;width:var(--el-input-width)}.el-input::-webkit-scrollbar{width:6px;z-index:11}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{background:var(--el-text-color-disabled);border-radius:5px;width:6px}.el-input::-webkit-scrollbar-corner,.el-input::-webkit-scrollbar-track{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track-piece{background:var(--el-fill-color-blank);width:6px}.el-input .el-input__clear,.el-input .el-input__password{color:var(--el-input-icon-color);cursor:pointer;font-size:14px}.el-input .el-input__clear:hover,.el-input .el-input__password:hover{color:var(--el-input-clear-hover-color)}.el-input .el-input__count{align-items:center;color:var(--el-color-info);display:inline-flex;font-size:12px;height:100%}.el-input .el-input__count .el-input__count-inner{background:var(--el-fill-color-blank);display:inline-block;line-height:normal;padding-left:8px}.el-input__wrapper{align-items:center;background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;cursor:text;display:inline-flex;flex-grow:1;justify-content:center;padding:1px 11px;transform:translateZ(0);transition:var(--el-transition-box-shadow)}.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input__inner{--el-input-inner-height:calc(var(--el-input-height, 32px) - 2px);-webkit-appearance:none;background:none;border:none;box-sizing:border-box;color:var(--el-input-text-color,var(--el-text-color-regular));flex-grow:1;font-size:inherit;height:var(--el-input-inner-height);line-height:var(--el-input-inner-height);outline:none;padding:0;width:100%}.el-input__inner:focus{outline:none}.el-input__inner::-moz-placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner[type=password]::-ms-reveal{display:none}.el-input__inner[type=number]{line-height:1}.el-input__prefix{color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:inline-flex;flex-shrink:0;flex-wrap:nowrap;height:100%;pointer-events:none;text-align:center;transition:all var(--el-transition-duration);white-space:nowrap}.el-input__prefix-inner{align-items:center;display:inline-flex;justify-content:center;pointer-events:all}.el-input__prefix-inner>:last-child{margin-right:8px}.el-input__prefix-inner>:first-child,.el-input__prefix-inner>:first-child.el-input__icon{margin-left:0}.el-input__suffix{color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:inline-flex;flex-shrink:0;flex-wrap:nowrap;height:100%;pointer-events:none;text-align:center;transition:all var(--el-transition-duration);white-space:nowrap}.el-input__suffix-inner{align-items:center;display:inline-flex;justify-content:center;pointer-events:all}.el-input__suffix-inner>:first-child{margin-left:8px}.el-input .el-input__icon{align-items:center;display:flex;height:inherit;justify-content:center;line-height:inherit;margin-left:8px;transition:all var(--el-transition-duration)}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-color, ) inset}.el-input.is-disabled{cursor:not-allowed}.el-input.is-disabled .el-input__wrapper{background-color:var(--el-disabled-bg-color);box-shadow:0 0 0 1px var(--el-disabled-border-color) inset}.el-input.is-disabled .el-input__inner{color:var(--el-disabled-text-color);-webkit-text-fill-color:var(--el-disabled-text-color);cursor:not-allowed}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__inner::placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__wrapper{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-input.is-exceed .el-input__suffix .el-input__count{color:var(--el-color-danger)}.el-input--large{--el-input-height:var(--el-component-size-large);font-size:14px}.el-input--large .el-input__wrapper{padding:1px 15px}.el-input--large .el-input__inner{--el-input-inner-height:calc(var(--el-input-height, 40px) - 2px)}.el-input--small{--el-input-height:var(--el-component-size-small);font-size:12px}.el-input--small .el-input__wrapper{padding:1px 7px}.el-input--small .el-input__inner{--el-input-inner-height:calc(var(--el-input-height, 24px) - 2px)}.el-input-group{align-items:stretch;display:inline-flex;width:100%}.el-input-group__append,.el-input-group__prepend{align-items:center;background-color:var(--el-fill-color-light);border-radius:var(--el-input-border-radius);color:var(--el-color-info);display:inline-flex;justify-content:center;min-height:100%;padding:0 20px;position:relative;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:none}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:0 -20px}.el-input-group__append button.el-button,.el-input-group__append button.el-button:hover,.el-input-group__append div.el-select .el-select__wrapper,.el-input-group__append div.el-select:hover .el-select__wrapper,.el-input-group__prepend button.el-button,.el-input-group__prepend button.el-button:hover,.el-input-group__prepend div.el-select .el-select__wrapper,.el-input-group__prepend div.el-select:hover .el-select__wrapper{background-color:transparent;border-color:transparent;color:inherit}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-bottom-right-radius:0;border-right:0;border-top-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group__append{border-left:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-group--prepend>.el-input__wrapper,.el-input-group__append{border-bottom-left-radius:0;border-top-left-radius:0}.el-input-group--prepend .el-input-group__prepend .el-select .el-select__wrapper{border-bottom-right-radius:0;border-top-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group--append>.el-input__wrapper{border-bottom-right-radius:0;border-top-right-radius:0}.el-input-group--append .el-input-group__append .el-select .el-select__wrapper{border-bottom-left-radius:0;border-top-left-radius:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-hidden{display:none!important}.el-overlay{background-color:var(--el-overlay-color-lighter);bottom:0;height:100%;left:0;overflow:auto;position:fixed;right:0;top:0;z-index:2000}.el-overlay .el-overlay-root{height:0}.el-notification{--el-notification-width:330px;--el-notification-padding:14px 26px 14px 13px;--el-notification-radius:8px;--el-notification-shadow:var(--el-box-shadow-light);--el-notification-border-color:var(--el-border-color-lighter);--el-notification-icon-size:24px;--el-notification-close-font-size:var(--el-message-close-size,16px);--el-notification-group-margin-left:13px;--el-notification-group-margin-right:8px;--el-notification-content-font-size:var(--el-font-size-base);--el-notification-content-color:var(--el-text-color-regular);--el-notification-title-font-size:16px;--el-notification-title-color:var(--el-text-color-primary);--el-notification-close-color:var(--el-text-color-secondary);--el-notification-close-hover-color:var(--el-text-color-regular);background-color:var(--el-bg-color-overlay);border:1px solid var(--el-notification-border-color);border-radius:var(--el-notification-radius);box-shadow:var(--el-notification-shadow);box-sizing:border-box;display:flex;overflow:hidden;overflow-wrap:break-word;padding:var(--el-notification-padding);position:fixed;transition:opacity var(--el-transition-duration),transform var(--el-transition-duration),left var(--el-transition-duration),right var(--el-transition-duration),top .4s,bottom var(--el-transition-duration);width:var(--el-notification-width);z-index:9999}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{margin-left:var(--el-notification-group-margin-left);margin-right:var(--el-notification-group-margin-right)}.el-notification__title{color:var(--el-notification-title-color);font-size:var(--el-notification-title-font-size);font-weight:700;line-height:var(--el-notification-icon-size);margin:0}.el-notification__content{color:var(--el-notification-content-color);font-size:var(--el-notification-content-font-size);line-height:24px;margin:6px 0 0}.el-notification__content p{margin:0}.el-notification .el-notification__icon{font-size:var(--el-notification-icon-size);height:var(--el-notification-icon-size);width:var(--el-notification-icon-size)}.el-notification .el-notification__closeBtn{color:var(--el-notification-close-color);cursor:pointer;font-size:var(--el-notification-close-font-size);position:absolute;right:15px;top:18px}.el-notification .el-notification__closeBtn:hover{color:var(--el-notification-close-hover-color)}.el-notification .el-notification--success{--el-notification-icon-color:var(--el-color-success);color:var(--el-notification-icon-color)}.el-notification .el-notification--info{--el-notification-icon-color:var(--el-color-info);color:var(--el-notification-icon-color)}.el-notification .el-notification--warning{--el-notification-icon-color:var(--el-color-warning);color:var(--el-notification-icon-color)}.el-notification .el-notification--error{--el-notification-icon-color:var(--el-color-error);color:var(--el-notification-icon-color)}.el-notification-fade-enter-from.right{right:0;transform:translate(100%)}.el-notification-fade-enter-from.left{left:0;transform:translate(-100%)}.el-notification-fade-leave-to{opacity:0}#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;-webkit-transform:rotate(3deg) translate(0px,-4px);-ms-transform:rotate(3deg) translate(0px,-4px);transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:solid 2px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .spinner,.nprogress-custom-parent #nprogress .bar{position:absolute}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}@keyframes nprogress-spinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}html.dark{color-scheme:dark;--el-color-primary:#409eff;--el-color-primary-light-3:#3375b9;--el-color-primary-light-5:#2a598a;--el-color-primary-light-7:#213d5b;--el-color-primary-light-8:#1d3043;--el-color-primary-light-9:#18222c;--el-color-primary-dark-2:#66b1ff;--el-color-success:#67c23a;--el-color-success-light-3:#4e8e2f;--el-color-success-light-5:#3e6b27;--el-color-success-light-7:#2d481f;--el-color-success-light-8:#25371c;--el-color-success-light-9:#1c2518;--el-color-success-dark-2:#85ce61;--el-color-warning:#e6a23c;--el-color-warning-light-3:#a77730;--el-color-warning-light-5:#7d5b28;--el-color-warning-light-7:#533f20;--el-color-warning-light-8:#3e301c;--el-color-warning-light-9:#292218;--el-color-warning-dark-2:#ebb563;--el-color-danger:#f56c6c;--el-color-danger-light-3:#b25252;--el-color-danger-light-5:#854040;--el-color-danger-light-7:#582e2e;--el-color-danger-light-8:#412626;--el-color-danger-light-9:#2b1d1d;--el-color-danger-dark-2:#f78989;--el-color-error:#f56c6c;--el-color-error-light-3:#b25252;--el-color-error-light-5:#854040;--el-color-error-light-7:#582e2e;--el-color-error-light-8:#412626;--el-color-error-light-9:#2b1d1d;--el-color-error-dark-2:#f78989;--el-color-info:#909399;--el-color-info-light-3:#6b6d71;--el-color-info-light-5:#525457;--el-color-info-light-7:#393a3c;--el-color-info-light-8:#2d2d2f;--el-color-info-light-9:#202121;--el-color-info-dark-2:#a6a9ad;--el-box-shadow:0px 12px 32px 4px rgba(0,0,0,.36),0px 8px 20px rgba(0,0,0,.72);--el-box-shadow-light:0px 0px 12px rgba(0,0,0,.72);--el-box-shadow-lighter:0px 0px 6px rgba(0,0,0,.72);--el-box-shadow-dark:0px 16px 48px 16px rgba(0,0,0,.72),0px 12px 32px #000000,0px 8px 16px -8px #000000;--el-bg-color-page:#0a0a0a;--el-bg-color:#141414;--el-bg-color-overlay:#1d1e1f;--el-text-color-primary:#E5EAF3;--el-text-color-regular:#CFD3DC;--el-text-color-secondary:#A3A6AD;--el-text-color-placeholder:#8D9095;--el-text-color-disabled:#6C6E72;--el-border-color-darker:#636466;--el-border-color-dark:#58585B;--el-border-color:#4C4D4F;--el-border-color-light:#414243;--el-border-color-lighter:#363637;--el-border-color-extra-light:#2B2B2C;--el-fill-color-darker:#424243;--el-fill-color-dark:#39393A;--el-fill-color:#303030;--el-fill-color-light:#262727;--el-fill-color-lighter:#1D1D1D;--el-fill-color-extra-light:#191919;--el-fill-color-blank:transparent;--el-mask-color:rgba(0,0,0,.8);--el-mask-color-extra-light:rgba(0,0,0,.3)}html.dark .el-button{--el-button-disabled-text-color:rgba(255,255,255,.5)}html.dark .el-card{--el-card-bg-color:var(--el-bg-color-overlay)}html.dark .el-empty{--el-empty-fill-color-0:var(--el-color-black);--el-empty-fill-color-1:#4b4b52;--el-empty-fill-color-2:#36383d;--el-empty-fill-color-3:#1e1e20;--el-empty-fill-color-4:#262629;--el-empty-fill-color-5:#202124;--el-empty-fill-color-6:#212224;--el-empty-fill-color-7:#1b1c1f;--el-empty-fill-color-8:#1c1d1f;--el-empty-fill-color-9:#18181a}:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}*,:before,:after{box-sizing:border-box;border-color:currentcolor;border-style:solid;border-width:0}#app{width:100%;height:100%}html{box-sizing:border-box;width:100%;height:100%;line-height:1.5;-moz-tab-size:4;tab-size:4;text-size-adjust:100%}body{width:100%;height:100%;margin:0;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,微软雅黑,Arial,sans-serif;line-height:inherit;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}a{color:inherit;text-decoration:inherit}img,svg{display:inline-block}svg{vertical-align:-.15em}ul,li{padding:0;margin:0;list-style:none}*,*:before,*:after{box-sizing:inherit}a,a:focus,a:hover{color:inherit;text-decoration:none;cursor:pointer}a:focus,a:active,div:focus{outline:none}.app-container{padding:15px}.search-container{padding:18px 0 0 10px;margin-bottom:10px;background-color:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);border-radius:4px;box-shadow:var(--el-box-shadow-light)}.table-container>.el-card__header{padding:calc(var(--el-card-padding) - 8px) var(--el-card-padding)}.link-type,.link-type:focus{color:#337ab7;cursor:pointer}.link-type:hover,.link-type:focus:hover{color:#20a0ff}*,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.i-ep-arrow-down{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 1024 1024' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M831.872 340.864L512 652.672L192.128 340.864a30.59 30.59 0 0 0-42.752 0a29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728a30.59 30.59 0 0 0-42.752 0z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-ep-arrow-up{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 1024 1024' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m488.832 344.32l-339.84 356.672a32 32 0 0 0 0 44.16l.384.384a29.44 29.44 0 0 0 42.688 0l320-335.872l319.872 335.872a29.44 29.44 0 0 0 42.688 0l.384-.384a32 32 0 0 0 0-44.16L535.168 344.32a32 32 0 0 0-46.336 0'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-ep-close{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 1024 1024' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M764.288 214.592L512 466.88L259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512L214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-ep-delete{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 1024 1024' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32zm448-64v-64H416v64zM224 896h576V256H224zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32m192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-ep-download{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 1024 1024' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64m384-253.696l236.288-236.352l45.248 45.248L508.8 704L192 387.2l45.248-45.248L480 584.704V128h64z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-ep-edit{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 1024 1024' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M832 512a32 32 0 1 1 64 0v352a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h352a32 32 0 0 1 0 64H192v640h640z'/%3E%3Cpath fill='currentColor' d='m469.952 554.24l52.8-7.552L847.104 222.4a32 32 0 1 0-45.248-45.248L477.44 501.44l-7.552 52.8zm422.4-422.4a96 96 0 0 1 0 135.808l-331.84 331.84a32 32 0 0 1-18.112 9.088L436.8 623.68a32 32 0 0 1-36.224-36.224l15.104-105.6a32 32 0 0 1 9.024-18.112l331.904-331.84a96 96 0 0 1 135.744 0z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-ep-lock{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 1024 1024' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M224 448a32 32 0 0 0-32 32v384a32 32 0 0 0 32 32h576a32 32 0 0 0 32-32V480a32 32 0 0 0-32-32zm0-64h576a96 96 0 0 1 96 96v384a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96V480a96 96 0 0 1 96-96'/%3E%3Cpath fill='currentColor' d='M512 544a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V576a32 32 0 0 1 32-32m192-160v-64a192 192 0 1 0-384 0v64zM512 64a256 256 0 0 1 256 256v128H256V320A256 256 0 0 1 512 64'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-ep-plus{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 1024 1024' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-ep-position{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 1024 1024' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m249.6 417.088l319.744 43.072l39.168 310.272L845.12 178.88zm-129.024 47.168a32 32 0 0 1-7.68-61.44l777.792-311.04a32 32 0 0 1 41.6 41.6l-310.336 775.68a32 32 0 0 1-61.44-7.808L512 516.992z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-ep-refresh{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 1024 1024' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M771.776 794.88A384 384 0 0 1 128 512h64a320 320 0 0 0 555.712 216.448H654.72a32 32 0 1 1 0-64h149.056a32 32 0 0 1 32 32v148.928a32 32 0 1 1-64 0v-50.56zM276.288 295.616h92.992a32 32 0 0 1 0 64H220.16a32 32 0 0 1-32-32V178.56a32 32 0 0 1 64 0v50.56A384 384 0 0 1 896.128 512h-64a320 320 0 0 0-555.776-216.384z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-ep-refresh-left{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 1024 1024' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M289.088 296.704h92.992a32 32 0 0 1 0 64H232.96a32 32 0 0 1-32-32V179.712a32 32 0 0 1 64 0v50.56a384 384 0 0 1 643.84 282.88a384 384 0 0 1-383.936 384a384 384 0 0 1-384-384h64a320 320 0 1 0 640 0a320 320 0 0 0-555.712-216.448z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-ep-search{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 1024 1024' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m795.904 750.72l124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704a352 352 0 0 0 0 704'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-ep-switch{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 1024 1024' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M118.656 438.656a32 32 0 0 1 0-45.248L416 96l4.48-3.776A32 32 0 0 1 461.248 96l3.712 4.48a32.064 32.064 0 0 1-3.712 40.832L218.56 384H928a32 32 0 1 1 0 64H141.248a32 32 0 0 1-22.592-9.344M64 608a32 32 0 0 1 32-32h786.752a32 32 0 0 1 22.656 54.592L608 928l-4.48 3.776a32.064 32.064 0 0 1-40.832-49.024L805.632 640H96a32 32 0 0 1-32-32'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-ep-upload{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 1024 1024' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64m384-578.304V704h-64V247.296L237.248 490.048L192 444.8L508.8 128l316.8 316.8l-45.312 45.248z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-ep-user{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 1024 1024' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M512 512a192 192 0 1 0 0-384a192 192 0 0 0 0 384m0 64a256 256 0 1 1 0-512a256 256 0 0 1 0 512m320 320v-96a96 96 0 0 0-96-96H288a96 96 0 0 0-96 96v96a32 32 0 1 1-64 0v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 1 1-64 0'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.container{width:100%}.absolute-lt{position:absolute;left:0;top:0}.absolute-rt{position:absolute;right:0;top:0}.fixed-lt{position:fixed;left:0;top:0}.wh-full{width:100%;height:100%}.flex-center{display:flex;align-items:center;justify-content:center}.flex-x-between{display:flex;align-items:center;justify-content:space-between}.flex-y-center,[flex-y-center=""]{display:flex;align-items:center}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.z-999{z-index:999}.grid{display:grid}.\!mx-2,[\!mx-2=""]{margin-left:.5rem!important;margin-right:.5rem!important}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mb-\[10px\]{margin-bottom:10px}.mb-\[12px\]{margin-bottom:12px}.mb-\[20px\]{margin-bottom:20px}.mb-10{margin-bottom:2.5rem}.ml-1{margin-left:.25rem}.ml-2,[ml-2=""]{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-5{margin-left:1.25rem}.mr-10px{margin-right:10px}.mr-2{margin-right:.5rem}.mr-5{margin-right:1.25rem}.mt-\[12px\]{margin-top:12px}.mt-2{margin-top:.5rem}.mt-5{margin-top:1.25rem}[ms=""]{margin-inline-start:1rem}[ml-1~="default:"]:default{margin-left:.25rem}[ml-3~="default:"]:default{margin-left:.75rem}[mt-5~="default:"]:default{margin-top:1.25rem}.inline{display:inline}.block{display:block}.inline-block{display:inline-block}.hidden{display:none}[size~="12px"]{width:12px;height:12px}[size~="16"]{width:4rem;height:4rem}[size~="20"]{width:5rem;height:5rem}[size~="20px"]{width:20px;height:20px}[size~="24px"]{width:24px;height:24px}[size~="30%"]{width:30%;height:30%}[size~="300"]{width:75rem;height:75rem}[size~="50%"]{width:50%;height:50%}[size~="500"]{width:125rem;height:125rem}[size~="60%"]{width:60%;height:60%}[size~="70%"]{width:70%;height:70%}[size~="80%"]{width:80%;height:80%}[size~="85%"]{width:85%;height:85%}[size~="90%"]{width:90%;height:90%}.\!w-\[100px\]{width:100px!important}.\!w-\[240px\]{width:240px!important}.h-\[48px\]{height:48px}.h-12{height:3rem}.h-20{height:5rem}.h-full,.h100\%{height:100%}.h1{height:.25rem}.h2{height:.5rem}.h3{height:.75rem}.h6{height:1.5rem}.w-\[100px\]{width:100px}.w-\[200px\]{width:200px}.w-\[380px\]{width:380px}.w-20{width:5rem}.w-220px{width:220px}.w-350px{width:350px}.w-full{width:100%}.w24px{width:24px}.flex{display:flex}.inline-flex{display:inline-flex}.flex-1,[flex-1=""]{flex:1 1 0%}.flex-shrink{flex-shrink:1}.flex-wrap{flex-wrap:wrap}.transform{transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.cursor-pointer{cursor:pointer}.items-center{align-items:center}.justify-center{justify-content:center}.justify-around{justify-content:space-around}.border,[border=""]{border-width:1px}.rounded-full{border-radius:9999px}.bg-black{--un-bg-opacity:1;background-color:rgb(0 0 0 / var(--un-bg-opacity))}.bg-opacity-30{--un-bg-opacity:.3}.from-blue-500{--un-gradient-from-position:0%;--un-gradient-from:rgb(59 130 246 / var(--un-from-opacity, 1)) var(--un-gradient-from-position);--un-gradient-to-position:100%;--un-gradient-to:rgb(59 130 246 / 0) var(--un-gradient-to-position);--un-gradient-stops:var(--un-gradient-from), var(--un-gradient-to)}.to-teal-500{--un-gradient-to-position:100%;--un-gradient-to:rgb(20 184 166 / var(--un-to-opacity, 1)) var(--un-gradient-to-position)}.bg-gradient-to-r{--un-gradient-shape:to right;--un-gradient:var(--un-gradient-shape), var(--un-gradient-stops);background-image:linear-gradient(var(--un-gradient))}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.p-2{padding:.5rem}.p-5{padding:1.25rem}.p10px{padding:10px}[p~="1"]{padding:.25rem}.px,[px=""]{padding-left:1rem;padding-right:1rem}.px-\[15px\]{padding-left:15px;padding-right:15px}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pr-2{padding-right:.5rem}.text-center{text-align:center}.text-right{text-align:right}.\!text-xs,[\!text-xs=""]{font-size:.75rem!important;line-height:1rem!important}.text-\[16px\]{font-size:16px}.text-2xl{font-size:1.5rem;line-height:2rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}[text-sm~="default:"]:default{font-size:.875rem;line-height:1.25rem}.\!text-\[var\(--el-text-color-secondary\)\]{color:var(--el-text-color-secondary)!important}.text-\[var\(--el-text-color-secondary\)\]{color:var(--el-text-color-secondary)}.color-gray-400,.text-gray{--un-text-opacity:1;color:rgb(156 163 175 / var(--un-text-opacity))}.text-transparent{color:transparent}.color-\[--el-color-primary\]{color:var(--el-color-primary)}.color-\[var\(--el-color-danger\)\]{color:var(--el-color-danger)}.color-\[var\(--el-color-success\)\]{color:var(--el-color-success)}.color-\[var\(--el-text-color-regular\)\]{color:var(--el-text-color-regular)}.color-\#333{--un-text-opacity:1;color:rgb(51 51 51 / var(--un-text-opacity))}.font-bold{font-weight:700}.font-medium{font-weight:500}.italic{font-style:italic}.underline{text-decoration-line:underline}.shadow{--un-shadow:var(--un-shadow-inset) 0 1px 3px 0 var(--un-shadow-color, rgb(0 0 0 / .1)),var(--un-shadow-inset) 0 1px 2px -1px var(--un-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.outline{outline-style:solid}.blur{--un-blur:blur(8px);filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.filter{filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-in-out,[ease-in-out=""]{transition-timing-function:cubic-bezier(.4,0,.2,1)}[content~="$t("]{content:var(--t\()}[placeholder~="$t("]::placeholder{color:var(--t\()}@media (min-width: 640px){[mt-5~="sm:"]{margin-top:1.25rem}[text-sm~="sm:"]{font-size:.875rem;line-height:1.25rem}}@media (min-width: 1024px){[mt-5~="lg:"]{margin-top:1.25rem}[text-sm~="lg:"]{font-size:.875rem;line-height:1.25rem}}/*! +* animate.css - https://animate.style/ +* Version - 4.1.1 +* Licensed under the MIT license - http://opensource.org/licenses/MIT +* +* Copyright (c) 2020 Animate.css +*/:root{--animate-duration: 1s;--animate-delay: 1s;--animate-repeat: 1}.animate__animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-duration:var(--animate-duration);animation-duration:var(--animate-duration);-webkit-animation-fill-mode:both;animation-fill-mode:both}.animate__animated.animate__infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animate__animated.animate__repeat-1{-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-iteration-count:var(--animate-repeat);animation-iteration-count:var(--animate-repeat)}.animate__animated.animate__repeat-2{-webkit-animation-iteration-count:2;animation-iteration-count:2;-webkit-animation-iteration-count:calc(var(--animate-repeat) * 2);animation-iteration-count:calc(var(--animate-repeat) * 2)}.animate__animated.animate__repeat-3{-webkit-animation-iteration-count:3;animation-iteration-count:3;-webkit-animation-iteration-count:calc(var(--animate-repeat) * 3);animation-iteration-count:calc(var(--animate-repeat) * 3)}.animate__animated.animate__delay-1s{-webkit-animation-delay:1s;animation-delay:1s;-webkit-animation-delay:var(--animate-delay);animation-delay:var(--animate-delay)}.animate__animated.animate__delay-2s{-webkit-animation-delay:2s;animation-delay:2s;-webkit-animation-delay:calc(var(--animate-delay) * 2);animation-delay:calc(var(--animate-delay) * 2)}.animate__animated.animate__delay-3s{-webkit-animation-delay:3s;animation-delay:3s;-webkit-animation-delay:calc(var(--animate-delay) * 3);animation-delay:calc(var(--animate-delay) * 3)}.animate__animated.animate__delay-4s{-webkit-animation-delay:4s;animation-delay:4s;-webkit-animation-delay:calc(var(--animate-delay) * 4);animation-delay:calc(var(--animate-delay) * 4)}.animate__animated.animate__delay-5s{-webkit-animation-delay:5s;animation-delay:5s;-webkit-animation-delay:calc(var(--animate-delay) * 5);animation-delay:calc(var(--animate-delay) * 5)}.animate__animated.animate__faster{-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-duration:calc(var(--animate-duration) / 2);animation-duration:calc(var(--animate-duration) / 2)}.animate__animated.animate__fast{-webkit-animation-duration:.8s;animation-duration:.8s;-webkit-animation-duration:calc(var(--animate-duration) * .8);animation-duration:calc(var(--animate-duration) * .8)}.animate__animated.animate__slow{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-duration:calc(var(--animate-duration) * 2);animation-duration:calc(var(--animate-duration) * 2)}.animate__animated.animate__slower{-webkit-animation-duration:3s;animation-duration:3s;-webkit-animation-duration:calc(var(--animate-duration) * 3);animation-duration:calc(var(--animate-duration) * 3)}@media print,(prefers-reduced-motion: reduce){.animate__animated{-webkit-animation-duration:1ms!important;animation-duration:1ms!important;-webkit-transition-duration:1ms!important;transition-duration:1ms!important;-webkit-animation-iteration-count:1!important;animation-iteration-count:1!important}.animate__animated[class*=Out]{opacity:0}}@-webkit-keyframes bounce{0%,20%,53%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0) scaleY(1.1);transform:translate3d(0,-30px,0) scaleY(1.1)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0) scaleY(1.05);transform:translate3d(0,-15px,0) scaleY(1.05)}80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translate3d(0,0,0) scaleY(.95);transform:translateZ(0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-4px,0) scaleY(1.02);transform:translate3d(0,-4px,0) scaleY(1.02)}}@keyframes bounce{0%,20%,53%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0) scaleY(1.1);transform:translate3d(0,-30px,0) scaleY(1.1)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0) scaleY(1.05);transform:translate3d(0,-15px,0) scaleY(1.05)}80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translate3d(0,0,0) scaleY(.95);transform:translateZ(0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-4px,0) scaleY(1.02);transform:translate3d(0,-4px,0) scaleY(1.02)}}.animate__bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}.animate__flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}}@keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}}.animate__pulse{-webkit-animation-name:pulse;animation-name:pulse;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}}@keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}}.animate__rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shakeX{0%,to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shakeX{0%,to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.animate__shakeX{-webkit-animation-name:shakeX;animation-name:shakeX}@-webkit-keyframes shakeY{0%,to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}20%,40%,60%,80%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}}@keyframes shakeY{0%,to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}20%,40%,60%,80%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}}.animate__shakeY{-webkit-animation-name:shakeY;animation-name:shakeY}@-webkit-keyframes headShake{0%{-webkit-transform:translateX(0);transform:translate(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translate(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translate(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translate(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translate(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translate(0)}}@keyframes headShake{0%{-webkit-transform:translateX(0);transform:translate(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translate(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translate(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translate(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translate(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translate(0)}}.animate__headShake{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-name:headShake;animation-name:headShake}@-webkit-keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}to{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0)}}@keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}to{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0)}}.animate__swing{-webkit-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}to{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}}@keyframes tada{0%{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}to{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}}.animate__tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes wobble{0%{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}.animate__wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes jello{0%,11.1%,to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skew(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skew(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skew(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skew(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skew(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skew(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skew(-.1953125deg) skewY(-.1953125deg)}}@keyframes jello{0%,11.1%,to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skew(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skew(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skew(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skew(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skew(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skew(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skew(-.1953125deg) skewY(-.1953125deg)}}.animate__jello{-webkit-animation-name:jello;animation-name:jello;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}.animate__heartBeat{-webkit-animation-name:heartBeat;animation-name:heartBeat;-webkit-animation-duration:1.3s;animation-duration:1.3s;-webkit-animation-duration:calc(var(--animate-duration) * 1.3);animation-duration:calc(var(--animate-duration) * 1.3);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes backInDown{0%{-webkit-transform:translateY(-1200px) scale(.7);transform:translateY(-1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0px) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInDown{0%{-webkit-transform:translateY(-1200px) scale(.7);transform:translateY(-1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0px) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInDown{-webkit-animation-name:backInDown;animation-name:backInDown}@-webkit-keyframes backInLeft{0%{-webkit-transform:translateX(-2000px) scale(.7);transform:translate(-2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0px) scale(.7);transform:translate(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInLeft{0%{-webkit-transform:translateX(-2000px) scale(.7);transform:translate(-2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0px) scale(.7);transform:translate(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInLeft{-webkit-animation-name:backInLeft;animation-name:backInLeft}@-webkit-keyframes backInRight{0%{-webkit-transform:translateX(2000px) scale(.7);transform:translate(2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0px) scale(.7);transform:translate(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInRight{0%{-webkit-transform:translateX(2000px) scale(.7);transform:translate(2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0px) scale(.7);transform:translate(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInRight{-webkit-animation-name:backInRight;animation-name:backInRight}@-webkit-keyframes backInUp{0%{-webkit-transform:translateY(1200px) scale(.7);transform:translateY(1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0px) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInUp{0%{-webkit-transform:translateY(1200px) scale(.7);transform:translateY(1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0px) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInUp{-webkit-animation-name:backInUp;animation-name:backInUp}@-webkit-keyframes backOutDown{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0px) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(700px) scale(.7);transform:translateY(700px) scale(.7);opacity:.7}}@keyframes backOutDown{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0px) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(700px) scale(.7);transform:translateY(700px) scale(.7);opacity:.7}}.animate__backOutDown{-webkit-animation-name:backOutDown;animation-name:backOutDown}@-webkit-keyframes backOutLeft{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0px) scale(.7);transform:translate(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(-2000px) scale(.7);transform:translate(-2000px) scale(.7);opacity:.7}}@keyframes backOutLeft{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0px) scale(.7);transform:translate(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(-2000px) scale(.7);transform:translate(-2000px) scale(.7);opacity:.7}}.animate__backOutLeft{-webkit-animation-name:backOutLeft;animation-name:backOutLeft}@-webkit-keyframes backOutRight{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0px) scale(.7);transform:translate(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(2000px) scale(.7);transform:translate(2000px) scale(.7);opacity:.7}}@keyframes backOutRight{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0px) scale(.7);transform:translate(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(2000px) scale(.7);transform:translate(2000px) scale(.7);opacity:.7}}.animate__backOutRight{-webkit-animation-name:backOutRight;animation-name:backOutRight}@-webkit-keyframes backOutUp{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0px) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(-700px) scale(.7);transform:translateY(-700px) scale(.7);opacity:.7}}@keyframes backOutUp{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0px) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(-700px) scale(.7);transform:translateY(-700px) scale(.7);opacity:.7}}.animate__backOutUp{-webkit-animation-name:backOutUp;animation-name:backOutUp}@-webkit-keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}}@keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}}.animate__bounceIn{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration) * .75);animation-duration:calc(var(--animate-duration) * .75);-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0) scaleY(3);transform:translate3d(0,-3000px,0) scaleY(3)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0) scaleY(.9);transform:translate3d(0,25px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,-10px,0) scaleY(.95);transform:translate3d(0,-10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,5px,0) scaleY(.985);transform:translate3d(0,5px,0) scaleY(.985)}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0) scaleY(3);transform:translate3d(0,-3000px,0) scaleY(3)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0) scaleY(.9);transform:translate3d(0,25px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,-10px,0) scaleY(.95);transform:translate3d(0,-10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,5px,0) scaleY(.985);transform:translate3d(0,5px,0) scaleY(.985)}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}.animate__bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0) scaleX(3);transform:translate3d(-3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0) scaleX(1);transform:translate3d(25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(-10px,0,0) scaleX(.98);transform:translate3d(-10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(5px,0,0) scaleX(.995);transform:translate3d(5px,0,0) scaleX(.995)}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0) scaleX(3);transform:translate3d(-3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0) scaleX(1);transform:translate3d(25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(-10px,0,0) scaleX(.98);transform:translate3d(-10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(5px,0,0) scaleX(.995);transform:translate3d(5px,0,0) scaleX(.995)}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}.animate__bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0) scaleX(3);transform:translate3d(3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0) scaleX(1);transform:translate3d(-25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(10px,0,0) scaleX(.98);transform:translate3d(10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(-5px,0,0) scaleX(.995);transform:translate3d(-5px,0,0) scaleX(.995)}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0) scaleX(3);transform:translate3d(3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0) scaleX(1);transform:translate3d(-25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(10px,0,0) scaleX(.98);transform:translate3d(10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(-5px,0,0) scaleX(.995);transform:translate3d(-5px,0,0) scaleX(.995)}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}.animate__bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0) scaleY(5);transform:translate3d(0,3000px,0) scaleY(5)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,10px,0) scaleY(.95);transform:translate3d(0,10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-5px,0) scaleY(.985);transform:translate3d(0,-5px,0) scaleY(.985)}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0) scaleY(5);transform:translate3d(0,3000px,0) scaleY(5)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,10px,0) scaleY(.95);transform:translate3d(0,10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-5px,0) scaleY(.985);transform:translate3d(0,-5px,0) scaleY(.985)}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}.animate__bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.animate__bounceOut{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration) * .75);animation-duration:calc(var(--animate-duration) * .75);-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0) scaleY(.985);transform:translate3d(0,10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0) scaleY(3);transform:translate3d(0,2000px,0) scaleY(3)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0) scaleY(.985);transform:translate3d(0,10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0) scaleY(3);transform:translate3d(0,2000px,0) scaleY(3)}}.animate__bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0) scaleX(.9);transform:translate3d(20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0) scaleX(2);transform:translate3d(-2000px,0,0) scaleX(2)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0) scaleX(.9);transform:translate3d(20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0) scaleX(2);transform:translate3d(-2000px,0,0) scaleX(2)}}.animate__bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0) scaleX(.9);transform:translate3d(-20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0) scaleX(2);transform:translate3d(2000px,0,0) scaleX(2)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0) scaleX(.9);transform:translate3d(-20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0) scaleX(2);transform:translate3d(2000px,0,0) scaleX(2)}}.animate__bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0) scaleY(.985);transform:translate3d(0,-10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0) scaleY(.9);transform:translate3d(0,20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0) scaleY(3);transform:translate3d(0,-2000px,0) scaleY(3)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0) scaleY(.985);transform:translate3d(0,-10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0) scaleY(.9);transform:translate3d(0,20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0) scaleY(3);transform:translate3d(0,-2000px,0) scaleY(3)}}.animate__bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate__fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}.animate__fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}.animate__fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}.animate__fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}.animate__fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}.animate__fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}.animate__fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}.animate__fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}.animate__fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeInTopLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes fadeInTopLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}.animate__fadeInTopLeft{-webkit-animation-name:fadeInTopLeft;animation-name:fadeInTopLeft}@-webkit-keyframes fadeInTopRight{0%{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes fadeInTopRight{0%{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}.animate__fadeInTopRight{-webkit-animation-name:fadeInTopRight;animation-name:fadeInTopRight}@-webkit-keyframes fadeInBottomLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes fadeInBottomLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}.animate__fadeInBottomLeft{-webkit-animation-name:fadeInBottomLeft;animation-name:fadeInBottomLeft}@-webkit-keyframes fadeInBottomRight{0%{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes fadeInBottomRight{0%{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}.animate__fadeInBottomRight{-webkit-animation-name:fadeInBottomRight;animation-name:fadeInBottomRight}@-webkit-keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.animate__fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.animate__fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.animate__fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.animate__fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.animate__fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.animate__fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.animate__fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.animate__fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.animate__fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes fadeOutTopLeft{0%{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}}@keyframes fadeOutTopLeft{0%{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}}.animate__fadeOutTopLeft{-webkit-animation-name:fadeOutTopLeft;animation-name:fadeOutTopLeft}@-webkit-keyframes fadeOutTopRight{0%{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}}@keyframes fadeOutTopRight{0%{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}}.animate__fadeOutTopRight{-webkit-animation-name:fadeOutTopRight;animation-name:fadeOutTopRight}@-webkit-keyframes fadeOutBottomRight{0%{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}}@keyframes fadeOutBottomRight{0%{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}}.animate__fadeOutBottomRight{-webkit-animation-name:fadeOutBottomRight;animation-name:fadeOutBottomRight}@-webkit-keyframes fadeOutBottomLeft{0%{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}}@keyframes fadeOutBottomLeft{0%{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}}.animate__fadeOutBottomLeft{-webkit-animation-name:fadeOutBottomLeft;animation-name:fadeOutBottomLeft}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,0) rotate3d(0,1,0,-360deg);transform:perspective(400px) scaleZ(1) translateZ(0) rotateY(-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) scaleZ(1) translateZ(150px) rotateY(-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) scaleZ(1) translateZ(150px) rotateY(-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translate3d(0,0,0) rotate3d(0,1,0,0deg);transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,0) rotate3d(0,1,0,0deg);transform:perspective(400px) scaleZ(1) translateZ(0) rotateY(0);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,0) rotate3d(0,1,0,-360deg);transform:perspective(400px) scaleZ(1) translateZ(0) rotateY(-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) scaleZ(1) translateZ(150px) rotateY(-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) scaleZ(1) translateZ(150px) rotateY(-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translate3d(0,0,0) rotate3d(0,1,0,0deg);transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,0) rotate3d(0,1,0,0deg);transform:perspective(400px) scaleZ(1) translateZ(0) rotateY(0);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animate__animated.animate__flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.animate__flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.animate__flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}.animate__flipOutX{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration) * .75);animation-duration:calc(var(--animate-duration) * .75);-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}.animate__flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration) * .75);animation-duration:calc(var(--animate-duration) * .75);-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedInRight{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skew(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skew(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skew(-5deg)}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes lightSpeedInRight{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skew(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skew(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skew(-5deg)}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}.animate__lightSpeedInRight{-webkit-animation-name:lightSpeedInRight;animation-name:lightSpeedInRight;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedInLeft{0%{-webkit-transform:translate3d(-100%,0,0) skewX(30deg);transform:translate3d(-100%,0,0) skew(30deg);opacity:0}60%{-webkit-transform:skewX(-20deg);transform:skew(-20deg);opacity:1}80%{-webkit-transform:skewX(5deg);transform:skew(5deg)}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes lightSpeedInLeft{0%{-webkit-transform:translate3d(-100%,0,0) skewX(30deg);transform:translate3d(-100%,0,0) skew(30deg);opacity:0}60%{-webkit-transform:skewX(-20deg);transform:skew(-20deg);opacity:1}80%{-webkit-transform:skewX(5deg);transform:skew(5deg)}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}.animate__lightSpeedInLeft{-webkit-animation-name:lightSpeedInLeft;animation-name:lightSpeedInLeft;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOutRight{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skew(30deg);opacity:0}}@keyframes lightSpeedOutRight{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skew(30deg);opacity:0}}.animate__lightSpeedOutRight{-webkit-animation-name:lightSpeedOutRight;animation-name:lightSpeedOutRight;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes lightSpeedOutLeft{0%{opacity:1}to{-webkit-transform:translate3d(-100%,0,0) skewX(-30deg);transform:translate3d(-100%,0,0) skew(-30deg);opacity:0}}@keyframes lightSpeedOutLeft{0%{opacity:1}to{-webkit-transform:translate3d(-100%,0,0) skewX(-30deg);transform:translate3d(-100%,0,0) skew(-30deg);opacity:0}}.animate__lightSpeedOutLeft{-webkit-animation-name:lightSpeedOutLeft;animation-name:lightSpeedOutLeft;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0);opacity:1}}@keyframes rotateIn{0%{-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0);opacity:1}}.animate__rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0);opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0);opacity:1}}.animate__rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0);opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0);opacity:1}}.animate__rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0);opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0);opacity:1}}.animate__rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0);opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0);opacity:1}}.animate__rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateOut{0%{opacity:1}to{-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}@keyframes rotateOut{0%{opacity:1}to{-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}.animate__rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes rotateOutDownLeft{0%{opacity:1}to{-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{opacity:1}to{-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}}.animate__rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateOutDownRight{0%{opacity:1}to{-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{opacity:1}to{-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.animate__rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateOutUpLeft{0%{opacity:1}to{-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{opacity:1}to{-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.animate__rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateOutUpRight{0%{opacity:1}to{-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}@keyframes rotateOutUpRight{0%{opacity:1}to{-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}.animate__rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes hinge{0%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.animate__hinge{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-duration:calc(var(--animate-duration) * 2);animation-duration:calc(var(--animate-duration) * 2);-webkit-animation-name:hinge;animation-name:hinge;-webkit-transform-origin:top left;transform-origin:top left}@-webkit-keyframes jackInTheBox{0%{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes jackInTheBox{0%{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.animate__jackInTheBox{-webkit-animation-name:jackInTheBox;animation-name:jackInTheBox}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}.animate__rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}@keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}.animate__rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.animate__zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}.animate__zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0)}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0)}}.animate__zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft;-webkit-transform-origin:left center;transform-origin:left center}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0)}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0)}}.animate__zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight;-webkit-transform-origin:right center;transform-origin:right center}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}.animate__slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}.animate__slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}.animate__slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}.animate__slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes slideOutDown{0%{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.animate__slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes slideOutLeft{0%{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.animate__slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes slideOutRight{0%{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.animate__slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{0%{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.animate__slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}.jv-container{box-sizing:border-box;position:relative}.jv-container.boxed{border:1px solid #eee;border-radius:6px}.jv-container.boxed:hover{box-shadow:0 2px 7px #00000026;border-color:transparent;position:relative}.jv-container.jv-light{background:#fff;white-space:nowrap;color:#525252;font-size:14px;font-family:Consolas,Menlo,Courier,monospace}.jv-container.jv-dark{background:#282c34;white-space:nowrap;color:#fff;font-size:14px;font-family:Consolas,Menlo,Courier,monospace}.jv-container.jv-light .jv-ellipsis{color:#999;background-color:#eee;display:inline-block;line-height:.9;font-size:.9em;padding:0 4px 2px;margin:0 4px;border-radius:3px;vertical-align:2px;cursor:pointer;-webkit-user-select:none;user-select:none}.jv-container.jv-dark .jv-ellipsis{color:#f8f8f8;background-color:#2c3e50;display:inline-block;line-height:.9;font-size:.9em;padding:0 4px 2px;margin:0 4px;border-radius:3px;vertical-align:2px;cursor:pointer;-webkit-user-select:none;user-select:none}.jv-container.jv-light .jv-button,.jv-container.jv-dark .jv-button{color:#49b3ff}.jv-container.jv-light .jv-key{color:#111;margin-right:4px}.jv-container.jv-dark .jv-key{color:#fff;margin-right:4px}.jv-container.jv-dark .jv-item.jv-array{color:#111}.jv-container.jv-dark .jv-item.jv-array{color:#fff}.jv-container.jv-dark .jv-item.jv-boolean{color:#fc1e70}.jv-container.jv-dark .jv-item.jv-function{color:#067bca}.jv-container.jv-dark .jv-item.jv-number{color:#fc1e70}.jv-container.jv-dark .jv-item.jv-object{color:#fff}.jv-container.jv-dark .jv-item.jv-undefined{color:#e08331}.jv-container.jv-dark .jv-item.jv-string{color:#42b983;word-break:break-word;white-space:normal}.jv-container.jv-dark .jv-item.jv-string .jv-link{color:#0366d6}.jv-container.jv-dark .jv-code .jv-toggle:before{padding:0 2px;border-radius:2px}.jv-container.jv-dark .jv-code .jv-toggle:hover:before{background:#eee}.jv-container.jv-light .jv-item.jv-array{color:#111}.jv-container.jv-light .jv-item.jv-boolean{color:#fc1e70}.jv-container.jv-light .jv-item.jv-function{color:#067bca}.jv-container.jv-light .jv-item.jv-number{color:#fc1e70}.jv-container.jv-light .jv-item.jv-object{color:#111}.jv-container.jv-light .jv-item.jv-undefined{color:#e08331}.jv-container.jv-light .jv-item.jv-string{color:#42b983;word-break:break-word;white-space:normal}.jv-container.jv-light .jv-item.jv-string .jv-link{color:#0366d6}.jv-container.jv-light .jv-code .jv-toggle:before{padding:0 2px;border-radius:2px}.jv-container.jv-light .jv-code .jv-toggle:hover:before{background:#eee}.jv-container .jv-code{overflow:hidden;padding:30px 20px}.jv-container .jv-code.boxed{max-height:300px}.jv-container .jv-code.open{max-height:initial!important;overflow:visible;overflow-x:auto;padding-bottom:45px}.jv-container .jv-toggle{background-image:url("data:image/svg+xml,%3csvg%20height='16'%20width='8'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpolygon%20points='0,0%208,8%200,16'%20style='fill:%23666;stroke:purple;stroke-width:0'%20/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:contain;background-position:center center;cursor:pointer;width:10px;height:10px;margin-right:2px;display:inline-block;transition:transform .1s}.jv-container .jv-toggle.open{transform:rotate(90deg)}.jv-container .jv-more{position:absolute;z-index:1;bottom:0;left:0;right:0;height:40px;width:100%;text-align:center;cursor:pointer}.jv-container .jv-more .jv-toggle{position:relative;top:40%;z-index:2;color:#888;transition:all .1s;transform:rotate(90deg)}.jv-container .jv-more .jv-toggle.open{transform:rotate(-90deg)}.jv-container .jv-more:after{content:"";width:100%;height:100%;position:absolute;bottom:0;left:0;z-index:1;background:linear-gradient(to bottom,#0000 20%,#e6e6e64d);transition:all .1s}.jv-container .jv-more:hover .jv-toggle{top:50%;color:#111}.jv-container .jv-more:hover:after{background:linear-gradient(to bottom,#0000 20%,#e6e6e64d)}.jv-container .jv-button{position:relative;cursor:pointer;display:inline-block;padding:5px;z-index:5}.jv-container .jv-button.copied{opacity:.4;cursor:default}.jv-container .jv-tooltip{position:absolute}.jv-container .jv-tooltip.right{right:15px}.jv-container .jv-tooltip.left{left:15px}.jv-container .j-icon{font-size:12px}.jv-node{position:relative}.jv-node:after{content:","}.jv-node:last-of-type:after{content:""}.jv-node.toggle{margin-left:13px!important}.jv-node .jv-node{margin-left:25px} diff --git a/resources/views/dist/css/index.BDEJCyCm.css b/resources/views/dist/css/index.BDEJCyCm.css new file mode 100644 index 0000000..ee1cc04 --- /dev/null +++ b/resources/views/dist/css/index.BDEJCyCm.css @@ -0,0 +1 @@ +@charset "UTF-8";[data-v-af9af89a]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-af9af89a]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-af9af89a]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.pagination[data-v-af9af89a]{padding:12px}.pagination.hidden[data-v-af9af89a]{display:none} diff --git a/resources/views/dist/css/index.BFuNDnEk.css b/resources/views/dist/css/index.BFuNDnEk.css new file mode 100644 index 0000000..db874b6 --- /dev/null +++ b/resources/views/dist/css/index.BFuNDnEk.css @@ -0,0 +1 @@ +@charset "UTF-8";[data-v-c63fb7bb]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-c63fb7bb]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-c63fb7bb]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.reference[data-v-c63fb7bb] .el-input__wrapper,.reference[data-v-c63fb7bb] .el-input__inner{cursor:pointer}.feedback[data-v-c63fb7bb]{display:flex;justify-content:flex-end;margin-top:6px}.radio[data-v-c63fb7bb] .el-table__header th.el-table__cell:nth-child(1) .el-checkbox{visibility:hidden} diff --git a/resources/views/dist/css/index.BU3Oya2i.css b/resources/views/dist/css/index.BU3Oya2i.css new file mode 100644 index 0000000..c78135c --- /dev/null +++ b/resources/views/dist/css/index.BU3Oya2i.css @@ -0,0 +1 @@ +@charset "UTF-8";[data-v-c36686df]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-c36686df]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-c36686df]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.menu-search[data-v-c36686df] .el-input{width:300px!important}.el-container{box-sizing:border-box;display:flex;flex:1;flex-basis:auto;flex-direction:row;min-width:0}.el-container.is-vertical{flex-direction:column}.el-aside{box-sizing:border-box;flex-shrink:0;overflow:auto;width:var(--el-aside-width,300px)}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;box-sizing:border-box;flex-shrink:0;height:var(--el-footer-height);padding:var(--el-footer-padding)}.el-header{--el-header-padding:0 20px;--el-header-height:60px;box-sizing:border-box;flex-shrink:0;height:var(--el-header-height);padding:var(--el-header-padding)}.el-main{--el-main-padding:20px;box-sizing:border-box;display:block;flex:1;flex-basis:auto;overflow:auto;padding:var(--el-main-padding)}.el-select-dropdown{z-index:9999!important}[data-v-af5c8f33]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-af5c8f33]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-af5c8f33]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.nav-action-item[data-v-af5c8f33]{display:inline-block;min-width:40px;height:50px;line-height:50px;color:var(--el-text-color);text-align:center;cursor:pointer}.nav-action-item[data-v-af5c8f33]:hover{background:#0000001a}.nav-action-item-nohover[data-v-af5c8f33]{display:inline-block;min-width:40px;height:50px;line-height:50px;color:var(--el-text-color);text-align:center;cursor:pointer}[data-v-af5c8f33] .message .el-badge__content.is-fixed.is-dot{top:5px;right:10px}[data-v-af5c8f33] .el-divider--horizontal{margin:10px 0}.dark .nav-action-item[data-v-af5c8f33]:hover{background:#fff3}.layout-top .nav-action-item[data-v-af5c8f33],.layout-mix .nav-action-item[data-v-af5c8f33]{color:#fff}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{content:"";display:table}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{color:var(--el-text-color-placeholder);font-weight:700;margin:0 9px}.el-breadcrumb__separator.el-icon{font-weight:400;margin:0 6px}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{align-items:center;display:inline-flex;float:left}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{color:var(--el-text-color-primary);font-weight:700;text-decoration:none;transition:var(--el-transition-color)}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{color:var(--el-text-color-regular);cursor:text;font-weight:400}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}[data-v-f3b2fb85]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-f3b2fb85]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-f3b2fb85]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.el-breadcrumb__inner[data-v-f3b2fb85],.el-breadcrumb__inner a[data-v-f3b2fb85]{font-weight:400!important}[data-v-466a0135]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-466a0135]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-466a0135]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.hamburger[data-v-466a0135]{vertical-align:middle;cursor:pointer;transform:scaleX(-1)}.hamburger.is-active[data-v-466a0135]{transform:scaleX(1)}[data-v-c56f0c13]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-c56f0c13]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-c56f0c13]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.navbar-container[data-v-c56f0c13]{display:flex;align-items:center;justify-content:space-between;height:50px;background:var(--el-bg-color)}.el-backtop{--el-backtop-bg-color:var(--el-bg-color-overlay);--el-backtop-text-color:var(--el-color-primary);--el-backtop-hover-bg-color:var(--el-border-color-extra-light);align-items:center;background-color:var(--el-backtop-bg-color);border-radius:50%;box-shadow:var(--el-box-shadow-lighter);color:var(--el-backtop-text-color);cursor:pointer;display:flex;font-size:20px;height:40px;justify-content:center;position:fixed;width:40px;z-index:5}.el-backtop:hover{background-color:var(--el-backtop-hover-bg-color)}.el-backtop__icon{font-size:20px}.layout-selector[data-v-2bdf1403]{display:flex;flex-wrap:wrap;justify-content:space-around;width:100%;height:50px}.layout-item[data-v-2bdf1403]{position:relative;width:18%;height:45px;overflow:hidden;cursor:pointer;background:#f0f2f5;border-radius:4px}.layout-item[data-v-2bdf1403].mix div[data-v-2bdf1403]:nth-child(1),.layout-item[data-v-2bdf1403].top div[data-v-2bdf1403]:nth-child(1){width:100%;height:30%;background:#1b2a47;box-shadow:0 0 1px #888}.layout-item[data-v-2bdf1403].mix div[data-v-2bdf1403]:nth-child(2){position:absolute;bottom:0;left:0;width:30%;height:70%;background:#1b2a47;box-shadow:0 0 1px #888}.layout-item[data-v-2bdf1403].left div[data-v-2bdf1403]:nth-child(1){width:30%;height:100%;background:#1b2a47}.layout-item[data-v-2bdf1403].left div[data-v-2bdf1403]:nth-child(2){position:absolute;top:0;right:0;width:70%;height:30%;background:#fff;box-shadow:0 0 1px #888}.layout-item.is-active[data-v-2bdf1403]{border:2px solid var(--el-color-primary)}.el-color-predefine{display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:flex;flex:1;flex-wrap:wrap}.el-color-predefine__color-selector{border-radius:4px;cursor:pointer;height:20px;margin:0 0 8px 8px;width:20px}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{box-shadow:0 0 3px 2px var(--el-color-primary)}.el-color-predefine__color-selector>div{border-radius:3px;display:flex;height:100%}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{background-color:red;box-sizing:border-box;float:right;height:12px;padding:0 2px;position:relative;width:280px}.el-color-hue-slider__bar{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff,#00f 67%,#f0f 83%,red);height:100%;position:relative}.el-color-hue-slider__thumb{background:#fff;border:1px solid var(--el-border-color-lighter);border-radius:1px;box-shadow:0 0 2px #0009;box-sizing:border-box;cursor:pointer;height:100%;left:0;position:absolute;top:0;width:4px;z-index:1}.el-color-hue-slider.is-vertical{height:180px;padding:2px 0;width:12px}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:linear-gradient(180deg,red 0,#ff0 17%,#0f0 33%,#0ff,#00f 67%,#f0f 83%,red)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{height:4px;left:0;top:0;width:100%}.el-color-svpanel{height:180px;position:relative;width:280px}.el-color-svpanel__black,.el-color-svpanel__white{bottom:0;left:0;position:absolute;right:0;top:0}.el-color-svpanel__white{background:linear-gradient(90deg,#fff,#fff0)}.el-color-svpanel__black{background:linear-gradient(0deg,#000,#0000)}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{border-radius:50%;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px #0000004d,0 0 1px 2px #0006;cursor:head;height:4px;transform:translate(-2px,-2px);width:4px}.el-color-alpha-slider{background-image:linear-gradient(45deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(45deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%);background-position:0 0,6px 0,6px -6px,0 6px;background-size:12px 12px;box-sizing:border-box;height:12px;position:relative;width:280px}.el-color-alpha-slider__bar{background:linear-gradient(to right,rgba(255,255,255,0) 0,var(--el-bg-color) 100%);height:100%;position:relative}.el-color-alpha-slider__thumb{background:#fff;border:1px solid var(--el-border-color-lighter);border-radius:1px;box-shadow:0 0 2px #0009;box-sizing:border-box;cursor:pointer;height:100%;left:0;position:absolute;top:0;width:4px;z-index:1}.el-color-alpha-slider.is-vertical{height:180px;width:20px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:linear-gradient(180deg,#fff0 0,#fff)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{height:4px;left:0;top:0;width:100%}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper:after{clear:both;content:"";display:table}.el-color-dropdown__btns{margin-top:12px;text-align:right}.el-color-dropdown__value{color:#000;float:left;font-size:12px;line-height:26px;width:160px}.el-color-picker{display:inline-block;line-height:normal;outline:none;position:relative}.el-color-picker:hover:not(.is-disabled,.is-focused) .el-color-picker__trigger{border-color:var(--el-border-color-hover)}.el-color-picker:focus-visible:not(.is-disabled) .el-color-picker__trigger{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-picker.is-focused .el-color-picker__trigger{border-color:var(--el-color-primary)}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--large{height:40px}.el-color-picker--large .el-color-picker__trigger{height:40px;width:40px}.el-color-picker--large .el-color-picker__mask{height:38px;width:38px}.el-color-picker--small{height:24px}.el-color-picker--small .el-color-picker__trigger{height:24px;width:24px}.el-color-picker--small .el-color-picker__mask{height:22px;width:22px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{transform:scale(.8)}.el-color-picker__mask{background-color:#ffffffb3;border-radius:4px;cursor:not-allowed;height:30px;left:1px;position:absolute;top:1px;width:30px;z-index:1}.el-color-picker__trigger{align-items:center;border:1px solid var(--el-border-color);border-radius:4px;box-sizing:border-box;cursor:pointer;display:inline-flex;font-size:0;height:32px;justify-content:center;padding:4px;position:relative;width:32px}.el-color-picker__color{border:1px solid var(--el-text-color-secondary);border-radius:var(--el-border-radius-small);box-sizing:border-box;display:block;height:100%;position:relative;text-align:center;width:100%}.el-color-picker__color.is-alpha{background-image:linear-gradient(45deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(45deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%);background-position:0 0,6px 0,6px -6px,0 6px;background-size:12px 12px}.el-color-picker__color-inner{align-items:center;display:inline-flex;height:100%;justify-content:center;width:100%}.el-color-picker .el-color-picker__empty{color:var(--el-text-color-secondary);font-size:12px}.el-color-picker .el-color-picker__icon{align-items:center;color:#fff;display:inline-flex;font-size:12px;justify-content:center}.el-color-picker__panel{background-color:#fff;border-radius:var(--el-border-radius-base);box-shadow:var(--el-box-shadow-light);box-sizing:content-box;padding:6px;position:absolute;z-index:10}.el-color-picker__panel.el-popper{border:1px solid var(--el-border-color-lighter)}.el-color-picker,.el-color-picker__panel{--el-color-picker-alpha-bg-a:#ccc;--el-color-picker-alpha-bg-b:transparent}.dark .el-color-picker,.dark .el-color-picker__panel{--el-color-picker-alpha-bg-a:#333333}[data-v-92c1fd79] .theme-picker-dropdown{z-index:99999!important}.setting-item[data-v-546a3f84]{display:flex;align-items:center;justify-content:space-between;padding-top:.25rem;padding-bottom:.25rem}[data-v-546a3f84]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-546a3f84]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-546a3f84]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.nav-action-item[data-v-546a3f84]{display:inline-block;min-width:40px;height:50px;line-height:50px;color:var(--el-text-color);text-align:center;cursor:pointer}.nav-action-item[data-v-546a3f84]:hover{background:#0000001a}[data-v-546a3f84] .message .el-badge__content.is-fixed.is-dot{top:5px;right:10px}[data-v-546a3f84] .el-divider--horizontal{margin:10px 0}.dark .nav-action-item[data-v-546a3f84]:hover{background:#fff3}.layout-top .nav-action-item[data-v-546a3f84],.layout-mix .nav-action-item[data-v-546a3f84]{color:#fff}:root ._el-table_11wzp_10{--el-table-current-row-bg-color: rgb(235 243 250)}html._dark_11wzp_15{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}[data-v-10d1a7a0]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-10d1a7a0]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-10d1a7a0]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.app-main[data-v-10d1a7a0]{position:relative;background-color:var(--el-bg-color-page)}[data-v-35b034c8]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-35b034c8]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-35b034c8]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.tags-container[data-v-35b034c8]{width:100%;height:34px;background-color:var(--el-bg-color);border:1px solid var(--el-border-color-light);box-shadow:0 1px 1px var(--el-box-shadow-light)}.tags-container .tags-item[data-v-35b034c8]{display:inline-block;padding:3px 8px;margin:4px 0 0 5px;font-size:12px;cursor:pointer;border:1px solid var(--el-border-color-light)}.tags-container .tags-item[data-v-35b034c8]:hover{color:var(--el-color-primary)}.tags-container .tags-item[data-v-35b034c8]:first-of-type{margin-left:15px}.tags-container .tags-item[data-v-35b034c8]:last-of-type{margin-right:15px}.tags-container .tags-item .close-icon[data-v-35b034c8]{border-radius:50%}.tags-container .tags-item .close-icon[data-v-35b034c8]:hover,.tags-container .tags-item.active[data-v-35b034c8]{color:#fff;background-color:var(--el-color-primary)}.tags-container .tags-item.active[data-v-35b034c8]:before{display:inline-block;width:8px;height:8px;margin-right:5px;content:"";background:#fff;border-radius:50%}.tags-container .tags-item.active .close-icon[data-v-35b034c8]:hover{color:var(--el-color-primary);background-color:var(--el-fill-color-light)}.contextmenu[data-v-35b034c8]{position:absolute;z-index:99;font-size:12px;background:var(--el-bg-color-overlay);border-radius:4px;box-shadow:var(--el-box-shadow-light)}.contextmenu li[data-v-35b034c8]{padding:8px 16px;cursor:pointer}.contextmenu li[data-v-35b034c8]:hover{background:var(--el-fill-color-light)}.scroll-container[data-v-35b034c8]{position:relative;width:100%;overflow:hidden;white-space:nowrap}.scroll-container .el-scrollbar__bar[data-v-35b034c8]{bottom:0}.scroll-container .el-scrollbar__wrap[data-v-35b034c8]{height:49px}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}:root{--el-menu-active-color:var(--el-color-primary);--el-menu-text-color:var(--el-text-color-primary);--el-menu-hover-text-color:var(--el-color-primary);--el-menu-bg-color:var(--el-fill-color-blank);--el-menu-hover-bg-color:var(--el-color-primary-light-9);--el-menu-item-height:56px;--el-menu-sub-item-height:calc(var(--el-menu-item-height) - 6px);--el-menu-horizontal-height:60px;--el-menu-horizontal-sub-item-height:36px;--el-menu-item-font-size:var(--el-font-size-base);--el-menu-item-hover-fill:var(--el-color-primary-light-9);--el-menu-border-color:var(--el-border-color);--el-menu-base-level-padding:20px;--el-menu-level-padding:20px;--el-menu-icon-width:24px}.el-menu{background-color:var(--el-menu-bg-color);border-right:1px solid var(--el-menu-border-color);box-sizing:border-box;list-style:none;margin:0;padding-left:0;position:relative}.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item-group__title,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-sub-menu__title{padding-left:calc(var(--el-menu-base-level-padding) + var(--el-menu-level)*var(--el-menu-level-padding));white-space:nowrap}.el-menu:not(.el-menu--collapse) .el-sub-menu__title{padding-right:calc(var(--el-menu-base-level-padding) + var(--el-menu-icon-width))}.el-menu--horizontal{border-right:none;display:flex;flex-wrap:nowrap;height:var(--el-menu-horizontal-height)}.el-menu--horizontal.el-menu--popup-container{height:unset}.el-menu--horizontal.el-menu{border-bottom:1px solid var(--el-menu-border-color)}.el-menu--horizontal>.el-menu-item{align-items:center;border-bottom:2px solid transparent;color:var(--el-menu-text-color);display:inline-flex;height:100%;justify-content:center;margin:0}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-sub-menu:focus,.el-menu--horizontal>.el-sub-menu:hover{outline:none}.el-menu--horizontal>.el-sub-menu:hover .el-sub-menu__title{color:var(--el-menu-hover-text-color)}.el-menu--horizontal>.el-sub-menu.is-active .el-sub-menu__title{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title{border-bottom:2px solid transparent;color:var(--el-menu-text-color);height:100%}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title:hover{background-color:var(--el-menu-bg-color)}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-sub-menu__title{align-items:center;background-color:var(--el-menu-bg-color);color:var(--el-menu-text-color);display:flex;height:var(--el-menu-horizontal-sub-item-height);line-height:var(--el-menu-horizontal-sub-item-height);padding:0 10px}.el-menu--horizontal .el-menu .el-sub-menu__title{padding-right:40px}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title{color:var(--el-menu-active-color)}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{background-color:var(--el-menu-hover-bg-color);color:var(--el-menu-hover-text-color);outline:none}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)!important}.el-menu--collapse{width:calc(var(--el-menu-icon-width) + var(--el-menu-base-level-padding)*2)}.el-menu--collapse>.el-menu-item [class^=el-icon],.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title [class^=el-icon],.el-menu--collapse>.el-sub-menu>.el-sub-menu__title [class^=el-icon]{margin:0;text-align:center;vertical-align:middle;width:var(--el-menu-icon-width)}.el-menu--collapse>.el-menu-item .el-sub-menu__icon-arrow,.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title>span,.el-menu--collapse>.el-menu-item>span,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title>span{display:inline-block;height:0;overflow:hidden;visibility:hidden;width:0}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-sub-menu{min-width:200px}.el-menu--collapse .el-sub-menu.is-active .el-sub-menu__title{color:var(--el-menu-active-color)}.el-menu--popup{border:none;border-radius:var(--el-border-radius-small);box-shadow:var(--el-box-shadow-light);min-width:200px;padding:5px 0;z-index:100}.el-menu .el-icon{flex-shrink:0}.el-menu-item{align-items:center;box-sizing:border-box;color:var(--el-menu-text-color);cursor:pointer;display:flex;font-size:var(--el-menu-item-font-size);height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);list-style:none;padding:0 var(--el-menu-base-level-padding);position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);white-space:nowrap}.el-menu-item *{vertical-align:bottom}.el-menu-item i{color:inherit}.el-menu-item:focus,.el-menu-item:hover{outline:none}.el-menu-item:hover{background-color:var(--el-menu-hover-bg-color)}.el-menu-item.is-disabled{background:none!important;cursor:not-allowed;opacity:.25}.el-menu-item [class^=el-icon]{font-size:18px;margin-right:5px;text-align:center;vertical-align:middle;width:var(--el-menu-icon-width)}.el-menu-item.is-active{color:var(--el-menu-active-color)}.el-menu-item.is-active i{color:inherit}.el-menu-item .el-menu-tooltip__trigger{align-items:center;box-sizing:border-box;display:inline-flex;height:100%;left:0;padding:0 var(--el-menu-base-level-padding);position:absolute;top:0;width:100%}.el-sub-menu{list-style:none;margin:0;padding-left:0}.el-sub-menu__title{align-items:center;box-sizing:border-box;color:var(--el-menu-text-color);cursor:pointer;display:flex;font-size:var(--el-menu-item-font-size);height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);list-style:none;padding:0 var(--el-menu-base-level-padding);position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);white-space:nowrap}.el-sub-menu__title *{vertical-align:bottom}.el-sub-menu__title i{color:inherit}.el-sub-menu__title:focus,.el-sub-menu__title:hover{outline:none}.el-sub-menu__title.is-disabled{background:none!important;cursor:not-allowed;opacity:.25}.el-sub-menu__title:hover{background-color:var(--el-menu-hover-bg-color)}.el-sub-menu .el-menu{border:none}.el-sub-menu .el-menu-item{height:var(--el-menu-sub-item-height);line-height:var(--el-menu-sub-item-height)}.el-sub-menu__hide-arrow .el-sub-menu__icon-arrow{display:none!important}.el-sub-menu.is-active .el-sub-menu__title{border-bottom-color:var(--el-menu-active-color)}.el-sub-menu.is-disabled .el-menu-item,.el-sub-menu.is-disabled .el-sub-menu__title{background:none!important;cursor:not-allowed;opacity:.25}.el-sub-menu .el-icon{font-size:18px;margin-right:5px;text-align:center;vertical-align:middle;width:var(--el-menu-icon-width)}.el-sub-menu .el-icon.el-sub-menu__icon-more{margin-right:0!important}.el-sub-menu .el-sub-menu__icon-arrow{font-size:12px;margin-right:0;margin-top:-6px;position:absolute;right:var(--el-menu-base-level-padding);top:50%;transition:transform var(--el-transition-duration);width:inherit}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{color:var(--el-text-color-secondary);font-size:12px;line-height:normal;padding:7px 0 7px var(--el-menu-base-level-padding)}.horizontal-collapse-transition .el-sub-menu__title .el-sub-menu__icon-arrow{opacity:0;transition:var(--el-transition-duration-fast)}[data-v-143f91f3]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-143f91f3]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-143f91f3]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.sub-el-icon[data-v-143f91f3]{width:14px!important;margin-right:0!important;color:currentcolor}.hideSidebar .el-sub-menu .svg-icon[data-v-143f91f3],.hideSidebar .el-sub-menu .sub-el-icon[data-v-143f91f3],.hideSidebar .el-menu-item .svg-icon[data-v-143f91f3],.hideSidebar .el-menu-item .sub-el-icon[data-v-143f91f3]{margin-left:20px}:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.hideSidebar .submenu-title-noDropdown{position:relative;padding:0!important}.hideSidebar .submenu-title-noDropdown .el-tooltip{padding:0!important}.hideSidebar .submenu-title-noDropdown .el-tooltip .sub-el-icon{margin-left:19px}.hideSidebar .submenu-title-noDropdown>span{display:inline-block;width:0;height:0;overflow:hidden;visibility:hidden}.hideSidebar .el-sub-menu{overflow:hidden}.hideSidebar .el-sub-menu>.el-sub-menu__title{padding:0!important}.hideSidebar .el-sub-menu>.el-sub-menu__title .sub-el-icon{margin-left:19px}.hideSidebar .el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow{display:none}.hideSidebar .el-menu--collapse{width:54px}.hideSidebar .el-menu--collapse .el-sub-menu>.el-sub-menu__title>span{display:inline-block;width:0;height:0;overflow:hidden;visibility:hidden}.el-menu-item:hover{background-color:var(--menu-hover)}[data-v-93d21f94]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-93d21f94]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-93d21f94]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.logo-container[data-v-93d21f94]{width:100%;height:50px;background-color:var(--sidebar-logo-background)}.logo-container .logo-image[data-v-93d21f94]{width:20px;height:20px}.logo-container .logo-title[data-v-93d21f94]{flex-shrink:0;margin-left:10px;font-size:14px;font-weight:700;color:#fff}.layout-top .logo-container[data-v-93d21f94],.layout-mix .logo-container[data-v-93d21f94]{width:210px}.layout-top.hideSidebar .logo-container[data-v-93d21f94],.layout-mix.hideSidebar .logo-container[data-v-93d21f94]{width:54px}[data-v-f034eeee]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-f034eeee]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-f034eeee]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.has-logo .el-scrollbar[data-v-f034eeee]{height:calc(100vh - 50px)}[data-v-b37ce805]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-b37ce805]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-b37ce805]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.sidebar-container[data-v-b37ce805]{position:fixed;top:0;bottom:0;left:0;z-index:999;width:210px;background-color:var(--menu-background);transition:width .28s}.sidebar-container[data-v-b37ce805] .el-menu{border:none}.main-container[data-v-b37ce805]{position:relative;height:100%;margin-left:210px;overflow-y:auto;transition:margin-left .28s}.main-container .fixed-header[data-v-b37ce805]{position:sticky;top:0;z-index:9;transition:width .28s}.layout-top .sidebar-container[data-v-b37ce805]{position:sticky;z-index:999;display:flex;width:100%!important;height:50px}.layout-top .sidebar-container[data-v-b37ce805] .el-scrollbar{flex:1;height:50px}.layout-top .sidebar-container[data-v-b37ce805] .el-menu-item,.layout-top .sidebar-container[data-v-b37ce805] .el-sub-menu__title,.layout-top .sidebar-container[data-v-b37ce805] .el-menu--horizontal{height:50px;line-height:50px}.layout-top .sidebar-container[data-v-b37ce805] .el-menu--collapse{width:100%}.layout-top .main-container[data-v-b37ce805]{height:calc(100vh - 50px);margin-left:0}.layout-mix .sidebar-container[data-v-b37ce805]{width:100%!important;height:50px}.layout-mix .sidebar-container[data-v-b37ce805] .el-scrollbar{flex:1;height:50px}.layout-mix .sidebar-container[data-v-b37ce805] .el-menu-item,.layout-mix .sidebar-container[data-v-b37ce805] .el-sub-menu__title,.layout-mix .sidebar-container[data-v-b37ce805] .el-menu--horizontal{height:50px;line-height:50px}.layout-mix .sidebar-container[data-v-b37ce805] .el-menu--horizontal.el-menu{border:none}.layout-mix .mix-container[data-v-b37ce805]{display:flex;height:100%;padding-top:50px}.layout-mix .mix-container .mix-container__left[data-v-b37ce805]{position:relative;width:210px;height:100%}.layout-mix .mix-container .mix-container__left[data-v-b37ce805] .el-menu{height:100%;border:none}.layout-mix .mix-container .mix-container__left .sidebar-toggle[data-v-b37ce805]{position:absolute;bottom:0;display:flex;align-items:center;justify-content:center;width:100%;height:50px;line-height:50px;box-shadow:0 0 6px -2px var(--el-color-primary)}.layout-mix .mix-container .mix-container__left .sidebar-toggle div[data-v-b37ce805]:hover{background-color:var(--menu-background)}.layout-mix .mix-container .mix-container__left .sidebar-toggle[data-v-b37ce805] svg{color:var(--el-color-primary)!important}.layout-mix .mix-container .main-container[data-v-b37ce805]{flex:1;min-width:0;margin-left:0}.hideSidebar .main-container[data-v-b37ce805]{margin-left:54px}.hideSidebar.layout-top .main-container[data-v-b37ce805]{margin-left:0}.hideSidebar.layout-mix .sidebar-container[data-v-b37ce805]{width:100%!important}.hideSidebar.layout-mix .mix-container .mix-container__left[data-v-b37ce805]{width:54px}.layout-left.hideSidebar .sidebar-container[data-v-b37ce805]{width:54px!important}.layout-left.hideSidebar .main-container[data-v-b37ce805]{margin-left:54px}.layout-left.hideSidebar.mobile .sidebar-container[data-v-b37ce805]{pointer-events:none;transition-duration:.3s;transform:translate3d(-210px,0,0)}.layout-left.hideSidebar.mobile .main-container[data-v-b37ce805],.mobile .main-container[data-v-b37ce805]{margin-left:0}.mobile.layout-top[data-v-b37ce805]{--el-menu-item-height: $navbar-height} diff --git a/resources/views/dist/css/index.Bp03AT9Z.css b/resources/views/dist/css/index.Bp03AT9Z.css new file mode 100644 index 0000000..50c163f --- /dev/null +++ b/resources/views/dist/css/index.Bp03AT9Z.css @@ -0,0 +1 @@ +@charset "UTF-8";[data-v-1d873f0c]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-1d873f0c]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-1d873f0c]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.reference[data-v-1d873f0c] .el-input__wrapper,.reference[data-v-1d873f0c] .el-input__inner{cursor:pointer}.icon-container[data-v-1d873f0c]{display:flex;flex-wrap:wrap}.icon-container .icon-item[data-v-1d873f0c]{display:flex;align-items:center;justify-content:center;padding:8px;margin:4px;cursor:pointer;border:1px solid #dcdfe6;border-radius:4px;transition:all .3s}.icon-container .icon-item[data-v-1d873f0c]:hover{border-color:#409eff;scale:1.2} diff --git a/resources/views/dist/css/index.Bv77CJl9.css b/resources/views/dist/css/index.Bv77CJl9.css new file mode 100644 index 0000000..8891cbb --- /dev/null +++ b/resources/views/dist/css/index.Bv77CJl9.css @@ -0,0 +1 @@ +@charset "UTF-8";:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.login-container{display:flex;align-items:center;justify-content:center;width:100%;height:100%;overflow-y:auto;background:url(img/login-background-light.CKlK6emc.jpg) no-repeat center right}.login-container .top-bar{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:flex-end;width:100%;padding:10px}.login-container .login-card{width:400px;background:transparent;border:none;border-radius:4%}@media (width <= 640px){.login-container .login-card{width:340px}}.login-container .login-card .input-wrapper{display:flex;align-items:center;width:100%}.login-container .login-card .captcha-image{height:48px;cursor:pointer;border-top-right-radius:6px;border-bottom-right-radius:6px}.login-container .icp-info{position:absolute;bottom:4px;font-size:12px;text-align:center}.login-container .el-form-item{background:var(--el-input-bg-color);border:1px solid var(--el-border-color);border-radius:5px}.login-container .el-input .el-input__wrapper{padding:0;background-color:transparent;box-shadow:none}.login-container .el-input .el-input__wrapper.is-focus,.login-container .el-input .el-input__wrapper:hover{box-shadow:none!important}.login-container .el-input .el-input__wrapper input:-webkit-autofill{transition:background-color 1000s ease-in-out 0s}html.dark .login-container{background:url(img/login-background-dark.BfPFE40x.jpg) no-repeat center right}.login-container .login-content[data-v-340dfe3e]{display:flex;width:100%;min-width:400px;max-width:850px;overflow:hidden;border-radius:5px;box-shadow:var(--el-box-shadow-light)}.login-container .login-content .login-image[data-v-340dfe3e]{display:flex;flex:3;align-items:center;justify-content:center;background:linear-gradient(60deg,#f6fbfd,#f7fbfe)}.login-container .login-content .login-box[data-v-340dfe3e]{display:flex;flex:2;flex-direction:column;justify-content:center;min-width:400px;padding:30px}@media (width <= 768px){.login-container .login-content .login-box[data-v-340dfe3e]{width:100%}}@media (width <= 768px){.login-container .login-content[data-v-340dfe3e]{flex-direction:column;max-width:100%;height:100vh;border-radius:0;box-shadow:none}}.provider-img[data-v-340dfe3e]{width:30px;margin:5px} diff --git a/resources/views/dist/css/index.CC3X2lTN.css b/resources/views/dist/css/index.CC3X2lTN.css new file mode 100644 index 0000000..0a9255c --- /dev/null +++ b/resources/views/dist/css/index.CC3X2lTN.css @@ -0,0 +1 @@ +@charset "UTF-8";.github-corner:hover .octo-arm[data-v-c5522eca]{animation:octocat-wave-c5522eca .56s ease-in-out}@keyframes octocat-wave-c5522eca{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (width <= 500px){.github-corner .octo-arm[data-v-c5522eca]{animation:octocat-wave-c5522eca .56s ease-in-out}.github-corner:hover .octo-arm[data-v-c5522eca]{animation:none}}[data-v-929945d5]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-929945d5]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-929945d5]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.dashboard-container[data-v-929945d5]{position:relative;padding:24px}.dashboard-container .github-corner[data-v-929945d5]{position:absolute;top:0;right:0;z-index:1;border:0} diff --git a/resources/views/dist/css/index.VhSqXR7Y.css b/resources/views/dist/css/index.VhSqXR7Y.css new file mode 100644 index 0000000..d75acb0 --- /dev/null +++ b/resources/views/dist/css/index.VhSqXR7Y.css @@ -0,0 +1 @@ +@charset "UTF-8";[data-v-2b30e05d]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-2b30e05d]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-2b30e05d]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.el-form--inline .el-form-item[data-v-2b30e05d]{margin-top:18px} diff --git a/resources/views/dist/css/index.gIaAfrbD.css b/resources/views/dist/css/index.gIaAfrbD.css new file mode 100644 index 0000000..acc2562 --- /dev/null +++ b/resources/views/dist/css/index.gIaAfrbD.css @@ -0,0 +1 @@ +.svg-icon[data-v-73782c74]{display:inline-block;width:1em;height:1em;overflow:hidden;vertical-align:-.15em;outline:none;fill:currentcolor} diff --git a/resources/views/dist/css/internal-doc.Dysg9Ov1.css b/resources/views/dist/css/internal-doc.Dysg9Ov1.css new file mode 100644 index 0000000..7562453 --- /dev/null +++ b/resources/views/dist/css/internal-doc.Dysg9Ov1.css @@ -0,0 +1 @@ +@charset "UTF-8";[data-v-f59700b2]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-f59700b2]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-f59700b2]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.app-container[data-v-f59700b2]{height:calc(100vh - 50px)}.hasTagsView .app-container[data-v-f59700b2]{height:calc(100vh - 84px)}iframe[data-v-f59700b2]{width:100%;height:100%} diff --git a/resources/views/dist/css/knife4j.C9A4iUYs.css b/resources/views/dist/css/knife4j.C9A4iUYs.css new file mode 100644 index 0000000..817af76 --- /dev/null +++ b/resources/views/dist/css/knife4j.C9A4iUYs.css @@ -0,0 +1 @@ +@charset "UTF-8";[data-v-71fc7f56]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-71fc7f56]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-71fc7f56]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.app-container[data-v-71fc7f56]{height:calc(100vh - 50px)}.hasTagsView .app-container[data-v-71fc7f56]{height:calc(100vh - 84px)} diff --git a/resources/views/dist/css/market.BWh6NZB6.css b/resources/views/dist/css/market.BWh6NZB6.css new file mode 100644 index 0000000..2910059 --- /dev/null +++ b/resources/views/dist/css/market.BWh6NZB6.css @@ -0,0 +1 @@ +.el-timeline{--el-timeline-node-size-normal:12px;--el-timeline-node-size-large:14px;--el-timeline-node-color:var(--el-border-color-light);font-size:var(--el-font-size-base);list-style:none;margin:0}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline .el-timeline-item__center{align-items:center;display:flex}.el-timeline .el-timeline-item__center .el-timeline-item__wrapper{width:100%}.el-timeline .el-timeline-item__center .el-timeline-item__tail{top:0}.el-timeline .el-timeline-item__center:first-child .el-timeline-item__tail{height:calc(50% + 10px);top:calc(50% - 10px)}.el-timeline .el-timeline-item__center:last-child .el-timeline-item__tail{display:block;height:calc(50% - 10px)}.el-timeline-item{padding-bottom:20px;position:relative}.el-timeline-item__wrapper{padding-left:28px;position:relative;top:-3px}.el-timeline-item__tail{border-left:2px solid var(--el-timeline-node-color);height:100%;left:4px;position:absolute}.el-timeline-item .el-timeline-item__icon{color:var(--el-color-white);font-size:var(--el-font-size-small)}.el-timeline-item__node{align-items:center;background-color:var(--el-timeline-node-color);border-color:var(--el-timeline-node-color);border-radius:50%;box-sizing:border-box;display:flex;justify-content:center;position:absolute}.el-timeline-item__node--normal{height:var(--el-timeline-node-size-normal);left:-1px;width:var(--el-timeline-node-size-normal)}.el-timeline-item__node--large{height:var(--el-timeline-node-size-large);left:-2px;width:var(--el-timeline-node-size-large)}.el-timeline-item__node.is-hollow{background:var(--el-color-white);border-style:solid;border-width:2px}.el-timeline-item__node--primary{background-color:var(--el-color-primary);border-color:var(--el-color-primary)}.el-timeline-item__node--success{background-color:var(--el-color-success);border-color:var(--el-color-success)}.el-timeline-item__node--warning{background-color:var(--el-color-warning);border-color:var(--el-color-warning)}.el-timeline-item__node--danger{background-color:var(--el-color-danger);border-color:var(--el-color-danger)}.el-timeline-item__node--info{background-color:var(--el-color-info);border-color:var(--el-color-info)}.el-timeline-item__dot{align-items:center;display:flex;justify-content:center;position:absolute}.el-timeline-item__content{color:var(--el-text-color-primary)}.el-timeline-item__timestamp{color:var(--el-text-color-secondary);font-size:var(--el-font-size-small);line-height:1}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.md-editor .md-editor-preview{--md-theme-color: var(--md-color);--md-theme-color-reverse: #eee;--md-theme-color-hover: #eee;--md-theme-color-hover-inset: #ddd;--md-theme-link-color: #2d8cf0;--md-theme-link-hover-color: #73d13d;--md-theme-border-color: #e6e6e6;--md-theme-border-color-reverse: #bebebe;--md-theme-border-color-inset: #d6d6d6;--md-theme-bg-color: #fff;--md-theme-bg-color-inset: #ececec;--md-theme-bg-color-scrollbar-track: #e2e2e2;--md-theme-bg-color-scrollbar-thumb: rgba(0, 0, 0, .3019607843);--md-theme-bg-color-scrollbar-thumb-hover: rgba(0, 0, 0, .3490196078);--md-theme-bg-color-scrollbar-thumb-active: rgba(0, 0, 0, .3803921569);--md-theme-code-copy-tips-color: inherit;--md-theme-code-copy-tips-bg-color: #fff;--md-theme-code-active-color: #61aeee}.md-editor-dark .md-editor-preview{--md-theme-color: var(--md-color);--md-theme-color-reverse: #222;--md-theme-color-hover: #191919;--md-theme-color-hover-inset: #444;--md-theme-link-color: #2d8cf0;--md-theme-link-hover-color: #73d13d;--md-theme-border-color: #2d2d2d;--md-theme-border-color-reverse: #e6e6e6;--md-theme-border-color-inset: #5a5a5a;--md-theme-bg-color: #000;--md-theme-bg-color-inset: #111;--md-theme-bg-color-scrollbar-track: #0f0f0f;--md-theme-bg-color-scrollbar-thumb: #2d2d2d;--md-theme-bg-color-scrollbar-thumb-hover: #3a3a3a;--md-theme-bg-color-scrollbar-thumb-active: #3a3a3a;--md-theme-code-copy-tips-color: inherit;--md-theme-code-copy-tips-bg-color: #3a3a3a;--md-theme-code-active-color: #e6c07b}.md-editor .md-editor-admonition-note{--md-admonition-color: #448aff;--md-admonition-bg-color: #d5e2f9}.md-editor .md-editor-admonition-abstract{--md-admonition-color: #02b1ff;--md-admonition-bg-color: #d1eefb}.md-editor .md-editor-admonition-info{--md-admonition-color: #333;--md-admonition-bg-color: #e3e3e3}.md-editor .md-editor-admonition-tip{--md-admonition-color: #666;--md-admonition-bg-color: #e6e6e6}.md-editor .md-editor-admonition-success{--md-admonition-color: #00c852;--md-admonition-bg-color: #c1f1d5}.md-editor .md-editor-admonition-question{--md-admonition-color: #f0b400;--md-admonition-bg-color: #fff1dd}.md-editor .md-editor-admonition-warning{--md-admonition-color: #ff9104;--md-admonition-bg-color: #ffe9cc}.md-editor .md-editor-admonition-failure{--md-admonition-color: #c2185b;--md-admonition-bg-color: #ffd9d9}.md-editor .md-editor-admonition-danger{--md-admonition-color: #ff5252;--md-admonition-bg-color: #ffe4e4}.md-editor .md-editor-admonition-bug{--md-admonition-color: #f60357;--md-admonition-bg-color: #ffd3e2}.md-editor .md-editor-admonition-example{--md-admonition-color: #7c4dff;--md-admonition-bg-color: #e3d8ff}.md-editor .md-editor-admonition-quote{--md-admonition-color: #9e9e9e;--md-admonition-bg-color: #f0f0f0}.md-editor .md-editor-admonition-hint{--md-admonition-color: #009688;--md-admonition-bg-color: #cdf4f0}.md-editor .md-editor-admonition-caution{--md-admonition-color: #ffa726;--md-admonition-bg-color: #ffe7c4}.md-editor .md-editor-admonition-error{--md-admonition-color: #d32f2f;--md-admonition-bg-color: #ffd8d8}.md-editor .md-editor-admonition-attention{--md-admonition-color: #455a64;--md-admonition-bg-color: #cbefff}.md-editor-dark .md-editor-admonition-note{--md-admonition-color: #1262e7;--md-admonition-bg-color: #021d4c}.md-editor-dark .md-editor-admonition-abstract{--md-admonition-color: #058dc9;--md-admonition-bg-color: #002433}.md-editor-dark .md-editor-admonition-info{--md-admonition-color: #999;--md-admonition-bg-color: #212121}.md-editor-dark .md-editor-admonition-tip{--md-admonition-color: #888;--md-admonition-bg-color: #191818}.md-editor-dark .md-editor-admonition-success{--md-admonition-color: #00c551;--md-admonition-bg-color: #003014}.md-editor-dark .md-editor-admonition-question{--md-admonition-color: #cd9a00;--md-admonition-bg-color: #311d00}.md-editor-dark .md-editor-admonition-warning{--md-admonition-color: #ed8500;--md-admonition-bg-color: #3c2200}.md-editor-dark .md-editor-admonition-failure{--md-admonition-color: #d5125f;--md-admonition-bg-color: #3f0000}.md-editor-dark .md-editor-admonition-danger{--md-admonition-color: #d80505;--md-admonition-bg-color: #390000}.md-editor-dark .md-editor-admonition-bug{--md-admonition-color: #da0d54;--md-admonition-bg-color: #390013}.md-editor-dark .md-editor-admonition-example{--md-admonition-color: #7443ff;--md-admonition-bg-color: #140045}.md-editor-dark .md-editor-admonition-quote{--md-admonition-color: #9e9e9e;--md-admonition-bg-color: #2b2b2b}.md-editor-dark .md-editor-admonition-hint{--md-admonition-color: #00ae9e;--md-admonition-bg-color: #00423b}.md-editor-dark .md-editor-admonition-caution{--md-admonition-color: #db8609;--md-admonition-bg-color: #573300}.md-editor-dark .md-editor-admonition-error{--md-admonition-color: #df1a1a;--md-admonition-bg-color: #440000}.md-editor-dark .md-editor-admonition-attention{--md-admonition-color: #0f8bc7;--md-admonition-bg-color: #00354d}.md-editor-preview .md-editor-admonition{background-color:var(--md-admonition-bg-color);border:1px solid var(--md-admonition-color);border-radius:.5rem;color:var(--md-admonition-color);display:flow-root;font-size:14px;font-weight:400;margin:1rem 0;padding:1em 1em .5em;page-break-inside:avoid}.md-editor-preview .md-editor-admonition-title{border-top-left-radius:.5rem;border-top-right-radius:.5rem;margin:0;padding:0;position:relative;font-weight:700}.md-editor-preview .md-editor-admonition p{margin:.5em 0;padding:0}.md-editor-preview .md-editor-admonition p:first-of-type{margin-top:0}.md-editor-preview .md-editor-admonition+p:empty,.md-editor-preview .md-editor-admonition+p:empty+p:empty{display:none}.md-editor-preview .md-editor-mermaid{overflow:hidden;display:none;line-height:normal}.md-editor-preview [class=md-editor-mermaid][data-processed]{display:flex;justify-content:center;align-items:center;cursor:grab}.md-editor-preview [class=md-editor-mermaid][data-processed]:active{cursor:grabbing}.md-editor-preview [class=md-editor-mermaid][data-processed] svg{transform-origin:top left}.prefix-katex-block{text-align:center;margin:20px}.prefix-katex-inline,.prefix-katex-block{display:none}.prefix-katex-inline[data-processed]{display:initial}.prefix-katex-block[data-processed]{display:block}.md-editor .md-editor-preview{--md-theme-code-inline-color: #3594f7;--md-theme-code-inline-bg-color: rgba(59, 170, 250, .1);--md-theme-code-inline-radius: 2px;--md-theme-code-block-color: #a9b7c6;--md-theme-code-block-bg-color: #282c34;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: 5px}.md-editor-dark .md-editor-preview{--md-theme-code-inline-color: #3594f7;--md-theme-code-inline-bg-color: rgba(59, 170, 250, .1);--md-theme-code-inline-radius: 2px;--md-theme-code-block-color: #a9b7c6;--md-theme-code-block-bg-color: #1a1a1a;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: 5px}.md-editor-preview code{color:var(--md-theme-code-inline-color);background-color:var(--md-theme-code-inline-bg-color);border-radius:var(--md-theme-code-inline-radius);padding:0 4px;line-height:22px}.md-editor-preview .md-editor-code{color:var(--md-theme-code-block-color);font-size:12px;line-height:1;margin:20px 0;position:relative}.md-editor-preview .md-editor-code input[type=radio],.md-editor-preview .md-editor-code input[type=radio]+pre,.md-editor-preview .md-editor-code input[type=radio]+span.md-editor-code-lang{display:none}.md-editor-preview .md-editor-code input:checked+pre,.md-editor-preview .md-editor-code input:checked+span.md-editor-code-lang{display:block}.md-editor-preview .md-editor-code input:checked+label{border-bottom:1px solid;color:var(--md-theme-code-active-color)}.md-editor-preview .md-editor-code .md-editor-code-head{display:grid;grid-template:"1rf 1rf";justify-content:space-between;height:32px;width:100%;font-size:12px;background-color:var(--md-theme-code-before-bg-color);margin-bottom:0;border-top-left-radius:var(--md-theme-code-block-radius);border-top-right-radius:var(--md-theme-code-block-radius);-webkit-tap-highlight-color:rgba(0,0,0,0);list-style:none}.md-editor-preview .md-editor-code .md-editor-code-head::-webkit-details-marker{display:none}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag{margin-left:12px}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag span{display:inline-block;width:10px;height:10px;border-radius:50%;margin-top:11px}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag span:nth-of-type(1){background-color:#ec6a5e}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag span:nth-of-type(2){background-color:#f4bf4f}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag span:nth-of-type(3){background-color:#61c554}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag span+span{margin-left:4px}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag ul.md-editor-codetab-label{box-sizing:border-box;white-space:nowrap;-webkit-user-select:none;user-select:none;background-color:var(--md-theme-code-block-bg-color);margin-top:8px;padding:0}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag ul.md-editor-codetab-label li{line-height:1;list-style:none;display:inline-block;position:relative;vertical-align:super;margin:0}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag ul.md-editor-codetab-label li label{cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-block;font-size:14px}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag ul.md-editor-codetab-label li+li{margin-left:12px}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-action{display:flex;align-items:center}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-action>*{margin-right:10px}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-lang{line-height:32px}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button:not(data-is-icon){cursor:pointer;line-height:32px;position:initial}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button:not(data-is-icon) .md-editor-icon{width:15px;height:15px;display:inline-block;vertical-align:sub}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]{cursor:pointer;line-height:1;position:relative}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon] .md-editor-icon{width:15px;height:15px;display:inline-block;vertical-align:sub}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]:before{content:attr(data-tips);color:var(--md-theme-code-copy-tips-color);background-color:var(--md-theme-code-copy-tips-bg-color);position:absolute;font-size:12px;font-family:sans-serif;width:max-content;text-align:center;padding:4px;border-radius:2px;box-shadow:0 0 2px #0003;left:-10px;top:50%;transform:translate(-100%,-50%)}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]:after{content:"";color:var(--md-theme-code-copy-tips-bg-color);position:absolute;width:0;height:0;border:5px solid rgba(0,0,0,0);border-right-width:0;border-left-color:currentColor;left:-10px;top:50%;transform:translateY(-50%);filter:drop-shadow(4px 0 2px rgba(0,0,0,.2))}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]:before,.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]:after{visibility:hidden;transition:.3s}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]:hover:before,.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]:hover:after{visibility:visible}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-collapse-tips{margin-right:12px}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-collapse-tips .md-editor-icon,.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-collapse-tips .md-editor-iconfont{width:16px;height:16px;font-size:16px;display:inline-block;vertical-align:sub;transform:rotate(0);transition:transform .1s}.md-editor-preview .md-editor-code pre{position:relative;margin:0}.md-editor-preview .md-editor-code pre code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace;font-size:14px;color:var(--md-theme-code-block-color);background-color:var(--md-theme-code-before-bg-color);display:block;line-height:1.6;overflow:auto;padding:1em;position:relative;border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:var(--md-theme-code-block-radius);border-bottom-right-radius:var(--md-theme-code-block-radius)}.md-editor-preview .md-editor-code pre code .md-editor-code-block{display:inline-block;width:100%;overflow:auto;vertical-align:bottom;color:var(--md-theme-code-block-color)}.md-editor-preview details.md-editor-code .md-editor-code-head{cursor:pointer}.md-editor-preview details.md-editor-code:not(open) .md-editor-code-head{border-bottom-left-radius:var(--md-theme-code-block-radius);border-bottom-right-radius:var(--md-theme-code-block-radius)}.md-editor-preview details.md-editor-code[open] .md-editor-code-head{border-bottom-left-radius:0;border-bottom-right-radius:0}.md-editor-preview details.md-editor-code[open] .md-editor-code-head .md-editor-collapse-tips .md-editor-icon,.md-editor-preview details.md-editor-code[open] .md-editor-code-head .md-editor-collapse-tips .md-editor-iconfont{transform:rotate(-90deg)}.md-editor-scrn span[rn-wrapper]{position:absolute;pointer-events:none;top:1em;font-size:100%;left:0;width:3em;letter-spacing:-1px;-webkit-user-select:none;user-select:none;counter-reset:linenumber}.md-editor-scrn span[rn-wrapper]>span{display:block;pointer-events:none;counter-increment:linenumber}.md-editor-scrn span[rn-wrapper]>span:before{color:#999;display:block;padding-right:.5em;text-align:right;content:counter(linenumber)}.md-editor-scrn pre code{padding-left:3.5em!important}.md-editor-preview figure{margin:0 0 1em;display:inline-flex;flex-direction:column;text-align:center}.md-editor-preview figure figcaption{color:var(--md-theme-color);font-size:.875em;margin-top:5px}.md-editor .md-editor-preview,.md-editor-dark .md-editor-preview{--md-theme-heading-color: var(--md-theme-color);--md-theme-heading-border: none;--md-theme-heading-1-color: var(--md-theme-heading-color);--md-theme-heading-1-border: var(--md-theme-heading-border);--md-theme-heading-2-color: var(--md-theme-heading-color);--md-theme-heading-2-border: var(--md-theme-heading-border);--md-theme-heading-3-color: var(--md-theme-heading-color);--md-theme-heading-3-border: var(--md-theme-heading-border);--md-theme-heading-4-color: var(--md-theme-heading-color);--md-theme-heading-4-border: var(--md-theme-heading-border);--md-theme-heading-5-color: var(--md-theme-heading-color);--md-theme-heading-5-border: var(--md-theme-heading-border);--md-theme-heading-6-color: var(--md-theme-heading-color);--md-theme-heading-6-border: var(--md-theme-heading-border)}.md-editor-preview h1,.md-editor-preview h2,.md-editor-preview h3,.md-editor-preview h4,.md-editor-preview h5,.md-editor-preview h6{position:relative;word-break:break-all;margin:1.4em 0 .8em;font-weight:700}.md-editor-preview h1 a,.md-editor-preview h2 a,.md-editor-preview h3 a,.md-editor-preview h4 a,.md-editor-preview h5 a,.md-editor-preview h6 a,.md-editor-preview h1 a:hover,.md-editor-preview h2 a:hover,.md-editor-preview h3 a:hover,.md-editor-preview h4 a:hover,.md-editor-preview h5 a:hover,.md-editor-preview h6 a:hover{color:inherit}.md-editor-preview h1{color:var(--md-theme-heading-1-color);border-bottom:var(--md-theme-heading-1-border)}.md-editor-preview h2{color:var(--md-theme-heading-2-color);border-bottom:var(--md-theme-heading-2-border)}.md-editor-preview h3{color:var(--md-theme-heading-3-color);border-bottom:var(--md-theme-heading-3-border)}.md-editor-preview h4{color:var(--md-theme-heading-4-color);border-bottom:var(--md-theme-heading-4-border)}.md-editor-preview h5{color:var(--md-theme-heading-5-color);border-bottom:var(--md-theme-heading-5-border)}.md-editor-preview h6{color:var(--md-theme-heading-6-color);border-bottom:var(--md-theme-heading-6-border)}.md-editor-preview h1{font-size:2em}.md-editor-preview h2{font-size:1.5em}.md-editor-preview h3{font-size:1.25em}.md-editor-preview h4{font-size:1em}.md-editor-preview h5{font-size:.875em}.md-editor-preview h6{font-size:.85em}.md-editor-preview hr{height:1px;margin:10px 0;border:none;border-top:1px solid var(--md-theme-border-color)}.md-editor-preview a{color:var(--md-theme-link-color);text-decoration:none;transition:color .3s}.md-editor-preview a:hover{color:var(--md-theme-link-hover-color)}.md-editor-preview a:empty:before{content:attr(href)}.md-editor-preview ol,.md-editor-preview ul{padding-left:2.35em}.md-editor-preview ol .task-list-item,.md-editor-preview ul .task-list-item{list-style-type:none}.md-editor-preview ol .task-list-item input,.md-editor-preview ul .task-list-item input{margin-left:-1.5em;margin-right:.1em}.md-editor-preview img{max-width:100%}.md-editor-preview p:empty{display:none}.md-editor .md-editor-preview{--md-theme-quote-color: var(--md-theme-color);--md-theme-quote-border: none;--md-theme-quote-bg-color: inherit}.md-editor-preview blockquote{padding:0 1em;color:var(--md-theme-quote-color);border-left:var(--md-theme-quote-border);background-color:var(--md-theme-quote-bg-color)}.md-editor .md-editor-preview{--md-theme-table-stripe-color: #fafafa;--md-theme-table-tr-bg-color: inherit;--md-theme-table-td-border-color: var(--md-theme-border-color)}.md-editor-dark .md-editor-preview{--md-theme-table-stripe-color: #0c0c0c;--md-theme-table-tr-bg-color: inherit;--md-theme-table-td-border-color: var(--md-theme-border-color)}.md-editor-preview table tr{background-color:var(--md-theme-table-tr-bg-color)}.md-editor-preview table tr th,.md-editor-preview table tr td{border:1px solid var(--md-theme-table-td-border-color)}.md-editor-preview table tr:nth-child(2n){background-color:var(--md-theme-table-stripe-color)}.md-editor-preview{color:var(--md-theme-color)}.md-editor-preview ::-webkit-scrollbar{width:6px;height:6px}.md-editor-preview ::-webkit-scrollbar-corner,.md-editor-preview ::-webkit-scrollbar-track{background-color:var(--md-theme-bg-color-scrollbar-track);border-radius:2px}.md-editor-preview ::-webkit-scrollbar-thumb{border-radius:2px;background-color:var(--md-theme-bg-color-scrollbar-thumb)}.md-editor-preview ::-webkit-scrollbar-button:vertical{display:none}.md-editor-preview ::-webkit-scrollbar-thumb:vertical:hover{background-color:var(--md-theme-bg-color-scrollbar-thumb-hover)}.md-editor-preview ::-webkit-scrollbar-thumb:vertical:active{background-color:var(--md-theme-bg-color-scrollbar-thumb-active)}.md-editor div.default-theme{--md-theme-code-copy-tips-color: #141414}.md-editor-dark div.default-theme{--md-theme-code-copy-tips-color: inherit}div.default-theme .md-editor-code pre code{box-shadow:#0005 0 2px 2px}div.default-theme img{margin:0 auto;box-sizing:border-box;padding:5px;border:1px solid var(--md-theme-border-color);border-radius:3px}div.default-theme blockquote img{border-color:var(--md-theme-border-color-inset)}div.default-theme ol,div.default-theme ul{margin:.6em 0}div.default-theme ol li,div.default-theme ul li{line-height:1.6;margin:.5em 0}div.default-theme p{line-height:1.6;margin:.5rem 0}.md-editor div.default-theme{--md-theme-quote-border: 5px solid #35b378;--md-theme-quote-bg-color: var(--md-theme-bg-color-inset)}div.default-theme blockquote{margin:20px 0;padding:0 1.2em;line-height:2em;display:block;overflow:auto}.md-editor default-theme{--md-theme-table-stripe-color: #fafafa}.md-editor-dark default-theme{--md-theme-table-stripe-color: #0c0c0c}div.default-theme table{overflow:auto;border-spacing:0;border-collapse:collapse;margin-bottom:1em;margin-top:1em}div.default-theme table tr th,div.default-theme table tr td{word-wrap:break-word;padding:8px 14px}div.default-theme table tbody tr:hover{background-color:var(--md-theme-color-hover)}div.default-theme blockquote table{line-height:initial}div.default-theme blockquote table tr th,div.default-theme blockquote table tr td{border-color:var(--md-theme-border-color-inset)}div.default-theme blockquote table tbody tr:nth-child(n){background-color:inherit}div.default-theme blockquote table tbody tr:hover{background-color:var(--md-theme-color-hover-inset)}.md-editor div.vuepress-theme{--md-theme-code-inline-color: #d63200;--md-theme-code-inline-bg-color: #f8f8f8;--md-theme-code-block-color: #747384;--md-theme-code-block-bg-color: #f8f8f8;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: 2px}.md-editor-dark div.vuepress-theme{--md-theme-code-inline-color: #e06c75;--md-theme-code-inline-bg-color: #1a1a1a;--md-theme-code-block-color: #999;--md-theme-code-block-bg-color: #1a1a1a;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: 2px}div.vuepress-theme code{padding:3px 5px;margin:0 2px}div.vuepress-theme .md-editor-code pre{font-size:.875em;margin:0 0 1em}div.vuepress-theme .md-editor-code pre code{white-space:pre;padding:22px 1em;margin:0}div.vuepress-theme .md-editor-code pre code span[rn-wrapper]{top:22px}.md-editor div.vuepress-theme{--md-theme-heading-color: #273849;--md-theme-heading-2-border: 1px solid var(--md-theme-border-color)}.md-editor-dark div.vuepress-theme{--md-theme-heading-color: #999;--md-theme-heading-2-border: 1px solid var(--md-theme-border-color)}div.vuepress-theme h1,div.vuepress-theme h2,div.vuepress-theme h3,div.vuepress-theme h4,div.vuepress-theme h5,div.vuepress-theme h6{font-weight:600;line-height:1.45;position:relative;margin-top:1em}div.vuepress-theme h1{font-size:2.2em;margin:1em 0}div.vuepress-theme h2{font-size:1.65em;padding-bottom:.3em}div.vuepress-theme h3{line-height:1.35em}.md-editor div.vuepress-theme{--md-theme-link-color: #42b983}div.vuepress-theme a{font-weight:600}.vuepress-theme ul,.vuepress-theme ol{position:relative;line-height:1.4em;margin:1.2em 0;z-index:1}.vuepress-theme ul li,.vuepress-theme ol li{margin:1.2em 0}.vuepress-theme p{word-spacing:.05em;line-height:1.6em;margin:1.2em 0;position:relative}.md-editor div.vuepress-theme{--md-theme-quote-border: 4px solid #42b983}div.vuepress-theme blockquote{margin:2em 0;padding-left:20px}div.vuepress-theme blockquote p{margin-left:0;margin-top:1.2em;margin-bottom:0;padding:0}.md-editor div.vuepress-theme{--md-theme-table-td-border-color: #dfe2e5;--md-theme-table-stripe-color: #f6f8fa}.md-editor-dark div.vuepress-theme{--md-theme-table-td-border-color: #2d2d2d;--md-theme-table-stripe-color: #0c0c0c}div.vuepress-theme table{border-collapse:collapse;margin:1rem 0;display:block;overflow-x:auto}div.vuepress-theme table tr th,div.vuepress-theme table tr td{padding:.6em 1em}.md-editor .vuepress-theme{--md-theme-color: #304455}.md-editor-dark .vuepress-theme{--md-theme-color: #999}div.vuepress-theme{font-size:16px;color:var(--md-theme-color)}div.vuepress-theme em{color:#4f5959;padding:0 6px 0 4px}.md-editor div.github-theme{--md-theme-code-inline-color: inherit;--md-theme-code-inline-bg-color: #eff1f2;--md-theme-code-inline-radius: 6px;--md-theme-code-block-color: inherit;--md-theme-code-block-bg-color: #f6f8fa;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: 6px}.md-editor-dark div.github-theme{--md-theme-code-inline-color: #c9d1d9;--md-theme-code-inline-bg-color: #2d3339;--md-theme-code-inline-radius: 6px;--md-theme-code-block-color: #a9b7c6;--md-theme-code-block-bg-color: #161b22;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: 6px}div.github-theme code{padding:.2em .4em;margin:0}div.github-theme pre code{padding:22px 1em;margin-bottom:0;word-break:normal;letter-spacing:1px}.md-editor div.github-theme{--md-theme-heading-color: inherit;--md-theme-heading-6-color: #2d3339;--md-theme-heading-1-border: 1px solid #d9dee4;--md-theme-heading-2-border: 1px solid #d9dee4}.md-editor-dark div.github-theme{--md-theme-heading-color: #c9d1d9;--md-theme-heading-6-color: #768390;--md-theme-heading-1-border: 1px solid #373e47;--md-theme-heading-2-border: 1px solid #373e47}div.github-theme h1,div.github-theme h2,div.github-theme h3,div.github-theme h4,div.github-theme h5,div.github-theme h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}div.github-theme h1{padding-bottom:.3em;font-size:2em}div.github-theme h2{padding-bottom:.3em;font-size:1.5em}div.github-theme h3{font-size:1.25em}div.github-theme h4{font-size:1em}div.github-theme h5{font-size:.875em}div.github-theme h6{font-size:.85em}.md-editor div.github-theme{--md-theme-heading-bg-color: #fff}.md-editor-dark div.github-theme{--md-theme-heading-bg-color: #22272e}div.github-theme img{background-color:var(--md-theme-heading-bg-color)}.md-editor div.github-theme{--md-theme-link-color: #539bf5;--md-theme-link-hover-color: #539bf5}div.github-theme a:hover{text-decoration:underline}.github-theme ol li+li,.github-theme ul li+li{margin-top:.25em}.md-editor div.github-theme{--md-theme-quote-color: #57606a;--md-theme-quote-border: .25em solid #d0d7de}.md-editor-dark div.github-theme{--md-theme-quote-color: #8b949e;--md-theme-quote-border: .25em solid #444c56}div.github-theme blockquote{padding:0 1em}.md-editor div.github-theme{--md-theme-table-stripe-color: #f7f8fa;--md-theme-table-tr-bg-color: #fff;--md-theme-table-td-border-color: #d0d7de}.md-editor-dark div.github-theme{--md-theme-table-stripe-color: #161b22;--md-theme-table-tr-bg-color: transparent;--md-theme-table-td-border-color: #30363d}div.github-theme table{display:block;max-width:100%;overflow:auto;border-spacing:0;border-collapse:collapse}div.github-theme table tr th,div.github-theme table tr td{padding:6px 13px}.md-editor div.github-theme{--md-theme-color: #222}.md-editor-dark div.github-theme{--md-theme-color: #c9d1d9}div.github-theme{line-height:1.5;color:var(--md-theme-color)}div.github-theme p,div.github-theme blockquote,div.github-theme ul,div.github-theme ol,div.github-theme dl,div.github-theme table,div.github-theme pre,div.github-theme details{margin-top:0;margin-bottom:16px}.md-editor div.cyanosis-theme,.md-editor-dark div.cyanosis-theme{--md-theme-code-inline-color: var(--md-theme-code-color);--md-theme-code-inline-bg-color: var(--md-theme-code-bg-color);--md-theme-code-block-color: var(--md-theme-base-color);--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color)}div.cyanosis-theme code{padding:.065em .4em;font-family:Menlo,Monaco,Consolas,Courier New,monospace;overflow-x:auto}div.cyanosis-theme code::selection{background-color:var(--md-theme-slct-codebg-color)}div.cyanosis-theme .md-editor-code pre{font-family:Menlo,Monaco,Consolas,Courier New,monospace}div.cyanosis-theme .md-editor-code pre code{padding:11px 12px 22px;margin:0;word-break:normal;line-height:1.75}div.cyanosis-theme .md-editor-code pre code::selection{background-color:var(--md-theme-slct-prebg-color)}div.cyanosis-theme .md-editor-code pre code::-webkit-scrollbar{width:4px;height:4px}div.cyanosis-theme .md-editor-code pre code::-webkit-scrollbar-track{background-color:var(--md-theme-border-color)}div.cyanosis-theme .md-editor-code pre code::-webkit-scrollbar-thumb{background-color:var(--md-theme-strong-color);border-radius:10px}div.cyanosis-theme .md-editor-code pre code span[rn-wrapper]{top:11px}.md-editor div.cyanosis-theme{--md-theme-heading-color: var(--md-theme-title-color)}div.cyanosis-theme h1{padding-bottom:4px;margin-top:36px;margin-bottom:10px;font-size:30px;line-height:1.5;transition:color .35s}div.cyanosis-theme h2{position:relative;padding-left:10px;padding-right:10px;padding-bottom:10px;margin-top:36px;margin-bottom:10px;font-size:24px;line-height:1.5;border-bottom:1px solid var(--md-theme-border-color-2);transition:color .35s}div.cyanosis-theme h2:before{content:"「";position:absolute;top:-6px;left:-14px}div.cyanosis-theme h2:after{content:"」";position:relative;top:6px;right:auto}div.cyanosis-theme h3{position:relative;padding-bottom:0;margin-top:30px;margin-bottom:10px;font-size:20px;line-height:1.5;padding-left:6px;transition:color .35s}div.cyanosis-theme h3:before{content:"»";padding-right:6px;color:var(--md-theme-strong-color)}div.cyanosis-theme h4{padding-bottom:0;margin-top:24px;margin-bottom:10px;font-size:16px;line-height:1.5;padding-left:6px;transition:color .35s}div.cyanosis-theme h5{padding-bottom:0;margin-top:18px;margin-bottom:10px;font-size:14px;line-height:1.5;padding-left:6px;transition:color .35s}div.cyanosis-theme h6{padding-bottom:0;margin-top:12px;margin-bottom:10px;font-size:12px;line-height:1.5;padding-left:6px;transition:color .35s}div.cyanosis-theme h1::selection,div.cyanosis-theme h2::selection,div.cyanosis-theme h3::selection,div.cyanosis-theme h4::selection,div.cyanosis-theme h5::selection,div.cyanosis-theme h6::selection{color:var(--md-theme-slct-title-color);background-color:var(--md-theme-slct-titlebg-color)}@media (max-width: 720px){div.cyanosis-theme h1{font-size:24px}div.cyanosis-theme h2{font-size:20px}div.cyanosis-theme h3{font-size:18px}}.md-editor div.cyanosis-theme{--md-theme-link-color: var(--md-theme-link-color);--md-theme-link-hover-color: var(--md-theme-linkh-color)}div.cyanosis-theme a{position:relative;display:inline-block;text-decoration:none;border-bottom:1px solid var(--md-theme-border-color)}div.cyanosis-theme a:hover{border-bottom-color:var(--md-theme-linkh-color)}div.cyanosis-theme a:active{color:var(--md-theme-linkh-color)}div.cyanosis-theme a:after{position:absolute;content:"";top:100%;left:0;width:100%;opacity:0;border-bottom:1px solid var(--md-theme-border-color);transition:top .3s,opacity .3s;transform:translateZ(0)}div.cyanosis-theme a:hover:after{top:0;opacity:1;border-bottom-color:var(--md-theme-linkh-color)}.cyanosis-theme ol,.cyanosis-theme ul{margin:0}.cyanosis-theme ol li,.cyanosis-theme ul li{margin-bottom:0;list-style:inherit}.cyanosis-theme ol li .task-list-item,.cyanosis-theme ul li .task-list-item{list-style:none}.cyanosis-theme ol li .task-list-item ul,.cyanosis-theme ol li .task-list-item ol,.cyanosis-theme ul li .task-list-item ul,.cyanosis-theme ul li .task-list-item ol{margin-top:0}.cyanosis-theme ol ul,.cyanosis-theme ol ol,.cyanosis-theme ul ul,.cyanosis-theme ul ol{margin-top:4px}.cyanosis-theme ol li{padding-left:6px}.cyanosis-theme ol li::selection,.cyanosis-theme ul li::selection{color:var(--md-theme-slct-text-color);background-color:var(--md-theme-slct-bg-color)}.cyanosis-theme .task-list-item-checkbox{position:relative}.cyanosis-theme .contains-task-list input[type=checkbox]:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;width:inherit;height:inherit;background:#f0f8ff;border:1px solid #add6ff;border-radius:2px;box-sizing:border-box;z-index:1}.cyanosis-theme .contains-task-list input[type=checkbox][checked]:after{content:"✓";position:absolute;top:-12px;left:0;right:0;bottom:0;width:0;height:0;color:#f55;font-size:20px;font-weight:700;z-index:2}.cyanosis-theme p{line-height:inherit;margin-top:16px;margin-bottom:16px}.cyanosis-theme p::selection{color:var(--md-theme-slct-text-color);background-color:var(--md-theme-slct-bg-color)}.md-editor div.cyanosis-theme{--md-theme-quote-color: var(--md-theme-blockquote-color);--md-theme-quote-border: 4px solid var(--md-theme-strong-color);--md-theme-quote-bg-color: var(--md-theme-blockquote-bg-color)}div.cyanosis-theme blockquote{padding:1px 20px;margin:22px 0;transition:color .35s}div.cyanosis-theme blockquote:after{display:block;content:""}div.cyanosis-theme blockquote>p{margin:10px 0}div.cyanosis-theme blockquote>b,div.cyanosis-theme blockquote>strong{color:var(--md-theme-strong-color)}.cyanosis-theme table{display:inline-block!important;width:auto;max-width:100%;overflow:auto;border:1px solid var(--md-theme-table-border-color);border-spacing:0;border-collapse:collapse}.cyanosis-theme table thead{color:#000;text-align:left;background:#f6f6f6}.cyanosis-theme table tr:nth-child(2n){background-color:var(--md-theme-table-tr-nc-color)}.cyanosis-theme table tr:hover{background-color:var(--md-theme-table-trh-color)}.cyanosis-theme table th,.cyanosis-theme table td{padding:12px 8px;line-height:24px;border:1px solid var(--md-theme-table-border-color)}.cyanosis-theme table th{color:var(--md-theme-table-tht-color);background-color:var(--md-theme-table-th-color)}.cyanosis-theme table td{min-width:120px}.cyanosis-theme table thead th::selection{background-color:#0000}.cyanosis-theme table tbody td::selection{background-color:var(--md-theme-slct-bg-color)}.md-editor div.cyanosis-theme{--md-theme-base-color:#353535;--md-theme-title-color:#005bb7;--md-theme-strong-color:#2196f3;--md-theme-em-color:#4fc3f7;--md-theme-del-color:#ccc;--md-theme-link-color:#3da8f5;--md-theme-linkh-color:#007fff;--md-theme-border-color:#bedcff;--md-theme-border-color-2:#ececec;--md-theme-bg-color:#fff;--md-theme-blockquote-color:#8c8c8c;--md-theme-blockquote-bg-color:#f0fdff;--md-theme-code-color:#c2185b;--md-theme-code-bg-color:#fff4f4;--md-theme-code-block-bg-color:#f8f8f8;--md-theme-table-border-color:#c3e0fd;--md-theme-table-th-color:#dff0ff;--md-theme-table-tht-color:#005bb7;--md-theme-table-tr-nc-color:#f7fbff;--md-theme-table-trh-color:#e0edf7;--md-theme-slct-title-color:#005bb7;--md-theme-slct-titlebg-color:rgba(175,207,247,.25);--md-theme-slct-text-color:#c80000;--md-theme-slct-bg-color:rgba(175,207,247,.25);--md-theme-slct-del-color:#999;--md-theme-slct-elbg-color:#e8ebec;--md-theme-slct-codebg-color:#ffeaeb;--md-theme-slct-prebg-color:rgba(160,200,255,.25)}.md-editor-dark div.cyanosis-theme{--md-theme-base-color:#cacaca;--md-theme-title-color:#ddd;--md-theme-strong-color:#fe9900;--md-theme-em-color:#ffd28e;--md-theme-del-color:#ccc;--md-theme-link-color:#ffb648;--md-theme-linkh-color:#fe9900;--md-theme-border-color:#ffe3ba;--md-theme-border-color-2:#ffcb7b;--md-theme-bg-color:#2f2f2f;--md-theme-blockquote-color:#c7c7c7;--md-theme-blockquote-bg-color:rgba(255,199,116,.1);--md-theme-code-color:#000;--md-theme-code-bg-color:#ffcb7b;--md-theme-code-block-bg-color:rgba(30,25,18,.5);--md-theme-table-border-color:#fe9900;--md-theme-table-th-color:#ffb648;--md-theme-table-tht-color:#000;--md-theme-table-tr-nc-color:#6d5736;--md-theme-table-trh-color:#947443;--md-theme-slct-title-color:#000;--md-theme-slct-titlebg-color:#fe9900;--md-theme-slct-text-color:#00c888;--md-theme-slct-bg-color:rgba(175,207,247,.25);--md-theme-slct-del-color:#999;--md-theme-slct-elbg-color:#000;--md-theme-slct-codebg-color:#ffcb7b;--md-theme-slct-prebg-color:rgba(160,200,255,.25)}div.cyanosis-theme{word-break:break-word;line-height:1.75;font-weight:400;overflow-x:hidden;color:var(--md-theme-base-color);transition:color .35s}div.cyanosis-theme hr{position:relative;width:98%;height:1px;margin-top:32px;margin-bottom:32px;background-image:linear-gradient(90deg,var(--md-theme-link-color),rgba(255,0,0,.3),rgba(37,163,65,.3),rgba(255,0,0,.3),var(--md-theme-link-color));border-width:0;overflow:visible}div.cyanosis-theme b,div.cyanosis-theme strong{color:var(--md-theme-strong-color)}div.cyanosis-theme i,div.cyanosis-theme em{color:var(--md-theme-em-color)}div.cyanosis-theme del{color:var(--md-theme-del-color)}div.cyanosis-theme details>summary{outline:none;color:var(--md-theme-title-color);font-size:20px;font-weight:bolder;border-bottom:1px solid var(--md-theme-border-color);cursor:pointer}div.cyanosis-theme details>p{padding:10px 20px;margin:10px 0 0;color:#666;background-color:var(--md-theme-blockquote-bg-color);border:2px dashed var(--md-theme-strong-color)}div.cyanosis-theme a::selection,div.cyanosis-theme b::selection,div.cyanosis-theme strong::selection,div.cyanosis-theme i::selection,div.cyanosis-theme em::selection{background-color:var(--md-theme-slct-elbg-color)}div.cyanosis-theme del::selection{color:var(--md-theme-slct-del-color);background-color:var(--md-theme-slct-elbg-color)}.md-editor div.mk-cute-theme,.md-editor-dark div.mk-cute-theme{--md-theme-code-inline-color: #4ec9b0;--md-theme-code-inline-bg-color: #282c34;--md-theme-code-block-color: #4ec9b0;--md-theme-code-block-bg-color: #282c34;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: 10px}div.mk-cute-theme code{font-family:Menlo,Monaco,Consolas,Courier New,monospace;overflow-x:auto;padding:.14em .46em;margin:0 4px}div.mk-cute-theme .md-editor-code pre code{font-family:Menlo,Monaco,Consolas,Courier New,monospace;padding:22px;margin:0;word-break:normal;line-height:1.75}div.mk-cute-theme .md-editor-code pre code span[rn-wrapper]{top:22px}.md-editor div.mk-cute-theme{--md-theme-heading-color: $theme-color}div.mk-cute-theme h1:before,div.mk-cute-theme h2:before,div.mk-cute-theme h3:before,div.mk-cute-theme h4:before,div.mk-cute-theme h5:before,div.mk-cute-theme h6:before{content:"";display:block;position:absolute;left:0;top:0;bottom:0;margin:auto;background-image:url(data:image/png;base64,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);animation:spin 2s linear 0s infinite}div.mk-cute-theme h1{position:relative;font-size:30px;padding:12px 38px;margin:30px 0}div.mk-cute-theme h1:before{width:30px;height:30px;background-size:30px 30px}div.mk-cute-theme h2{position:relative;font-size:24px;padding:12px 36px;margin:28px 0}div.mk-cute-theme h2:before{width:28px;height:28px;background-size:28px 28px}div.mk-cute-theme h3{position:relative;font-size:18px;padding:4px 32px;margin:26px 0}div.mk-cute-theme h3:before{width:24px;height:24px;background-size:24px 24px}div.mk-cute-theme h4{position:relative;padding:4px 28px;font-size:16px;margin:22px 0}div.mk-cute-theme h4:before{width:20px;height:20px;background-size:20px 20px}div.mk-cute-theme h5{position:relative;padding:4px 26px;font-size:15px;margin:20px 0}div.mk-cute-theme h5:before{width:18px;height:18px;background-size:18px 18px}div.mk-cute-theme h6{position:relative;padding:4px 22px;font-size:14px;margin:16px 0}div.mk-cute-theme h6:before{width:16px;height:16px;background-size:16px 16px}@media (max-width: 720px){div.mk-cute-theme h1{font-size:24px}div.mk-cute-theme h2{font-size:20px}div.mk-cute-theme h3{font-size:18px}}.md-editor div.mk-cute-theme{--md-theme-link-color: $link-color;--md-theme-link-hover-color: $link-active-color}div.mk-cute-theme a{display:inline-block;border-bottom:1px solid #409eff}div.mk-cute-theme a:hover,div.mk-cute-theme a:active{border-bottom:1px solid #007bff}.mk-cute-theme ol li,.mk-cute-theme ul li{margin-bottom:0;list-style:inherit}.mk-cute-theme ol li .task-list-item,.mk-cute-theme ul li .task-list-item{list-style:none}.mk-cute-theme ol li .task-list-item ul,.mk-cute-theme ol li .task-list-item ol,.mk-cute-theme ul li .task-list-item ul,.mk-cute-theme ul li .task-list-item ol{margin-top:0}.mk-cute-theme ol ul,.mk-cute-theme ol ol,.mk-cute-theme ul ul,.mk-cute-theme ul ol{margin-top:3px}.mk-cute-theme ol li{padding-left:6px}.mk-cute-theme p{line-height:inherit;margin-top:22px;margin-bottom:22px}.md-editor div.mk-cute-theme{--md-theme-quote-color: #fff;--md-theme-quote-border: 4px solid #409eff;--md-theme-quote-bg-color: rgba(54, 172, 225, .75)}.md-editor-dark div.mk-cute-theme{--md-theme-quote-color: inherit;--md-theme-quote-border: 4px solid #265d97;--md-theme-quote-bg-color: rgba(18, 80, 108, .75)}div.mk-cute-theme blockquote{position:relative;padding:8px 26px;margin:16px 0;border-radius:5px}div.mk-cute-theme blockquote:before{content:"❝";top:10px;left:8px;color:#409eff;font-size:20px;line-height:1;font-weight:700;position:absolute;opacity:.7}div.mk-cute-theme blockquote:after{content:"❞";font-size:20px;position:absolute;right:8px;bottom:0;color:#409eff;opacity:.7}div.mk-cute-theme blockquote>p,div.mk-cute-theme blockquote ul li,div.mk-cute-theme blockquote ol li{color:var(--md-theme-quote-color)}.md-editor div.mk-cute-theme{--md-theme-table-color: #000;--md-theme-table-border-color: #f6f6f6;--md-theme-table-thead-bg-color: #f6f6f6;--md-theme-table-stripe-color: #fcfcfc}.md-editor-dark div.mk-cute-theme{--md-theme-table-color: inherit;--md-theme-table-border-color: #1c1c1c;--md-theme-table-thead-bg-color: rgba(28, 28, 28, .631372549);--md-theme-table-stripe-color: rgba(28, 28, 28, .631372549)}div.mk-cute-theme table{display:inline-block;width:auto;max-width:100%;overflow:auto;border:solid 1px var(--md-theme-table-border-color)}div.mk-cute-theme table thead{background-color:var(--md-theme-table-thead-bg-color);color:var(--md-theme-table-color);text-align:left}div.mk-cute-theme table tr th,div.mk-cute-theme table tr td{padding:12px 7px;line-height:24px;border:none}div.mk-cute-theme table tr td{min-width:120px}div.mk-cute-theme blockquote table tbody{color:var(--md-theme-color)}div.mk-cute-theme blockquote table tr{background-color:var(--md-theme-table-stripe-color)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.md-editor div.mk-cute-theme{--md-theme-color: #36ace1;background-image:linear-gradient(90deg,#323a4240 3%,#0000 3%),linear-gradient(360deg,#323a4240 3%,#0000 3%)}.md-editor-dark div.mk-cute-theme{background-image:linear-gradient(90deg,#d9eafb40 3%,#0000 3%),linear-gradient(360deg,#d9eafb40 3%,#0000 3%);--md-theme-bg-color-scrollbar-thumb: #4d4d4d}div.mk-cute-theme{word-break:break-word;line-height:1.75;font-weight:400;overflow-x:hidden;background-size:20px 20px;background-position:center center}div.mk-cute-theme hr{position:relative;width:98%;height:1px;border:none;margin-top:32px;margin-bottom:32px;background-image:linear-gradient(to right,#36ace1,#dff0fe,#36ace1);overflow:visible}div.mk-cute-theme del{color:#36ace1}.md-editor div.smart-blue-theme{--md-theme-code-inline-color: #d63200;--md-theme-code-inline-bg-color: #fff5f5;--md-theme-code-block-color: #333;--md-theme-code-block-bg-color: #f8f8f8;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color)}.md-editor-dark div.smart-blue-theme{--md-theme-code-inline-color: #e06c75;--md-theme-code-inline-bg-color: #1a1a1a;--md-theme-code-block-color: #999;--md-theme-code-block-bg-color: #1a1a1a;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color)}div.smart-blue-theme code{overflow-x:auto;padding:.065em .4em}div.smart-blue-theme .md-editor-code pre{font-family:Menlo,Monaco,Consolas,Courier New,monospace}div.smart-blue-theme .md-editor-code pre code{padding:22px 12px;margin:0;word-break:normal}div.smart-blue-theme .md-editor-code pre code span[rn-wrapper]{top:22px}.md-editor div.smart-blue-theme{--md-theme-heading-color: #135ce0}div.smart-blue-theme h1,div.smart-blue-theme h2,div.smart-blue-theme h3,div.smart-blue-theme h4,div.smart-blue-theme h5,div.smart-blue-theme h6{padding:30px 0;margin:0}div.smart-blue-theme h1 a,div.smart-blue-theme h2 a,div.smart-blue-theme h3 a,div.smart-blue-theme h4 a,div.smart-blue-theme h5 a,div.smart-blue-theme h6 a{border:none}div.smart-blue-theme h1{position:relative;text-align:center;font-size:22px;margin:50px 0}div.smart-blue-theme h2{position:relative;font-size:20px;border-left:4px solid;padding:0 0 0 10px;margin:30px 0}div.smart-blue-theme h3{font-size:16px}.smart-blue-theme img{margin:0 auto}.md-editor div.smart-blue-theme{--md-theme-link-color: #036aca}.md-editor-dark div.smart-blue-theme{--md-theme-link-color: #2d7dc7}div.smart-blue-theme a{font-weight:400}.smart-blue-theme ul,.smart-blue-theme ol{margin-top:1em}.smart-blue-theme li{line-height:2;margin-bottom:0;list-style:inherit}.smart-blue-theme p{line-height:2;font-weight:400}.smart-blue-theme *+p{margin-top:16px}.md-editor div.smart-blue-theme{--md-theme-quote-color: #666;--md-theme-quote-bg-color: #fff9f9;--md-theme-quote-border-color: #b2aec5}.md-editor-dark div.smart-blue-theme{--md-theme-quote-color: #999;--md-theme-quote-bg-color: #2a2a2a;--md-theme-quote-border-color: #0063bb}div.smart-blue-theme blockquote{background-color:var(--md-theme-quote-bg-color);margin:2em 0;padding:2px 20px;border-left:4px solid var(--md-theme-quote-border-color)}div.smart-blue-theme blockquote p{color:var(--md-theme-quote-color);line-height:2}.md-editor div.smart-blue-theme{--md-theme-table-td-border-color: #dfe2e5;--md-theme-table-stripe-color: #f6f8fa}.md-editor-dark div.smart-blue-theme{--md-theme-table-td-border-color: #2d2d2d;--md-theme-table-stripe-color: #0c0c0c}div.smart-blue-theme table{border-collapse:collapse;margin:1rem 0;overflow-x:auto}div.smart-blue-theme table tr th,div.smart-blue-theme table tr td{padding:.6em 1em}div.smart-blue-theme blockquote table{line-height:initial}div.smart-blue-theme blockquote table tr th,div.smart-blue-theme blockquote table tr td{border-color:var(--md-theme-border-color-inset)}div.smart-blue-theme blockquote table tbody tr:nth-child(n){background-color:inherit}.md-editor .smart-blue-theme{--md-theme-color: #595959}.md-editor .smart-blue-theme{background-image:linear-gradient(90deg,#3c0a1e0a 3%,#0000 3%),linear-gradient(360deg,#3c0a1e0a 3%,#0000 3%)}.md-editor-dark .smart-blue-theme{--md-theme-color: #999}.md-editor-dark .smart-blue-theme{background-image:linear-gradient(90deg,#cfcfcf0a 3%,#fff0 3%),linear-gradient(360deg,#cfcfcf0a 3%,#fff0 3%)}div.smart-blue-theme{color:var(--md-theme-color);font-family:-apple-system,system-ui,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial,sans-serif;background-size:20px 20px;background-position:center center}div.smart-blue-theme strong,div.smart-blue-theme em strong{color:#036aca}div.smart-blue-theme hr{border-top:1px solid #135ce0}.md-editor-catalog-editor{--md-color: #3f4a54;--md-hover-color: #000;--md-bk-color: #fff;--md-bk-color-outstand: #f2f2f2;--md-bk-hover-color: #f5f7fa;--md-border-color: #e6e6e6;--md-border-hover-color: #b9b9b9;--md-border-active-color: #999;--md-modal-mask: #00000073;--md-modal-shadow: 0px 6px 24px 2px #00000019;--md-scrollbar-bg-color: #e2e2e2;--md-scrollbar-thumb-color: #0000004d;--md-scrollbar-thumb-hover-color: #00000059;--md-scrollbar-thumb-active-color: #00000061;position:absolute;overflow:auto;top:0;right:0;height:100%;background-color:var(--md-bk-color-outstand);border-left:1px solid var(--md-border-color);width:200px;box-sizing:border-box;margin:0;padding:5px 10px;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum";z-index:2}.md-editor-catalog>.md-editor-catalog-link{padding:5px 8px}.md-editor-catalog-link{padding:5px 0 5px 1em;line-height:1.2}.md-editor-catalog-link span{display:inline-block;width:100%;position:relative;overflow:hidden;color:var(--md-color);white-space:nowrap;text-overflow:ellipsis;transition:color .3s;cursor:pointer}.md-editor-catalog-link span:hover{color:#73d13d}.md-editor-catalog-wrapper>.md-editor-catalog-link{padding-top:5px;padding-bottom:5px}.md-editor-catalog-wrapper>.md-editor-catalog-link:first-of-type{padding-top:10px}.md-editor-catalog-wrapper>.md-editor-catalog-link:last-of-type{padding-bottom:0}.md-editor-catalog-active>span{color:#73d13d}.md-editor-catalog-dark{--md-color: #999;--md-hover-color: #bbb;--md-bk-color: #000;--md-bk-color-outstand: #333;--md-bk-hover-color: #1b1a1a;--md-border-color: #2d2d2d;--md-border-hover-color: #636262;--md-border-active-color: #777;--md-modal-mask: #00000073;--md-modal-shadow: 0px 6px 24px 2px #00000066;--md-scrollbar-bg-color: #0f0f0f;--md-scrollbar-thumb-color: #2d2d2d;--md-scrollbar-thumb-hover-color: #3a3a3a;--md-scrollbar-thumb-active-color: #3a3a3a}.md-editor{--md-color: #3f4a54;--md-hover-color: #000;--md-bk-color: #fff;--md-bk-color-outstand: #f2f2f2;--md-bk-hover-color: #f5f7fa;--md-border-color: #e6e6e6;--md-border-hover-color: #b9b9b9;--md-border-active-color: #999;--md-modal-mask: #00000073;--md-modal-shadow: 0px 6px 24px 2px #00000019;--md-scrollbar-bg-color: #e2e2e2;--md-scrollbar-thumb-color: #0000004d;--md-scrollbar-thumb-hover-color: #00000059;--md-scrollbar-thumb-active-color: #00000061;color:var(--md-color);font-family:-apple-system,BlinkMacSystemFont,Segoe UI Variable,Segoe UI,system-ui,ui-sans-serif,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";width:100%;height:500px;position:relative;box-sizing:border-box;border:1px solid var(--md-border-color);display:flex;flex-direction:column;overflow:hidden;background-color:var(--md-bk-color)}.md-editor ::-webkit-scrollbar{width:6px;height:6px}.md-editor ::-webkit-scrollbar-corner,.md-editor ::-webkit-scrollbar-track{background-color:var(--md-scrollbar-bg-color)}.md-editor ::-webkit-scrollbar-thumb{border-radius:2px;background-color:var(--md-scrollbar-thumb-color)}.md-editor ::-webkit-scrollbar-button:vertical{display:none}.md-editor ::-webkit-scrollbar-thumb:vertical:hover{background-color:var(--md-scrollbar-thumb-hover-color)}.md-editor ::-webkit-scrollbar-thumb:vertical:active{background-color:var(--md-scrollbar-thumb-active-color)}.md-editor .md-editor-fullscreen{position:fixed!important;top:0;right:0;bottom:0;left:0;width:auto!important;height:auto!important;z-index:10000}svg.md-editor-icon{width:24px;height:24px;fill:currentColor;overflow:hidden;display:block}i.md-editor-iconfont{font-size:24px;vertical-align:text-bottom}.md-editor-preview-wrapper{position:relative;flex:1;box-sizing:border-box;overflow:auto;padding:10px 20px}.md-editor-preview{font-size:16px;word-break:break-all;overflow:hidden}.md-editor-modal-container{--md-color: #3f4a54;--md-hover-color: #000;--md-bk-color: #fff;--md-bk-color-outstand: #f2f2f2;--md-bk-hover-color: #f5f7fa;--md-border-color: #e6e6e6;--md-border-hover-color: #b9b9b9;--md-border-active-color: #999;--md-modal-mask: #00000073;--md-modal-shadow: 0px 6px 24px 2px #00000019;--md-scrollbar-bg-color: #e2e2e2;--md-scrollbar-thumb-color: #0000004d;--md-scrollbar-thumb-hover-color: #00000059;--md-scrollbar-thumb-active-color: #00000061;color:var(--md-color);font-family:-apple-system,BlinkMacSystemFont,Segoe UI Variable,Segoe UI,system-ui,ui-sans-serif,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"}.md-editor-modal-container ::-webkit-scrollbar{width:6px;height:6px}.md-editor-modal-container ::-webkit-scrollbar-corner,.md-editor-modal-container ::-webkit-scrollbar-track{background-color:var(--md-scrollbar-bg-color)}.md-editor-modal-container ::-webkit-scrollbar-thumb{border-radius:2px;background-color:var(--md-scrollbar-thumb-color)}.md-editor-modal-container ::-webkit-scrollbar-button:vertical{display:none}.md-editor-modal-container ::-webkit-scrollbar-thumb:vertical:hover{background-color:var(--md-scrollbar-thumb-hover-color)}.md-editor-modal-container ::-webkit-scrollbar-thumb:vertical:active{background-color:var(--md-scrollbar-thumb-active-color)}.md-editor-previewOnly{border:none;height:auto}.md-editor-previewOnly .md-editor-content{height:100%}.md-editor-previewOnly .md-editor-preview{padding:0}.md-editor-dark,.md-editor-modal-container[data-theme=dark]{--md-color: #999;--md-hover-color: #bbb;--md-bk-color: #000;--md-bk-color-outstand: #333;--md-bk-hover-color: #1b1a1a;--md-border-color: #2d2d2d;--md-border-hover-color: #636262;--md-border-active-color: #777;--md-modal-mask: #00000073;--md-modal-shadow: 0px 6px 24px 2px #00000066;--md-scrollbar-bg-color: #0f0f0f;--md-scrollbar-thumb-color: #2d2d2d;--md-scrollbar-thumb-hover-color: #3a3a3a;--md-scrollbar-thumb-active-color: #3a3a3a}.medium-zoom-overlay,.medium-zoom-image--opened{z-index:100001}.hint{color:#888;font-size:12px;margin-top:5px}.plugin-container[data-v-d50cccc1]{margin-top:16px}.plugin-list[data-v-d50cccc1]{display:grid;gap:24px;grid-template-columns:repeat(auto-fill,minmax(272px,1fr))}.plugin-box-black[data-v-d50cccc1]{display:grid;grid-template-columns:48px 1fr 24px;grid-template-rows:auto;gap:16px;grid-auto-flow:row;border-radius:2px;padding:24px;background:#22252b;transition:background-color .25s cubic-bezier(.4,0,.2,1) 0ms,box-shadow .25s cubic-bezier(.4,0,.2,1) 0ms,border-color .25s cubic-bezier(.4,0,.2,1) 0ms,color .25s cubic-bezier(.4,0,.2,1) 0ms;box-shadow:0 1px 1px var(--el-box-shadow-light)}.plugin-box-light[data-v-d50cccc1]{display:grid;grid-template-columns:48px 1fr 24px;grid-template-rows:auto;gap:16px;grid-auto-flow:row;border-radius:2px;padding:24px;background:#fff;transition:background-color .25s cubic-bezier(.4,0,.2,1) 0ms,box-shadow .25s cubic-bezier(.4,0,.2,1) 0ms,border-color .25s cubic-bezier(.4,0,.2,1) 0ms,color .25s cubic-bezier(.4,0,.2,1) 0ms;box-shadow:0 1px 1px var(--el-box-shadow-light)}.css-111p9b5-layoutChildrenWrapper[data-v-d50cccc1]{margin-bottom:8px;margin-right:8px;display:flex;-webkit-box-align:center;align-items:center}.css-111p9b5-layoutChildrenWrapper[data-v-d50cccc1]:last-child{margin-right:0}.plugin-img[data-v-d50cccc1]{grid-area:1 / 1 / 3 / 2;max-width:100%;align-self:center;object-fit:contain}.plugin-name[data-v-d50cccc1]{grid-area:1 / 2 / 3 / 3;align-self:center;font-size:1.28571rem;margin:0}.plugin-content[data-v-d50cccc1]{grid-area:3 / 1 / 4 / 3}.css-wdk70v[data-v-d50cccc1]{grid-area:1 / 3 / 2 / 4}.css-f3blth-horizontal-group[data-v-d50cccc1]{display:flex;flex-flow:wrap;-webkit-box-pack:start;justify-content:flex-start;-webkit-box-align:center;align-items:center;height:100%;max-width:100%;margin-bottom:-8px}.hover-red[data-v-d50cccc1]:hover{color:#ff4500}.css-1hgwamg-page-header[data-v-d50cccc1]{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.css-1yhi3xa[data-v-d50cccc1]{align-items:flex-start;display:flex;flex-flow:wrap;gap:8px 24px}.css-bk8b94-title-info-container[data-v-d50cccc1]{display:flex;flex:1 1 0%;flex-wrap:wrap;gap:8px 32px;-webkit-box-pack:justify;justify-content:space-between;max-width:100%;min-width:200px}.css-swtwop[data-v-d50cccc1]{display:flex;flex-direction:row;max-width:100%}.css-4kz4vr[data-v-d50cccc1]{width:32px;height:32px;margin-right:16px}.css-1pdqlwl[data-v-d50cccc1]{display:flex;flex-direction:row;gap:12px;overflow:auto}.css-eh43ok[data-v-d50cccc1]{border-left:1px solid rgba(204,204,220,.12)}.css-8exo7k[data-v-d50cccc1]{font-family:Inter,Helvetica,Arial,sans-serif;font-weight:400;font-size:.857143rem;line-height:1.5;letter-spacing:.0125em;display:flex;flex-direction:column;gap:4px}.css-1cjwdfr[data-v-d50cccc1]{display:flex;flex-wrap:wrap;gap:4px}.css-ti9e4i[data-v-d50cccc1]{display:inline-flex;-webkit-box-align:center;align-items:center}.css-3oq5wu[data-v-d50cccc1]{position:relative}.css-3sx73p[data-v-d50cccc1]{border-bottom:1px solid rgba(204,204,220,.12);overflow-x:auto}.css-b1ny57[data-v-d50cccc1]{display:flex;flex-direction:column;gap:8px}.css-swtwop h1[data-v-d50cccc1]{display:flex;margin-bottom:0}h1[data-v-d50cccc1],.h1[data-v-d50cccc1]{margin:0 0 .45em;font-size:2rem;line-height:1.14286;font-weight:400;letter-spacing:-.00893em;font-family:Inter,Helvetica,Arial,sans-serif} diff --git a/resources/views/dist/css/operater_log.CGpmyHFe.css b/resources/views/dist/css/operater_log.CGpmyHFe.css new file mode 100644 index 0000000..b1f89ae --- /dev/null +++ b/resources/views/dist/css/operater_log.CGpmyHFe.css @@ -0,0 +1 @@ +@charset "UTF-8";:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}@media (max-width: 768px){.vab-date-picker{width:77%}.vab-date-picker .el-date-range-picker{width:100%!important}.vab-date-picker .el-date-range-picker .el-picker-panel__body{min-width:76%;margin-left:70px}.vab-date-picker .el-picker-panel__shortcut{text-align:center}.vab-date-picker .el-date-range-picker__content{width:100%!important;padding:5px;margin:0}.vab-date-picker .el-date-range-picker__content .el-date-table th,.vab-date-picker .el-date-range-picker__content .el-date-table td{padding:0}.vab-date-picker .is-left{padding-bottom:0;border-bottom:1px solid var(--el-datepicker-inner-border-color)}.vab-date-picker .is-right{padding-top:0}.vab-date-picker .el-picker-panel__sidebar{width:70px}.vab-date-picker td,.vab-date-picker td .el-date-table-cell{height:24px}.vab-date-picker td .el-date-table-cell .el-date-table-cell__text{width:18px;height:18px;line-height:18px}.vab-date-picker .el-date-range-picker__header div{font-size:12px}} diff --git a/resources/views/dist/css/role.Dqt6WeBM.css b/resources/views/dist/css/role.Dqt6WeBM.css new file mode 100644 index 0000000..e6cd7b8 --- /dev/null +++ b/resources/views/dist/css/role.Dqt6WeBM.css @@ -0,0 +1 @@ +@charset "UTF-8";.el-transfer-panel{width:400px;height:600px}.el-transfer-panel__list.is-filterable{height:500px}[data-v-1ba34e83]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-1ba34e83]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-1ba34e83]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.app-container .roles-table[data-v-1ba34e83]{margin-top:30px}.app-container .permission-tree[data-v-1ba34e83]{margin-bottom:30px} diff --git a/resources/views/dist/css/signature.rZpWOn9R.css b/resources/views/dist/css/signature.rZpWOn9R.css new file mode 100644 index 0000000..46739a0 --- /dev/null +++ b/resources/views/dist/css/signature.rZpWOn9R.css @@ -0,0 +1 @@ +@charset "UTF-8";[data-v-1a3419bb]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-1a3419bb]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-1a3419bb]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.canvas-dom[data-v-1a3419bb]{width:100%;height:100%;padding:0 20px;background-color:#fff}.canvas-dom canvas[data-v-1a3419bb]{border:1px solid #e6e6e6}.canvas-dom header[data-v-1a3419bb]{display:flex;flex-flow:row nowrap;align-items:center;width:100%;margin:8px}.canvas-dom header .eraser-option[data-v-1a3419bb]{display:flex}.canvas-dom header .eraser-option label[data-v-1a3419bb]{white-space:nowrap} diff --git a/resources/views/dist/css/swagger.DXKrmNde.css b/resources/views/dist/css/swagger.DXKrmNde.css new file mode 100644 index 0000000..35708cd --- /dev/null +++ b/resources/views/dist/css/swagger.DXKrmNde.css @@ -0,0 +1 @@ +@charset "UTF-8";[data-v-b3705951]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-b3705951]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-b3705951]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.app-container[data-v-b3705951]{height:calc(100vh - 50px)}.hasTagsView .app-container[data-v-b3705951]{height:calc(100vh - 84px)} diff --git a/resources/views/dist/css/upload.w_PWxPc-.css b/resources/views/dist/css/upload.w_PWxPc-.css new file mode 100644 index 0000000..7bf5e91 --- /dev/null +++ b/resources/views/dist/css/upload.w_PWxPc-.css @@ -0,0 +1 @@ +@charset "UTF-8";[data-v-6362baf4]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-6362baf4]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-6362baf4]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.hide[data-v-6362baf4] .el-upload--picture-card{display:none}.show[data-v-6362baf4] .el-upload--picture-card{display:flex} diff --git a/resources/views/dist/css/user.DPk9CuZD.css b/resources/views/dist/css/user.DPk9CuZD.css new file mode 100644 index 0000000..71fcb3e --- /dev/null +++ b/resources/views/dist/css/user.DPk9CuZD.css @@ -0,0 +1 @@ +@charset "UTF-8";[data-v-951986b8]:root{--menu-background: #304156;--menu-text: #bfcbd9;--menu-active-text: var(--el-menu-active-color);--menu-hover: #263445;--sidebar-logo-background: #2d3748}:root .el-table[data-v-951986b8]{--el-table-current-row-bg-color: rgb(235 243 250)}html.dark[data-v-951986b8]{--menu-background: var(--el-bg-color-overlay);--menu-text: #fff;--menu-active-text: var(--el-menu-active-color);--menu-hover: rgb(0 0 0 / 20%);--sidebar-logo-background: rgb(0 0 0 / 20%)}.app-container .roles-table[data-v-951986b8]{margin-top:30px}.app-container .permission-tree[data-v-951986b8]{margin-bottom:30px} diff --git a/resources/views/dist/css/wang-editor.ClYh1QsV.css b/resources/views/dist/css/wang-editor.ClYh1QsV.css new file mode 100644 index 0000000..50ac020 --- /dev/null +++ b/resources/views/dist/css/wang-editor.ClYh1QsV.css @@ -0,0 +1 @@ +:root,:host{--w-e-textarea-bg-color: #fff;--w-e-textarea-color: #333;--w-e-textarea-border-color: #ccc;--w-e-textarea-slight-border-color: #e8e8e8;--w-e-textarea-slight-color: #d4d4d4;--w-e-textarea-slight-bg-color: #f5f2f0;--w-e-textarea-selected-border-color: #B4D5FF;--w-e-textarea-handler-bg-color: #4290f7;--w-e-toolbar-color: #595959;--w-e-toolbar-bg-color: #fff;--w-e-toolbar-active-color: #333;--w-e-toolbar-active-bg-color: #f1f1f1;--w-e-toolbar-disabled-color: #999;--w-e-toolbar-border-color: #e8e8e8;--w-e-modal-button-bg-color: #fafafa;--w-e-modal-button-border-color: #d9d9d9}.w-e-text-container *,.w-e-toolbar *{box-sizing:border-box;margin:0;outline:none;padding:0}.w-e-text-container blockquote,.w-e-text-container li,.w-e-text-container p,.w-e-text-container td,.w-e-text-container th,.w-e-toolbar *{line-height:1.5}.w-e-text-container{background-color:var(--w-e-textarea-bg-color);color:var(--w-e-textarea-color);height:100%;position:relative}.w-e-text-container .w-e-scroll{-webkit-overflow-scrolling:touch;height:100%}.w-e-text-container [data-slate-editor]{word-wrap:break-word;border-top:1px solid transparent;min-height:100%;outline:0;padding:0 10px;white-space:pre-wrap}.w-e-text-container [data-slate-editor] p{margin:15px 0}.w-e-text-container [data-slate-editor] h1,.w-e-text-container [data-slate-editor] h2,.w-e-text-container [data-slate-editor] h3,.w-e-text-container [data-slate-editor] h4,.w-e-text-container [data-slate-editor] h5{margin:20px 0}.w-e-text-container [data-slate-editor] img{cursor:default;display:inline!important;max-width:100%;min-height:20px;min-width:20px}.w-e-text-container [data-slate-editor] span{text-indent:0}.w-e-text-container [data-slate-editor] [data-selected=true]{box-shadow:0 0 0 2px var(--w-e-textarea-selected-border-color)}.w-e-text-placeholder{font-style:italic;left:10px;top:17px;width:90%}.w-e-max-length-info,.w-e-text-placeholder{color:var(--w-e-textarea-slight-color);pointer-events:none;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none}.w-e-max-length-info{bottom:.5em;right:1em}.w-e-bar{background-color:var(--w-e-toolbar-bg-color);color:var(--w-e-toolbar-color);font-size:14px;padding:0 5px}.w-e-bar svg{fill:var(--w-e-toolbar-color);height:14px;width:14px}.w-e-bar-show{display:flex}.w-e-bar-hidden{display:none}.w-e-hover-bar{border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 5px #0000001f;position:absolute}.w-e-toolbar{flex-wrap:wrap;position:relative}.w-e-bar-divider{background-color:var(--w-e-toolbar-border-color);display:inline-flex;height:40px;margin:0 5px;width:1px}.w-e-bar-item{display:flex;height:40px;padding:4px;position:relative;text-align:center}.w-e-bar-item,.w-e-bar-item button{align-items:center;justify-content:center}.w-e-bar-item button{background:transparent;border:none;color:var(--w-e-toolbar-color);cursor:pointer;display:inline-flex;height:32px;overflow:hidden;padding:0 8px;white-space:nowrap}.w-e-bar-item button:hover{background-color:var(--w-e-toolbar-active-bg-color);color:var(--w-e-toolbar-active-color)}.w-e-bar-item button .title{margin-left:5px}.w-e-bar-item .active{background-color:var(--w-e-toolbar-active-bg-color);color:var(--w-e-toolbar-active-color)}.w-e-bar-item .disabled{color:var(--w-e-toolbar-disabled-color);cursor:not-allowed}.w-e-bar-item .disabled svg{fill:var(--w-e-toolbar-disabled-color)}.w-e-bar-item .disabled:hover{background-color:var(--w-e-toolbar-bg-color);color:var(--w-e-toolbar-disabled-color)}.w-e-bar-item .disabled:hover svg{fill:var(--w-e-toolbar-disabled-color)}.w-e-menu-tooltip-v5:before{background-color:var(--w-e-toolbar-active-color);border-radius:5px;color:var(--w-e-toolbar-bg-color);content:attr(data-tooltip);font-size:.75em;opacity:0;padding:5px 10px;position:absolute;text-align:center;top:40px;transition:opacity .6s;visibility:hidden;white-space:pre;z-index:1}.w-e-menu-tooltip-v5:after{border:5px solid transparent;border-bottom:5px solid var(--w-e-toolbar-active-color);content:"";opacity:0;position:absolute;top:30px;transition:opacity .6s;visibility:hidden}.w-e-menu-tooltip-v5:hover:after,.w-e-menu-tooltip-v5:hover:before{opacity:1;visibility:visible}.w-e-menu-tooltip-v5.tooltip-right:before{left:100%;top:10px}.w-e-menu-tooltip-v5.tooltip-right:after{border-bottom-color:transparent;border-left-color:transparent;border-right-color:var(--w-e-toolbar-active-color);border-top-color:transparent;left:100%;margin-left:-10px;top:16px}.w-e-bar-item-group .w-e-bar-item-menus-container{background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 10px #0000001f;display:none;left:0;margin-top:40px;position:absolute;top:0;z-index:1}.w-e-bar-item-group:hover .w-e-bar-item-menus-container{display:block}.w-e-select-list{background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 10px #0000001f;left:0;margin-top:40px;max-height:350px;min-width:100px;overflow-y:auto;position:absolute;top:0;z-index:1}.w-e-select-list ul{line-height:1;list-style:none}.w-e-select-list ul .selected{background-color:var(--w-e-toolbar-active-bg-color)}.w-e-select-list ul li{cursor:pointer;padding:7px 0 7px 25px;position:relative;text-align:left;white-space:nowrap}.w-e-select-list ul li:hover{background-color:var(--w-e-toolbar-active-bg-color)}.w-e-select-list ul li svg{left:0;margin-left:5px;margin-top:-7px;position:absolute;top:50%}.w-e-bar-bottom .w-e-select-list{bottom:0;margin-bottom:40px;margin-top:0;top:inherit}.w-e-drop-panel{background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 10px #0000001f;margin-top:40px;min-width:200px;padding:10px;position:absolute;top:0;z-index:1}.w-e-bar-bottom .w-e-drop-panel{bottom:0;margin-bottom:40px;margin-top:0;top:inherit}.w-e-modal{background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 10px #0000001f;color:var(--w-e-toolbar-color);font-size:14px;min-height:40px;min-width:100px;padding:20px 15px 0;position:absolute;text-align:left;z-index:1}.w-e-modal .btn-close{cursor:pointer;line-height:1;padding:5px;position:absolute;right:8px;top:7px}.w-e-modal .btn-close svg{fill:var(--w-e-toolbar-color);height:10px;width:10px}.w-e-modal .babel-container{display:block;margin-bottom:15px}.w-e-modal .babel-container span{display:block;margin-bottom:10px}.w-e-modal .button-container{margin-bottom:15px}.w-e-modal button{background-color:var(--w-e-modal-button-bg-color);border:1px solid var(--w-e-modal-button-border-color);border-radius:4px;color:var(--w-e-toolbar-color);cursor:pointer;font-weight:400;height:32px;padding:4.5px 15px;text-align:center;touch-action:manipulation;transition:all .3s cubic-bezier(.645,.045,.355,1);-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.w-e-modal input[type=number],.w-e-modal input[type=text],.w-e-modal textarea{font-feature-settings:"tnum";background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-modal-button-border-color);border-radius:4px;color:var(--w-e-toolbar-color);font-variant:tabular-nums;padding:4.5px 11px;transition:all .3s;width:100%}.w-e-modal textarea{min-height:60px}body .w-e-modal,body .w-e-modal *{box-sizing:border-box}.w-e-progress-bar{background-color:var(--w-e-textarea-handler-bg-color);height:1px;position:absolute;transition:width .3s;width:0}.w-e-full-screen-container{bottom:0!important;display:flex!important;flex-direction:column!important;height:100%!important;left:0!important;margin:0!important;padding:0!important;position:fixed;right:0!important;top:0!important;width:100%!important}.w-e-full-screen-container [data-w-e-textarea=true]{flex:1!important}.w-e-text-container [data-slate-editor] code{background-color:var(--w-e-textarea-slight-bg-color);border-radius:3px;font-family:monospace;padding:3px}.w-e-panel-content-color{list-style:none;text-align:left;width:230px}.w-e-panel-content-color li{border:1px solid var(--w-e-toolbar-bg-color);border-radius:3px;cursor:pointer;display:inline-block;padding:2px}.w-e-panel-content-color li:hover{border-color:var(--w-e-toolbar-color)}.w-e-panel-content-color li .color-block{border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;height:17px;width:17px}.w-e-panel-content-color .active{border-color:var(--w-e-toolbar-color)}.w-e-panel-content-color .clear{line-height:1.5;margin-bottom:5px;width:100%}.w-e-panel-content-color .clear svg{height:16px;margin-bottom:-4px;width:16px}.w-e-text-container [data-slate-editor] blockquote{background-color:var(--w-e-textarea-slight-bg-color);border-left:8px solid var(--w-e-textarea-selected-border-color);display:block;font-size:100%;line-height:1.5;margin:10px 0;padding:10px}.w-e-panel-content-emotion{font-size:20px;list-style:none;text-align:left;width:300px}.w-e-panel-content-emotion li{border-radius:3px;cursor:pointer;display:inline-block;padding:0 5px}.w-e-panel-content-emotion li:hover{background-color:var(--w-e-textarea-slight-bg-color)}.w-e-textarea-divider{border-radius:3px;margin:20px auto;padding:20px}.w-e-textarea-divider hr{background-color:var(--w-e-textarea-border-color);border:0;display:block;height:1px}.w-e-text-container [data-slate-editor] pre>code{background-color:var(--w-e-textarea-slight-bg-color);border:1px solid var(--w-e-textarea-slight-border-color);border-radius:4px;display:block;font-size:14px;padding:10px;text-indent:0}.w-e-text-container [data-slate-editor] .w-e-image-container{display:inline-block;margin:0 3px}.w-e-text-container [data-slate-editor] .w-e-image-container:hover{box-shadow:0 0 0 2px var(--w-e-textarea-selected-border-color)}.w-e-text-container [data-slate-editor] .w-e-selected-image-container{overflow:hidden;position:relative}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .w-e-image-dragger{background-color:var(--w-e-textarea-handler-bg-color);height:7px;position:absolute;width:7px}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .left-top{cursor:nwse-resize;left:0;top:0}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .right-top{cursor:nesw-resize;right:0;top:0}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .left-bottom{bottom:0;cursor:nesw-resize;left:0}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .right-bottom{bottom:0;cursor:nwse-resize;right:0}.w-e-text-container [data-slate-editor] .w-e-selected-image-container:hover,.w-e-text-container [contenteditable=false] .w-e-image-container:hover{box-shadow:none}.w-e-text-container [data-slate-editor] .table-container{border:1px dashed var(--w-e-textarea-border-color);border-radius:5px;margin-top:10px;overflow-x:auto;padding:10px;width:100%}.w-e-text-container [data-slate-editor] table{border-collapse:collapse}.w-e-text-container [data-slate-editor] table td,.w-e-text-container [data-slate-editor] table th{border:1px solid var(--w-e-textarea-border-color);line-height:1.5;min-width:30px;padding:3px 5px;text-align:left}.w-e-text-container [data-slate-editor] table th{background-color:var(--w-e-textarea-slight-bg-color);font-weight:700;text-align:center}.w-e-panel-content-table{background-color:var(--w-e-toolbar-bg-color)}.w-e-panel-content-table table{border-collapse:collapse}.w-e-panel-content-table td{border:1px solid var(--w-e-toolbar-border-color);cursor:pointer;height:15px;padding:3px 5px;width:20px}.w-e-panel-content-table td.active{background-color:var(--w-e-toolbar-active-bg-color)}.w-e-textarea-video-container{background-image:linear-gradient(45deg,#eee 25%,transparent 0,transparent 75%,#eee 0,#eee),linear-gradient(45deg,#eee 25%,#fff 0,#fff 75%,#eee 0,#eee);background-position:0 0,10px 10px;background-size:20px 20px;border:1px dashed var(--w-e-textarea-border-color);border-radius:5px;margin:10px auto 0;padding:10px 0;text-align:center}.w-e-text-container [data-slate-editor] pre>code{word-wrap:normal;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;-webkit-hyphens:none;hyphens:none;line-height:1.5;margin:.5em 0;overflow:auto;padding:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;text-align:left;text-shadow:0 1px #fff;white-space:pre;word-break:normal;word-spacing:normal}.w-e-text-container [data-slate-editor] pre>code .token.cdata,.w-e-text-container [data-slate-editor] pre>code .token.comment,.w-e-text-container [data-slate-editor] pre>code .token.doctype,.w-e-text-container [data-slate-editor] pre>code .token.prolog{color:#708090}.w-e-text-container [data-slate-editor] pre>code .token.punctuation{color:#999}.w-e-text-container [data-slate-editor] pre>code .token.namespace{opacity:.7}.w-e-text-container [data-slate-editor] pre>code .token.boolean,.w-e-text-container [data-slate-editor] pre>code .token.constant,.w-e-text-container [data-slate-editor] pre>code .token.deleted,.w-e-text-container [data-slate-editor] pre>code .token.number,.w-e-text-container [data-slate-editor] pre>code .token.property,.w-e-text-container [data-slate-editor] pre>code .token.symbol,.w-e-text-container [data-slate-editor] pre>code .token.tag{color:#905}.w-e-text-container [data-slate-editor] pre>code .token.attr-name,.w-e-text-container [data-slate-editor] pre>code .token.builtin,.w-e-text-container [data-slate-editor] pre>code .token.char,.w-e-text-container [data-slate-editor] pre>code .token.inserted,.w-e-text-container [data-slate-editor] pre>code .token.selector,.w-e-text-container [data-slate-editor] pre>code .token.string{color:#690}.w-e-text-container [data-slate-editor] pre>code .language-css .token.string,.w-e-text-container [data-slate-editor] pre>code .style .token.string,.w-e-text-container [data-slate-editor] pre>code .token.entity,.w-e-text-container [data-slate-editor] pre>code .token.operator,.w-e-text-container [data-slate-editor] pre>code .token.url{color:#9a6e3a}.w-e-text-container [data-slate-editor] pre>code .token.atrule,.w-e-text-container [data-slate-editor] pre>code .token.attr-value,.w-e-text-container [data-slate-editor] pre>code .token.keyword{color:#07a}.w-e-text-container [data-slate-editor] pre>code .token.class-name,.w-e-text-container [data-slate-editor] pre>code .token.function{color:#dd4a68}.w-e-text-container [data-slate-editor] pre>code .token.important,.w-e-text-container [data-slate-editor] pre>code .token.regex,.w-e-text-container [data-slate-editor] pre>code .token.variable{color:#e90}.w-e-text-container [data-slate-editor] pre>code .token.bold,.w-e-text-container [data-slate-editor] pre>code .token.important{font-weight:700}.w-e-text-container [data-slate-editor] pre>code .token.italic{font-style:italic}.w-e-text-container [data-slate-editor] pre>code .token.entity{cursor:help} diff --git a/resources/views/dist/css/websocket.DEx0kJFa.css b/resources/views/dist/css/websocket.DEx0kJFa.css new file mode 100644 index 0000000..7debe70 --- /dev/null +++ b/resources/views/dist/css/websocket.DEx0kJFa.css @@ -0,0 +1 @@ +.message-container[data-v-3a1abda7]{display:flex;flex-direction:column}.message[data-v-3a1abda7]{padding:10px;margin:10px;border-radius:5px}.message--sent[data-v-3a1abda7]{align-self:flex-end;background-color:#dcf8c6}.message--received[data-v-3a1abda7]{align-self:flex-start;background-color:#e8e8e8}.message-content[data-v-3a1abda7]{display:flex;flex-direction:column}.message-sender[data-v-3a1abda7]{margin-bottom:5px;font-weight:700;text-align:right}.message-receiver[data-v-3a1abda7]{margin-bottom:5px;font-weight:700;text-align:left}.tip-message[data-v-3a1abda7]{align-self:center;padding:5px 10px;margin-bottom:5px;font-style:italic;text-align:center;background-color:#f0f0f0;border-radius:5px} diff --git a/resources/views/dist/favicon.ico b/resources/views/dist/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..496e09050f2d3bcf31c82100b27d717602d2b41f GIT binary patch literal 14204 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 literal 0 HcmV?d00001 diff --git a/resources/views/dist/img/401.DaBJYOxp.gif b/resources/views/dist/img/401.DaBJYOxp.gif new file mode 100644 index 0000000000000000000000000000000000000000..4c930e72a698889a0f5666d8599652c5808cfc70 GIT binary patch literal 162867 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 z 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�Q#E@9P%v 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 RAD1R`%-z%NxyyxH{|8NN4M_k1 literal 0 HcmV?d00001 diff --git a/resources/views/dist/img/login-background-dark.BfPFE40x.jpg b/resources/views/dist/img/login-background-dark.BfPFE40x.jpg new file mode 100644 index 0000000000000000000000000000000000000000..50dc817e8fca2d229f91de8f9ee4a395572ee00a GIT binary patch literal 20471 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 Vjs4wpK(~MM=0|#bu<7w%{x1-0sn`Gj literal 0 HcmV?d00001 diff --git a/resources/views/dist/img/login-background-light.CKlK6emc.jpg b/resources/views/dist/img/login-background-light.CKlK6emc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..993b958e243926e4dd5b1a415c879965117a3419 GIT binary patch literal 32872 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ð^j-r@`P8j452yx>Y6XIGhmq$X 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 Vk3V|iuRnJ0#=E5TTkrnQ|1Z@Pvk(9P literal 0 HcmV?d00001 diff --git a/resources/views/dist/img/login_bg.BzmVCLXR.png b/resources/views/dist/img/login_bg.BzmVCLXR.png new file mode 100644 index 0000000000000000000000000000000000000000..67f3af3dbe26fce753719f563934648dec44ca2a GIT binary patch literal 474374 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

Nb5qeekWdUM2&z^+{te+42ib-(3 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�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 literal 0 HcmV?d00001 diff --git a/resources/views/dist/img/logo.BlrjUcG7.png b/resources/views/dist/img/logo.BlrjUcG7.png new file mode 100644 index 0000000000000000000000000000000000000000..67132028da95dd233eb4583e08d491d9bf88716b GIT binary patch literal 73085 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 literal 0 HcmV?d00001 diff --git a/resources/views/dist/img/work_wechat.zTPxZRB-.png b/resources/views/dist/img/work_wechat.zTPxZRB-.png new file mode 100644 index 0000000000000000000000000000000000000000..9c3f4ba657af87c8509f72a9888cd363039460f1 GIT binary patch literal 6991 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 literal 0 HcmV?d00001 diff --git a/resources/views/dist/index.html b/resources/views/dist/index.html new file mode 100644 index 0000000..6fd1e0f --- /dev/null +++ b/resources/views/dist/index.html @@ -0,0 +1,26 @@ +ElasticView
\ No newline at end of file diff --git a/resources/views/dist/js/401.Diq3Y6E6.js b/resources/views/dist/js/401.Diq3Y6E6.js new file mode 100644 index 0000000..00c0f69 --- /dev/null +++ b/resources/views/dist/js/401.Diq3Y6E6.js @@ -0,0 +1 @@ +import{d as a,a0 as l,bd as e,h as s,l as t,w as i,g as r,aB as o,az as n,a6 as d,au as u,e as p,a7 as c,C as m,j as f,aU as h,aV as _}from"./index.DMBpWXpT.js";import{E as g}from"./el-dialog.DGaSOiRM.js";import{a as b,E as w}from"./el-col.DOWhjITg.js";import{_ as j}from"./_plugin-vue_export-helper.BCo6x5W8.js";import"./use-dialog.CoOh9qjD.js";import"./isUndefined.DgmxjSXK.js";import"./refs.BiRbkTK3.js";const k=a=>(h("data-v-849ad0a6"),a=a(),_(),a),v={class:"page-container"},x=k((()=>m("h1",{class:"text-jumbo text-ginormous"},"Oops!",-1))),V=k((()=>m("a",{href:"https://zh.airbnb.com/",target:"_blank"},"airbnb",-1))),C=k((()=>m("h2",null,"你没有权限去该页面",-1))),y=k((()=>m("h6",null,"如有不满请联系你领导",-1))),z={class:"list-unstyled"},U=k((()=>m("li",null,"或者你可以去:",-1))),G={class:"link-type"},B=k((()=>m("li",{class:"link-type"},[m("a",{href:"https://www.taobao.com/"},"随便看看")],-1))),E=["src"],O=["src"],D=j(a({name:"Page401",__name:"401",setup(a){const h=l({errGif:new URL( window.appSubUrl+"/img/401.DaBJYOxp.gif",import.meta.url).href,ewizardClap:"https://wpimg.wallstcn.com/007ef517-bafd-4066-aae4-6883632d9646",dialogVisible:!1}),{errGif:_,ewizardClap:j,dialogVisible:k}=e(h),D=n();function I(){D.back()}return(a,l)=>{const e=d,n=u("router-link"),h=w,D=b,J=g;return p(),s("div",v,[t(e,{icon:"el-icon-arrow-left",class:"pan-back-btn",onClick:I},{default:i((()=>[c(" 返回 ")])),_:1}),t(D,null,{default:i((()=>[t(h,{span:12},{default:i((()=>[x,c(" gif来源"),V,c(" 页面 "),C,y,m("ul",z,[U,m("li",G,[t(n,{to:"/dashboard"},{default:i((()=>[c(" 回首页 ")])),_:1})]),B,m("li",null,[m("a",{href:"#",onClick:l[0]||(l[0]=f((a=>k.value=!0),["prevent"]))},"点我看图")])])])),_:1}),t(h,{span:12},{default:i((()=>[m("img",{src:r(_),width:"313",height:"428",alt:"Girl has dropped her ice cream."},null,8,E)])),_:1})])),_:1}),t(J,{modelValue:r(k),"onUpdate:modelValue":l[1]||(l[1]=a=>o(k)?k.value=a:null),title:"随便看"},{default:i((()=>[m("img",{src:r(j),class:"pan-img"},null,8,O)])),_:1},8,["modelValue"])])}}}),[["__scopeId","data-v-849ad0a6"]]);export{D as default}; diff --git a/resources/views/dist/js/404.DKSrrdbO.js b/resources/views/dist/js/404.DKSrrdbO.js new file mode 100644 index 0000000..5beb605 --- /dev/null +++ b/resources/views/dist/js/404.DKSrrdbO.js @@ -0,0 +1 @@ +import{d as v,h as a,C as f,j as s,be as t,az as e,e as b}from"./index.DMBpWXpT.js";import{_ as l}from"./_plugin-vue_export-helper.BCo6x5W8.js";const d="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJgAAACKCAMAAABhAnODAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAMAUExURUdwTPf6/v////f6/v////////////z9//////////////////7+//v///f6/v////f5/vz///////////////j6/vf7/v////////////v8//////j7/v7+//////////////////////////////////////v8/+nx/fv9//b6/vr7/v////f5/vj7//////j7/vj7//f5/vD2/f///////////////+jy/P////////j6//////f6/v////f7/vj6/vf6/vL3/f////////j7/vv8//////3///f6/vf6/vb6/v////r8//f7/fL3/P///////////+jw/PT4/v3+//////////////7+//b6/v///////+jx/P///+jy/f////f6/uz0/eny/PT9/+jx/PT4/uz0/f////f6/vb6/vv9//z9//////3+//r8//f6/vj7/+ny/P////f6/////////+jw/Pf6/v////f6/vj7/v////f6/fT4//j7//b7//////b6/evy/P///+vz/P////////T3/v///+jx/P3+/////+nx+/f6/v///////+jw/Pj6/v///+nx/P///+vz/P////////////j7/vj7//H2/P///+zz/Pb6/v////////////P3/v39/////+/1/v///+jx++jx/Pj6/unx/ff6/+fx/Pf6/+jx/Ony/Ojx/Pz+//H3/v////7+//b6/vj8//7+//b5/v////b6/uz0/ff6/fj6//v8//j5/fb7//////v9/vn8//v8//f5//f6/vP3/Ojx/ez0/u31/v////f5/f///////////+z0/Pz9/+rz/+nw++30/Or0/fj//+jx/f////////f7//v9/+fw++nw/f////b4/v///+jw/f////P4/vj//+fz+/r8/u/2/unw//////f5/fb6/vb7//////b6/f3+//////L3/vr9/+/1/fT3/ff7/v////n8/vf6/v///+fw+/b5/fP4/f////T4/lxP5j4AAAD6dFJOUwD+9P3lAfb9pvsC/BIO+gnmDM3h7/PtBMLqvPn0NU5AId3+gajrK8T0Fc2/29/S4sXC47/4W8ho+psHMMD8GLvN97nyGfG++h74yMsGbJ/Dddjx5L5E1t/XN9PUjvzo7dHh2uge/sLBtdjs7r/s48rW08bFtMrE8NxS2cAKpy18c2OR0SPPiCnLvv35mdS9bV7z1Tlbl8woy7ToVMuw1c+63qLFM3zOD9i20N+6+GSqT5pLvOfb0Uifrn/ux5e3z4s7G41QVlrEvnzMx7GCaYXt4vw+icDeJG0alHj2jGl56FB5rcAmQfXBInOF13KSlNCEtNSBpOo946pl6lljAAAF7ElEQVR42u3ceVQTRxwH8AVCyk0gUAhKqwFRFAKIgALhEgS5WlBUsCCHCNJntYBCDQL6tGKtVbxqRUXrgYp4lko98BZ7n/a+Sy97X7QO62uRPHgBdjeTzcxm+l6+/2f4PDKZ3+zsb5eiMOdyw8UAZ9/I87VXqx0oQmJ/qfb2eFojkoDUmuvuNgZFvXf9lyQ7mjlnk5bVeBnA1JRRU15Cc+Xwr0CUIKjJqvpo6kYTThQd7S8FPZkl2DfqffKHp+JobZEEpAN1yuzxm5LdU5b50hBRLJSD/rxihRWVcO2K/1QYFG3XkQYG5ElsKNuU1PE0ZLrGycDgnMEFe4GmzSQKf5UqcamW2bVo9ATAkOV4XLWafzpufqIqUjU2j2HxUvo7AuZY34fDdUnJOJPyolTtRwIU2/tWjXvdpIA14k0Ylgct06srK6C9PbLDbTLgyoKnka+lkTBTXukHtEQaixj2KtRvcSHQmlxbpK7TJjCujQAia5IRuuaWwLicR8HAgKc5MpdLItQXeQHAZT8y2ApUE0wdC1SuBiiXxFRo2NdxMC6TGUBgmL0C6h82GggNS4VyLbUUGnYUyhU9EwgMC4tG/UUigv3lC7PmJwHBYd2FzUW/H8ni3k2XyAwAU6dia0xM0lk2WDAwGKw32fnfnepg2JapgIFh6sx5KXDej5o7al9TMmC9mZh/rrNRXRHscgFBMHUKDjyQJHED5MF6s5ZU2D1GmBFmhBlhRpgR9n+FiUV9sbAiCobkJBszDHiQCgOvkQqTP0YoDEy4n1AYSA8jFAZEIwiFAR9vQmFgmwOhMLCbVJilEWaEGWGQ2bS1nkCY/XLHno8oAle1EAVbeeWN/r1wVOC6bDJgVieL5QM/6pR482ChoWE2t0Yyfly292azAWH72sQcQzzSWTTNELDkIIhD+9bpRQXCwhJeh73HIf/jVGmFULCMndY6jRZ/IeZcPXaY7fo0PiOKy+VYYV5bTHkN6LMYAHwwl2vh/IaTlskBPljsGRG/wXKWWAJUkQ1h/e0Zz28oJ1cxMpbpb02DWBFtfjyHCk9Hxhr289Crt9u0WRRXIxrbUK6jkLGs2xh6d0+rWzkO62aTl4mQscBXqxmmfVV/M2uPDbo/IXgPOtZud8Zl4uKAFpjnoWyOaehYwSznPGFDuiGz3EZyDzU7Fx1r9hdse0HGprBHOWw+29Cx9mxgPRdOYe2udfNhGsovWI6M9VyKC2vRvszVfDV/ymCbDOEy7/RZFXd/Mnd7k6YN5TIvfryJa+91FaJjp3JKq3oo18nIWPEfRnDuCR0g28wrx7UOW7IAGUv+rLZTzRWw7e+0MgfdT3Gn1mda9imhYf8gY63J1H452wjtckbFWpwBceX4E7SLfhgNawbU/Y+5w6FdXUhY0g1wt//K4f9haxGwZOsh274b4F3b9Wel74c9w2+SQLvsECzz8E9wnRdu5sdv+QD+PC7TDNoVp+cyb7FSl9Z8hVAzP9xdp3PVj+BdJXotXLo+ghRTAusy0WcjGKJz30J3y8s3JJhnvqkHj8d37x61PbFqep5W11TeV7CTIvS5lbzrRiU37GOermdW690V8G7nIuS7Ckd+LQFD7g0VzMtiWdZ4XRHNDOL/yNHQ1um9jUo0a6vTrVDE3U1jdowd1K9vxuMw6SH9nmtma+o+UKe5SftW5/LjOYKicMDuLiK76vqugaMxlx/db4zm1/UWhrcwlx9ed2zf3PH5cNzlh9+t5O7uf3GXH76wO7jLD3YY3/KDGca//GCFSYPMKQJhTg+GUhR5MH3LDyaY/uUHD8zVnaIIhM3C8gIGvWE5IdjeP6IPDFn5YUo9b5j1pFgKY6o2H5rIC1aM/2VFNp+WFuoKQ1t+OA47v1ynCwx1+eFM9TvNkDD05UdLzN8+MUc7DEf5gTgtO35sDCcMT/mBisPmQ9msMNdMypDxfr+UEYat/OiQ7188OBiWE+JCEZGwT6ZpwMQexLw7j6KsvjlRoYZhLj88Enr8WEv3nWIvisDYdv5JGdOf/wBvCt5Mksy8ZAAAAABJRU5ErkJggg==",i={class:"page-container"},n=t('
404404404404
',1),j={class:"bullshit"},A=t('
OOPS!
The webmaster said that you can not enter this page...
Please check that the URL you entered is correct, or click the button below to return to the homepage.
',4),c=l(v({name:"Page404",__name:"404",setup(v){const t=e();function l(){t.back()}return(v,t)=>(b(),a("div",i,[n,f("div",j,[A,f("a",{href:"#",class:"bullshit__return-home",onClick:s(l,["prevent"])}," Back to home ")])]))}}),[["__scopeId","data-v-2b9b8493"]]);export{c as default}; diff --git a/resources/views/dist/js/EsDashbord.BAS1EnKw.js b/resources/views/dist/js/EsDashbord.BAS1EnKw.js new file mode 100644 index 0000000..5497184 --- /dev/null +++ b/resources/views/dist/js/EsDashbord.BAS1EnKw.js @@ -0,0 +1 @@ +import{_ as e}from"./EsDashbord.vue_vue_type_script_setup_true_lang.BD2_WPlk.js";import"./index.DMBpWXpT.js";import"./el-col.DOWhjITg.js";import"./el-card.BhvZLWwX.js";/* empty css */import"./es.Bcp-0uIV.js";import"./index.qeCV5ckY.js";export{e as default}; diff --git a/resources/views/dist/js/EsDashbord.vue_vue_type_script_setup_true_lang.BD2_WPlk.js b/resources/views/dist/js/EsDashbord.vue_vue_type_script_setup_true_lang.BD2_WPlk.js new file mode 100644 index 0000000..2add203 --- /dev/null +++ b/resources/views/dist/js/EsDashbord.vue_vue_type_script_setup_true_lang.BD2_WPlk.js @@ -0,0 +1 @@ +import{d as e,a0 as t,o as s,e as a,f as n,w as c,l,C as o,a7 as d,F as r,g as u,aD as i}from"./index.DMBpWXpT.js";import{E as x,a as m}from"./el-col.DOWhjITg.js";import{E as f}from"./el-card.BhvZLWwX.js";/* empty css */import{I as p,C as y}from"./es.Bcp-0uIV.js";import{E as _}from"./index.qeCV5ckY.js";const g={class:"flex-x-between"},v=o("span",{class:"text-[var(--el-text-color-secondary)]"},"总分片数",-1),h={class:"flex-x-between mt-2 text-sm text-[var(--el-text-color-secondary)]"},w=o("span",null," 主分片数 ",-1),b={class:"flex-x-between mt-2 text-sm text-[var(--el-text-color-secondary)]"},j=o("span",null," 未分配的分片数 ",-1),C={class:"flex-x-between"},S=o("span",{class:"text-[var(--el-text-color-secondary)]"},"索引数",-1),E={class:"flex-x-between mt-2 text-sm text-[var(--el-text-color-secondary)]"},N=o("span",null," 文档数 ",-1),z={class:"flex-x-between mt-2 text-sm text-[var(--el-text-color-secondary)]"},D=o("span",null," 索引所占空间大小 ",-1),k=e({__name:"EsDashbord",setup(e){const k=t({count:{allShared:0,successfulShared:0,index:0,pri:0,unassigned:0,document:0,size:0}});return s((()=>{(async()=>{const e={es_connect:i()},{data:t,code:s,msg:a}=await p(e);0==s&&(k.count.index=t)})(),(async()=>{const e={cat:"CatAllocation",es_connect:i()},{data:t,code:s,msg:a}=await y(e);0==s&&(k.count.size=t[0]["disk.indices"])})(),(async()=>{const e={cat:"CatHealth",es_connect:i()},{data:t,code:s,msg:a}=await y(e);if(0==s&&t.length>0){let e=0,s=0,a=0;for(let n in t){let c=t[n];a+=Number(c.pri),e+=Number(c.shards),s+=Number(c.unassign)}k.count.unassigned=s,k.count.allShared=e,k.count.pri=a}})(),(async()=>{const e={cat:"CatStats",es_connect:i()},{data:t,code:s,msg:a}=await y(e);0==s&&(k.count.document=t.indices.docs.count)})()})),(e,t)=>{const s=_,i=f,p=x,y=m;return a(),n(y,{gutter:10,class:"mt-5"},{default:c((()=>[l(p,{xs:24,sm:12,lg:6},{default:c((()=>[l(i,null,{header:c((()=>[o("div",g,[v,l(s,{type:"primary"},{default:c((()=>[d(r(u(k).count.allShared),1)])),_:1})])])),default:c((()=>[o("div",h,[w,l(s,{type:"success"},{default:c((()=>[d(r(u(k).count.pri),1)])),_:1})]),o("div",b,[j,l(s,{type:"danger"},{default:c((()=>[d(r(u(k).count.unassigned),1)])),_:1})])])),_:1})])),_:1}),l(p,{xs:24,sm:12,lg:6},{default:c((()=>[l(i,null,{header:c((()=>[o("div",C,[S,l(s,{type:"primary"},{default:c((()=>[d(r(u(k).count.index),1)])),_:1})])])),default:c((()=>[o("div",E,[N,l(s,{type:"success"},{default:c((()=>[d(r(u(k).count.document),1)])),_:1})]),o("div",z,[D,l(s,{type:"danger"},{default:c((()=>[d(r(u(k).count.size),1)])),_:1})])])),_:1})])),_:1})])),_:1})}}});export{k as _}; diff --git a/resources/views/dist/js/EsHeader.BozPtybD.js b/resources/views/dist/js/EsHeader.BozPtybD.js new file mode 100644 index 0000000..721eba6 --- /dev/null +++ b/resources/views/dist/js/EsHeader.BozPtybD.js @@ -0,0 +1 @@ +import{r as e,J as l,e as a,f as o,w as t,l as r,a7 as d,F as p,a5 as u,a6 as s}from"./index.DMBpWXpT.js";import{E as m}from"./el-form.DUR-mZNt.js";import{E as i,a as n}from"./el-table-column.Dl1jn1Bd.js";import"./el-checkbox.8MJHthul.js";import"./el-tooltip.l0sNRNKZ.js";import"./el-popper.Cb3Eus9m.js";import"./el-scrollbar.BJ_tYB1D.js";/* empty css */import{_ as c}from"./_plugin-vue_export-helper.BCo6x5W8.js";import"./castArray.arHVDzqw.js";import"./_Uint8Array.BEOPqGcx.js";import"./index.CP01f_MK.js";import"./isEqual.B61-3bNT.js";import"./debounce.l44evi-0.js";import"./isUndefined.DgmxjSXK.js";const f=c({__name:"EsHeader",props:{modelValue:{type:Array,default:()=>[]}},emits:["update:modelValue"],setup(c,{emit:f}){const j=c,_=f,v=e([...j.modelValue]);l((()=>j.modelValue),(e=>{v.value=[...e]}),{deep:!0});const V=()=>{_("update:modelValue",v.value)},b=()=>{v.value.push({key:"",value:""}),V()};return(e,l)=>{const c=u,f=i,j=s,_=n,y=m;return a(),o(y,null,{default:t((()=>[r(_,{data:v.value,style:{width:"100%"},border:""},{default:t((()=>[r(f,{prop:"key",label:e.$t("键")},{default:t((({row:l,$index:a})=>[r(c,{modelValue:l.key,"onUpdate:modelValue":e=>l.key=e,placeholder:e.$t("键"),onInput:V},null,8,["modelValue","onUpdate:modelValue","placeholder"])])),_:1},8,["label"]),r(f,{prop:"value",label:e.$t("值")},{default:t((({row:l,$index:a})=>[r(c,{modelValue:l.value,"onUpdate:modelValue":e=>l.value=e,placeholder:e.$t("值"),onInput:V},null,8,["modelValue","onUpdate:modelValue","placeholder"])])),_:1},8,["label"]),r(f,{label:e.$t("操作"),width:"120"},{header:t((()=>[r(j,{type:"primary",onClick:b},{default:t((()=>[d(p(e.$t("新增键值")),1)])),_:1})])),default:t((({$index:l})=>[r(j,{type:"danger",onClick:e=>{return a=l,v.value.splice(a,1),void V();var a}},{default:t((()=>[d(p(e.$t("删除")),1)])),_:2},1032,["onClick"])])),_:1},8,["label"])])),_:1},8,["data"])])),_:1})}}},[["__scopeId","data-v-b0993104"]]);export{f as default}; diff --git a/resources/views/dist/js/_Uint8Array.BEOPqGcx.js b/resources/views/dist/js/_Uint8Array.BEOPqGcx.js new file mode 100644 index 0000000..aff1331 --- /dev/null +++ b/resources/views/dist/js/_Uint8Array.BEOPqGcx.js @@ -0,0 +1 @@ +import{cW as t,cQ as e,cX as r,cY as o,cU as n,cZ as a,c_ as c,c$ as s,d0 as u,cG as i,d1 as p,d2 as f,cR as b,d3 as j,d4 as y}from"./index.DMBpWXpT.js";var l=t(e,"WeakMap");function d(t){return null!=t&&r(t.length)&&!o(t)}var _=Object.prototype;function h(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||_)}var v="object"==typeof exports&&exports&&!exports.nodeType&&exports,g=v&&"object"==typeof module&&module&&!module.nodeType&&module,m=g&&g.exports===v?e.Buffer:void 0,A=(m?m.isBuffer:void 0)||function(){return!1},w={};function O(t){return function(e){return t(e)}}w["[object Float32Array]"]=w["[object Float64Array]"]=w["[object Int8Array]"]=w["[object Int16Array]"]=w["[object Int32Array]"]=w["[object Uint8Array]"]=w["[object Uint8ClampedArray]"]=w["[object Uint16Array]"]=w["[object Uint32Array]"]=!0,w["[object Arguments]"]=w["[object Array]"]=w["[object ArrayBuffer]"]=w["[object Boolean]"]=w["[object DataView]"]=w["[object Date]"]=w["[object Error]"]=w["[object Function]"]=w["[object Map]"]=w["[object Number]"]=w["[object Object]"]=w["[object RegExp]"]=w["[object Set]"]=w["[object String]"]=w["[object WeakMap]"]=!1;var x="object"==typeof exports&&exports&&!exports.nodeType&&exports,z=x&&"object"==typeof module&&module&&!module.nodeType&&module,S=z&&z.exports===x&&c.process,U=function(){try{var t=z&&z.require&&z.require("util").types;return t||S&&S.binding&&S.binding("util")}catch(e){}}(),k=U&&U.isTypedArray,B=k?O(k):function(t){return n(t)&&r(t.length)&&!!w[a(t)]},M=Object.prototype.hasOwnProperty;function P(t,e){var r=i(t),o=!r&&s(t),n=!r&&!o&&A(t),a=!r&&!o&&!n&&B(t),c=r||o||n||a,p=c?function(t,e){for(var r=-1,o=Array(t);++r{const c=o.__vccOpts||o;for(const[s,n]of t)c[s]=n;return c};export{o as _}; diff --git a/resources/views/dist/js/api-rbac.BkPPKqLP.js b/resources/views/dist/js/api-rbac.BkPPKqLP.js new file mode 100644 index 0000000..b906d84 --- /dev/null +++ b/resources/views/dist/js/api-rbac.BkPPKqLP.js @@ -0,0 +1 @@ +import{bC as r}from"./index.DMBpWXpT.js";function o(o){return r({url:"/api/gm_user/UrlConfig",method:"post",data:o})}export{o as U}; diff --git a/resources/views/dist/js/api.B2FJMEEY.js b/resources/views/dist/js/api.B2FJMEEY.js new file mode 100644 index 0000000..b281c0e --- /dev/null +++ b/resources/views/dist/js/api.B2FJMEEY.js @@ -0,0 +1 @@ +const c="data:image/svg+xml,%3csvg%20class='icon'%20viewBox='0%200%201024%201024'%20xmlns='http://www.w3.org/2000/svg'%20width='200'%20height='200'%3e%3cpath%20d='M499.2%20671.232v-261.12h102.4c16.384%200%2028.672%201.024%2037.888%202.56%2013.312%202.048%2024.576%206.656%2034.816%2013.312%209.728%206.656%2017.92%2016.384%2023.552%2028.16%206.144%2012.288%208.704%2025.6%208.192%2038.4%200%2023.552-7.68%2044.032-23.04%2059.904-15.36%2016.896-40.96%2025.088-78.848%2025.088h-43.52v93.184l-61.44.512zm281.6%200h-61.952v-261.12H780.8v261.12zm-287.744%200h-69.12L396.8%20601.6h-73.728l-25.088%2069.632h-66.56l100.352-261.12h54.272l107.008%20261.12zM343.552%20545.28h32.256l-15.872-42.496c0-.512-.512-1.024-.512-1.536l-15.872%2044.032zm217.6-26.112h43.52c20.48%200%2028.16-4.608%2031.232-7.168%204.608-4.096%207.168-10.752%207.168-18.944%200-6.656-1.536-11.776-4.096-15.36-2.56-3.584-6.144-6.144-10.752-7.68-1.536-.512-6.656-1.536-24.064-1.536h-43.008v50.688z'/%3e%3cpath%20d='M747.52%20842.752H512c-8.704%200-16.384-3.584-22.016-9.728-6.144-6.144-9.216-14.336-8.704-22.528.512-16.896%2014.336-30.72%2031.232-31.232H747.52c115.712%200%20209.408-94.208%20209.408-209.408%200-104.96-78.848-194.56-183.296-207.872l-22.528-3.072-4.608-22.016C724.992%20231.936%20631.808%20156.16%20524.288%20156.16c-124.928%200-226.304%20101.376-226.304%20226.304v8.704l1.536%2036.352-36.352-4.096c-6.144-1.024-12.288-1.024-18.432-1.024-98.304%200-178.176%2079.872-178.176%20178.176%200%2098.304%2079.872%20178.176%20178.176%20178.176h63.488c8.704%200%2016.384%203.584%2022.016%209.728%206.144%206.144%209.216%2014.336%208.704%2022.528-.512%2016.896-14.336%2030.72-31.232%2031.232h-64c-64%200-123.904-25.088-169.472-70.144C28.16%20726.528%203.072%20665.6%203.072%20601.088c0-129.536%20103.936-236.544%20232.448-241.152%2012.288-157.184%20149.504-276.48%20307.2-266.24%2059.904%203.584%20118.784%2027.136%20165.888%2065.536%2045.568%2037.376%2077.824%2087.04%2094.208%20143.872%20125.952%2026.112%20217.088%20137.728%20217.088%20266.752.512%20151.04-121.856%20272.896-272.384%20272.896z'/%3e%3cpath%20d='M572.416%20930.816c-8.192%200-15.872-3.072-21.504-8.704L431.616%20812.544l113.152-117.76c6.144-6.144%2013.824-9.216%2022.528-9.216%208.704%200%2016.384%203.072%2022.528%209.216%2011.776%2011.776%2012.288%2031.232%201.024%2044.032l-68.608%2070.656%2071.68%2066.048c6.144%205.632%209.728%2013.312%2010.24%2022.016.512%208.704-2.56%2016.384-8.192%2023.04-6.656%206.656-14.848%2010.24-23.552%2010.24z'/%3e%3c/svg%3e";export{c as default}; diff --git a/resources/views/dist/js/apifox.wqbLB8iE.js b/resources/views/dist/js/apifox.wqbLB8iE.js new file mode 100644 index 0000000..1e35158 --- /dev/null +++ b/resources/views/dist/js/apifox.wqbLB8iE.js @@ -0,0 +1 @@ +import{_ as a}from"./_plugin-vue_export-helper.BCo6x5W8.js";import{e,h as r,aU as s,aV as t,C as d}from"./index.DMBpWXpT.js";const o={},c={class:"app-container"},i=[(a=>(s("data-v-31dcf336"),a=a(),t(),a))((()=>d("iframe",{src:"https://www.apifox.cn/apidoc/shared-195e783f-4d85-4235-a038-eec696de4ea5",width:"100%",height:"100%",frameborder:"0"},null,-1)))];const n=a(o,[["render",function(a,s){return e(),r("div",c,i)}],["__scopeId","data-v-31dcf336"]]);export{n as default}; diff --git a/resources/views/dist/js/auth.Bn4YvWL7.js b/resources/views/dist/js/auth.Bn4YvWL7.js new file mode 100644 index 0000000..5bc4af0 --- /dev/null +++ b/resources/views/dist/js/auth.Bn4YvWL7.js @@ -0,0 +1 @@ +import{v as e,A as l,bf as a,M as t,U as o,N as s,bg as r,P as i,as as d,d as n,bh as u,bi as c,Y as f,b as p,r as m,b8 as h,c as g,bj as b,o as y,e as v,f as C,w as k,C as w,i as E,g as V,n as _,l as $,h as F,k as x,E as L,bk as S,S as A,V as U,a7 as j,F as T,a5 as R,a8 as B,a4 as O,j as M,b9 as q,_ as D,bl as I,t as P,q as N,ao as W,O as K,bm as H,J,ae as z,y as Q,a0 as Y,bn as X,bd as Z,aB as G,aC as ee,p as le,a3 as ae,aa as te,W as oe,ac as se,am as re,bo as ie,bp as de,a6 as ne,ak as ue,bq as ce,br as fe,aY as pe,bs as me,bt as he,bu as ge,bv as be,aP as ye,bw as ve,bx as Ce,by as ke,au as we,bc as Ee}from"./index.DMBpWXpT.js";/* empty css */import{E as Ve}from"./el-drawer.CpqknkfB.js";import{E as _e}from"./el-scrollbar.BJ_tYB1D.js";import{u as $e,E as Fe}from"./el-popper.Cb3Eus9m.js";import{E as xe,a as Le}from"./el-checkbox.8MJHthul.js";/* empty css */import{E as Se}from"./el-card.BhvZLWwX.js";import{E as Ae,a as Ue}from"./el-table-column.Dl1jn1Bd.js";import"./el-tooltip.l0sNRNKZ.js";/* empty css */import{a as je,E as Te}from"./el-form.DUR-mZNt.js";import"./el-form-item.l0sNRNKZ.js";import{d as Re}from"./index.B6fdKp2E.js";import{P as Be}from"./es.Bcp-0uIV.js";import Oe from"./EsHeader.BozPtybD.js";import{_ as Me}from"./_plugin-vue_export-helper.BCo6x5W8.js";import{E as qe}from"./index.qeCV5ckY.js";import{d as De}from"./debounce.l44evi-0.js";import"./use-dialog.CoOh9qjD.js";import"./isUndefined.DgmxjSXK.js";import"./isEqual.B61-3bNT.js";import"./_Uint8Array.BEOPqGcx.js";import"./index.CP01f_MK.js";import"./castArray.arHVDzqw.js";const Ie=e({valueKey:{type:String,default:"value"},modelValue:{type:[String,Number],default:""},debounce:{type:Number,default:300},placement:{type:l(String),values:["top","top-start","top-end","bottom","bottom-start","bottom-end"],default:"bottom-start"},fetchSuggestions:{type:l([Function,Array]),default:a},popperClass:{type:String,default:""},triggerOnFocus:{type:Boolean,default:!0},selectWhenUnmatched:{type:Boolean,default:!1},hideLoading:{type:Boolean,default:!1},teleported:$e.teleported,highlightFirstItem:{type:Boolean,default:!1},fitInputWidth:{type:Boolean,default:!1},clearable:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},name:String,...t(["ariaLabel"])}),Pe={[o]:e=>s(e),[r]:e=>s(e),[i]:e=>s(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,select:e=>d(e)},Ne=["aria-expanded","aria-owns"],We={key:0},Ke=["id","aria-selected","onClick"],He="ElAutocomplete",Je=n({name:He,inheritAttrs:!1});const ze=N(D(n({...Je,props:Ie,emits:Pe,setup(e,{expose:l,emit:a}){const t=e,s=u(),d=c(),n=f(),D=p("autocomplete"),N=m(),W=m(),K=m(),H=m();let J=!1,z=!1;const Q=m([]),Y=m(-1),X=m(""),Z=m(!1),G=m(!1),ee=m(!1),le=h(),ae=g((()=>d.style)),te=g((()=>(Q.value.length>0||ee.value)&&Z.value)),oe=g((()=>!t.hideLoading&&ee.value)),se=g((()=>N.value?Array.from(N.value.$el.querySelectorAll("input")):[])),re=()=>{te.value&&(X.value=`${N.value.$el.offsetWidth}px`)},ie=()=>{Y.value=-1},de=De((async e=>{if(G.value)return;const l=e=>{ee.value=!1,G.value||(I(e)?(Q.value=e,Y.value=t.highlightFirstItem?0:-1):P(He,"autocomplete suggestions must be an array"))};if(ee.value=!0,I(t.fetchSuggestions))l(t.fetchSuggestions);else{const a=await t.fetchSuggestions(e,l);I(a)&&l(a)}}),t.debounce),ne=e=>{const l=!!e;if(a(r,e),a(o,e),G.value=!1,Z.value||(Z.value=l),!t.triggerOnFocus&&!e)return G.value=!0,void(Q.value=[]);de(e)},ue=e=>{var l;n.value||("INPUT"!==(null==(l=e.target)?void 0:l.tagName)||se.value.includes(document.activeElement))&&(Z.value=!0)},ce=e=>{a(i,e)},fe=e=>{z?z=!1:(Z.value=!0,a("focus",e),t.triggerOnFocus&&!J&&de(String(t.modelValue)))},pe=e=>{setTimeout((()=>{var l;(null==(l=K.value)?void 0:l.isFocusInsideContent())?z=!0:(Z.value&&be(),a("blur",e))}))},me=()=>{Z.value=!1,a(o,""),a("clear")},he=async()=>{te.value&&Y.value>=0&&Y.value{te.value&&(e.preventDefault(),e.stopPropagation(),be())},be=()=>{Z.value=!1},ye=async e=>{a(r,e[t.valueKey]),a(o,e[t.valueKey]),a("select",e),Q.value=[],Y.value=-1},ve=e=>{if(!te.value||ee.value)return;if(e<0)return void(Y.value=-1);e>=Q.value.length&&(e=Q.value.length-1);const l=W.value.querySelector(`.${D.be("suggestion","wrap")}`),a=l.querySelectorAll(`.${D.be("suggestion","list")} li`)[e],t=l.scrollTop,{offsetTop:o,scrollHeight:s}=a;o+s>t+l.clientHeight&&(l.scrollTop+=s),o{te.value&&be()})),y((()=>{N.value.ref.setAttribute("role","textbox"),N.value.ref.setAttribute("aria-autocomplete","list"),N.value.ref.setAttribute("aria-controls","id"),N.value.ref.setAttribute("aria-activedescendant",`${le.value}-item-${Y.value}`),J=N.value.ref.hasAttribute("readonly")})),l({highlightedIndex:Y,activated:Z,loading:ee,inputRef:N,popperRef:K,suggestions:Q,handleSelect:ye,handleKeyEnter:he,focus:()=>{var e;null==(e=N.value)||e.focus()},blur:()=>{var e;null==(e=N.value)||e.blur()},close:be,highlight:ve}),(e,l)=>(v(),C(V(Fe),{ref_key:"popperRef",ref:K,visible:V(te),placement:e.placement,"fallback-placements":["bottom-start","top-start"],"popper-class":[V(D).e("popper"),e.popperClass],teleported:e.teleported,"gpu-acceleration":!1,pure:"","manual-mode":"",effect:"light",trigger:"click",transition:`${V(D).namespace.value}-zoom-in-top`,persistent:"",role:"listbox",onBeforeShow:re,onHide:ie},{content:k((()=>[w("div",{ref_key:"regionRef",ref:W,class:E([V(D).b("suggestion"),V(D).is("loading",V(oe))]),style:_({[e.fitInputWidth?"width":"minWidth"]:X.value,outline:"none"}),role:"region"},[$(V(_e),{id:V(le),tag:"ul","wrap-class":V(D).be("suggestion","wrap"),"view-class":V(D).be("suggestion","list"),role:"listbox"},{default:k((()=>[V(oe)?(v(),F("li",We,[x(e.$slots,"loading",{},(()=>[$(V(L),{class:E(V(D).is("loading"))},{default:k((()=>[$(V(S))])),_:1},8,["class"])]))])):(v(!0),F(A,{key:1},U(Q.value,((l,a)=>(v(),F("li",{id:`${V(le)}-item-${a}`,key:a,class:E({highlighted:Y.value===a}),role:"option","aria-selected":Y.value===a,onClick:e=>ye(l)},[x(e.$slots,"default",{item:l},(()=>[j(T(l[e.valueKey]),1)]))],10,Ke)))),128))])),_:3},8,["id","wrap-class","view-class"])],6)])),default:k((()=>[w("div",{ref_key:"listboxRef",ref:H,class:E([V(D).b(),e.$attrs.class]),style:_(V(ae)),role:"combobox","aria-haspopup":"listbox","aria-expanded":V(te),"aria-owns":V(le)},[$(V(R),B({ref_key:"inputRef",ref:N},V(s),{clearable:e.clearable,disabled:V(n),name:e.name,"model-value":e.modelValue,"aria-label":e.ariaLabel,onInput:ne,onChange:ce,onFocus:fe,onBlur:pe,onClear:me,onKeydown:[l[0]||(l[0]=O(M((e=>ve(Y.value-1)),["prevent"]),["up"])),l[1]||(l[1]=O(M((e=>ve(Y.value+1)),["prevent"]),["down"])),O(he,["enter"]),O(be,["tab"]),O(ge,["esc"])],onMousedown:ue}),q({_:2},[e.$slots.prepend?{name:"prepend",fn:k((()=>[x(e.$slots,"prepend")]))}:void 0,e.$slots.append?{name:"append",fn:k((()=>[x(e.$slots,"append")]))}:void 0,e.$slots.prefix?{name:"prefix",fn:k((()=>[x(e.$slots,"prefix")]))}:void 0,e.$slots.suffix?{name:"suffix",fn:k((()=>[x(e.$slots,"suffix")]))}:void 0]),1040,["clearable","disabled","name","model-value","aria-label","onKeydown"])],14,Ne)])),_:3},8,["visible","placement","popper-class","teleported","transition"]))}}),[["__file","autocomplete.vue"]])),Qe="left-check-change",Ye="right-check-change",Xe=e({data:{type:l(Array),default:()=>[]},titles:{type:l(Array),default:()=>[]},buttonTexts:{type:l(Array),default:()=>[]},filterPlaceholder:String,filterMethod:{type:l(Function)},leftDefaultChecked:{type:l(Array),default:()=>[]},rightDefaultChecked:{type:l(Array),default:()=>[]},renderContent:{type:l(Function)},modelValue:{type:l(Array),default:()=>[]},format:{type:l(Object),default:()=>({})},filterable:Boolean,props:{type:l(Object),default:()=>W({label:"label",key:"key",disabled:"disabled"})},targetOrder:{type:String,values:["original","push","unshift"],default:"original"},validateEvent:{type:Boolean,default:!0}}),Ze=(e,l)=>[e,l].every(I)||I(e)&&K(l),Ge={[i]:(e,l,a)=>[e,a].every(I)&&["left","right"].includes(l),[o]:e=>I(e),[Qe]:Ze,[Ye]:Ze},el="checked-change",ll=e({data:Xe.data,optionRender:{type:l(Function)},placeholder:String,title:String,filterable:Boolean,format:Xe.format,filterMethod:Xe.filterMethod,defaultChecked:Xe.leftDefaultChecked,props:Xe.props}),al={[el]:Ze},tl=e=>{const l={label:"label",key:"key",disabled:"disabled"};return g((()=>({...l,...e.props})))},ol=n({name:"ElTransferPanel"});var sl=D(n({...ol,props:ll,emits:al,setup(e,{expose:l,emit:a}){const t=e,o=z(),s=({option:e})=>e,{t:r}=Q(),i=p("transfer"),d=Y({checked:[],allChecked:!1,query:"",checkChangeByUser:!0}),n=tl(t),{filteredData:u,checkedSummary:c,isIndeterminate:f,handleAllCheckedChange:m}=((e,l,a)=>{const t=tl(e),o=g((()=>e.data.filter((a=>H(e.filterMethod)?e.filterMethod(l.query,a):String(a[t.value.label]||a[t.value.key]).toLowerCase().includes(l.query.toLowerCase()))))),s=g((()=>o.value.filter((e=>!e[t.value.disabled])))),r=g((()=>{const a=l.checked.length,t=e.data.length,{noChecked:o,hasChecked:s}=e.format;return o&&s?a>0?s.replace(/\${checked}/g,a.toString()).replace(/\${total}/g,t.toString()):o.replace(/\${total}/g,t.toString()):`${a}/${t}`})),i=g((()=>{const e=l.checked.length;return e>0&&e{const e=s.value.map((e=>e[t.value.key]));l.allChecked=e.length>0&&e.every((e=>l.checked.includes(e)))};return J((()=>l.checked),((e,t)=>{if(d(),l.checkChangeByUser){const l=e.concat(t).filter((l=>!e.includes(l)||!t.includes(l)));a(el,e,l)}else a(el,e),l.checkChangeByUser=!0})),J(s,(()=>{d()})),J((()=>e.data),(()=>{const e=[],a=o.value.map((e=>e[t.value.key]));l.checked.forEach((l=>{a.includes(l)&&e.push(l)})),l.checkChangeByUser=!1,l.checked=e})),J((()=>e.defaultChecked),((e,a)=>{if(a&&e.length===a.length&&e.every((e=>a.includes(e))))return;const o=[],r=s.value.map((e=>e[t.value.key]));e.forEach((e=>{r.includes(e)&&o.push(e)})),l.checkChangeByUser=!1,l.checked=o}),{immediate:!0}),{filteredData:o,checkableData:s,checkedSummary:r,isIndeterminate:i,updateAllChecked:d,handleAllCheckedChange:e=>{l.checked=e?s.value.map((e=>e[t.value.key])):[]}}})(t,d,a),h=g((()=>!X(d.query)&&X(u.value))),b=g((()=>!X(o.default()[0].children))),{checked:y,allChecked:_,query:L}=Z(d);return l({query:L}),(e,l)=>(v(),F("div",{class:E(V(i).b("panel"))},[w("p",{class:E(V(i).be("panel","header"))},[$(V(xe),{modelValue:V(_),"onUpdate:modelValue":l[0]||(l[0]=e=>G(_)?_.value=e:null),indeterminate:V(f),"validate-event":!1,onChange:V(m)},{default:k((()=>[j(T(e.title)+" ",1),w("span",null,T(V(c)),1)])),_:1},8,["modelValue","indeterminate","onChange"])],2),w("div",{class:E([V(i).be("panel","body"),V(i).is("with-footer",V(b))])},[e.filterable?(v(),C(V(R),{key:0,modelValue:V(L),"onUpdate:modelValue":l[1]||(l[1]=e=>G(L)?L.value=e:null),class:E(V(i).be("panel","filter")),size:"default",placeholder:e.placeholder,"prefix-icon":V(ee),clearable:"","validate-event":!1},null,8,["modelValue","class","placeholder","prefix-icon"])):le("v-if",!0),ae($(V(Le),{modelValue:V(y),"onUpdate:modelValue":l[2]||(l[2]=e=>G(y)?y.value=e:null),"validate-event":!1,class:E([V(i).is("filterable",e.filterable),V(i).be("panel","list")])},{default:k((()=>[(v(!0),F(A,null,U(V(u),(l=>(v(),C(V(xe),{key:l[V(n).key],class:E(V(i).be("panel","item")),value:l[V(n).key],disabled:l[V(n).disabled],"validate-event":!1},{default:k((()=>{var a;return[$(s,{option:null==(a=e.optionRender)?void 0:a.call(e,l)},null,8,["option"])]})),_:2},1032,["class","value","disabled"])))),128))])),_:1},8,["modelValue","class"]),[[te,!V(h)&&!V(X)(e.data)]]),ae(w("p",{class:E(V(i).be("panel","empty"))},T(V(h)?V(r)("el.transfer.noMatch"):V(r)("el.transfer.noData")),3),[[te,V(h)||V(X)(e.data)]])],2),V(b)?(v(),F("p",{key:0,class:E(V(i).be("panel","footer"))},[x(e.$slots,"default")],2)):le("v-if",!0)],2))}}),[["__file","transfer-panel.vue"]]);const rl={key:0},il={key:0},dl=n({name:"ElTransfer"});const nl=N(D(n({...dl,props:Xe,emits:Ge,setup(e,{expose:l,emit:a}){const t=e,s=z(),{t:r}=Q(),d=p("transfer"),{formItem:n}=oe(),u=Y({leftChecked:[],rightChecked:[]}),c=tl(t),{sourceData:f,targetData:h}=(e=>{const l=tl(e),a=g((()=>e.data.reduce(((e,a)=>(e[a[l.value.key]]=a)&&e),{})));return{sourceData:g((()=>e.data.filter((a=>!e.modelValue.includes(a[l.value.key]))))),targetData:g((()=>"original"===e.targetOrder?e.data.filter((a=>e.modelValue.includes(a[l.value.key]))):e.modelValue.reduce(((e,l)=>{const t=a.value[l];return t&&e.push(t),e}),[])))}})(t),{onSourceCheckedChange:b,onTargetCheckedChange:y}=((e,l)=>({onSourceCheckedChange:(a,t)=>{e.leftChecked=a,t&&l(Qe,a,t)},onTargetCheckedChange:(a,t)=>{e.rightChecked=a,t&&l(Ye,a,t)}}))(u,a),{addToLeft:C,addToRight:_}=((e,l,a)=>{const t=tl(e),s=(e,l,t)=>{a(o,e),a(i,e,l,t)};return{addToLeft:()=>{const a=e.modelValue.slice();l.rightChecked.forEach((e=>{const l=a.indexOf(e);l>-1&&a.splice(l,1)})),s(a,"left",l.rightChecked)},addToRight:()=>{let a=e.modelValue.slice();const o=e.data.filter((a=>{const o=a[t.value.key];return l.leftChecked.includes(o)&&!e.modelValue.includes(o)})).map((e=>e[t.value.key]));a="unshift"===e.targetOrder?o.concat(a):a.concat(o),"original"===e.targetOrder&&(a=e.data.filter((e=>a.includes(e[t.value.key]))).map((e=>e[t.value.key]))),s(a,"right",l.leftChecked)}}})(t,u,a),S=m(),A=m(),U=g((()=>2===t.buttonTexts.length)),j=g((()=>t.titles[0]||r("el.transfer.titles.0"))),R=g((()=>t.titles[1]||r("el.transfer.titles.1"))),B=g((()=>t.filterPlaceholder||r("el.transfer.filterPlaceholder")));J((()=>t.modelValue),(()=>{var e;t.validateEvent&&(null==(e=null==n?void 0:n.validate)||e.call(n,"change").catch((e=>se())))}));const O=g((()=>e=>t.renderContent?t.renderContent(re,e):s.default?s.default({option:e}):re("span",e[c.value.label]||e[c.value.key])));return l({clearQuery:e=>{switch(e){case"left":S.value.query="";break;case"right":A.value.query=""}},leftPanel:S,rightPanel:A}),(e,l)=>(v(),F("div",{class:E(V(d).b())},[$(sl,{ref_key:"leftPanel",ref:S,data:V(f),"option-render":V(O),placeholder:V(B),title:V(j),filterable:e.filterable,format:e.format,"filter-method":e.filterMethod,"default-checked":e.leftDefaultChecked,props:t.props,onCheckedChange:V(b)},{default:k((()=>[x(e.$slots,"left-footer")])),_:3},8,["data","option-render","placeholder","title","filterable","format","filter-method","default-checked","props","onCheckedChange"]),w("div",{class:E(V(d).e("buttons"))},[$(V(ne),{type:"primary",class:E([V(d).e("button"),V(d).is("with-texts",V(U))]),disabled:V(X)(u.rightChecked),onClick:V(C)},{default:k((()=>[$(V(L),null,{default:k((()=>[$(V(ie))])),_:1}),V(de)(e.buttonTexts[0])?le("v-if",!0):(v(),F("span",rl,T(e.buttonTexts[0]),1))])),_:1},8,["class","disabled","onClick"]),$(V(ne),{type:"primary",class:E([V(d).e("button"),V(d).is("with-texts",V(U))]),disabled:V(X)(u.leftChecked),onClick:V(_)},{default:k((()=>[V(de)(e.buttonTexts[1])?le("v-if",!0):(v(),F("span",il,T(e.buttonTexts[1]),1)),$(V(L),null,{default:k((()=>[$(V(ue))])),_:1})])),_:1},8,["class","disabled","onClick"])],2),$(sl,{ref_key:"rightPanel",ref:A,data:V(h),"option-render":V(O),placeholder:V(B),filterable:e.filterable,format:e.format,"filter-method":e.filterMethod,title:V(R),"default-checked":e.rightDefaultChecked,props:t.props,onCheckedChange:V(y)},{default:k((()=>[x(e.$slots,"right-footer")])),_:3},8,["data","option-render","placeholder","filterable","format","filter-method","title","default-checked","props","onCheckedChange"])],2))}}),[["__file","transfer.vue"]])),ul={id:0,ip:"http://127.0.0.1:9200",remark:"",version:6},cl={class:"app-container"},fl={class:"search-container"};const pl=Me({components:{EsHeader:Oe},data:()=>({managerFormdialogVisible:!1,refreshTable:!0,default_expand_all:!1,getListLoading:!1,usernameWord:[{value:"elastic"}],testConnectLoading:!1,connectLoading:!1,link:Object.assign({},ul),list:[],dialogVisible:!1,dialogType:"new",dialogAddCfgVisible:!1,dialogEditCfgVisible:!1,addEsCfgForm:{es_link_id:0,user:"",pwd:"",remark:"",rootpem:"",certpem:"",keypem:"",share_roles:[],header:[]},editEsCfgForm:{linkId:0,id:0,user:"",pwd:"",remark:"",rootpem:"",certpem:"",keypem:"",share_roles:[],header:[]},selectEsLinkId:0,selectEsVersion:0,selectEsIp:"",roleMap:{},roleList:[],allRoleConfig:[]}),setup:()=>({View:ce}),computed:{},async created(){await this.initAllRoles(),this.getList()},methods:{filterMethod:(e,l)=>l.label.indexOf(e)>-1,async initAllRoles(){const e=await fe();if(0==e.code){null==e.data&&(e.data=[]),this.roleMap={};for(let l of e.data)this.roleMap[l.id]=l.name;this.roleList=e.data}else pe.error({type:"error",message:e.msg})},querySearch(e,l){var a=this.usernameWord;l(e?a.filter(this.createFilter(e)):a)},createFilter:e=>l=>0===l.value.toLowerCase().indexOf(e.toLowerCase()),testConnectForm(e){this.testConnectLoading=!0,e.ip=this.selectEsIp,e.version=this.selectEsVersion,Be(e).then((e=>{0==e.code?pe.success({type:"success",message:"连接成功"}):pe.error({type:"error",message:e.msg}),this.testConnectLoading=!1})).catch((e=>{this.testConnectLoading=!1}))},testConnect(e){this.list[e.$index].connectLoading=!0,Be({ip:e.row.ip,user:e.row.user,pwd:e.row.pwd,version:e.row.version,rootpem:e.row.rootpem,certpem:e.row.certpem,keypem:e.row.keypem}).then((l=>{0==l.code?(console.log("res",l),pe.success({type:"success",message:"连接成功"})):pe.error({type:"error",message:l.msg}),this.list[e.$index].connectLoading=!1})).catch((l=>{this.list[e.$index].connectLoading=!1}))},async getList(){this.getListLoading=!0;const e=await me();this.getListLoading=!1,0==e.code?(pe.success({type:"success",message:e.msg}),this.list=e.data,this.refreshTable=!1,this.$nextTick((()=>{this.refreshTable=!0}))):pe.error({type:"error",message:e.msg})},handleAddRole(){this.link=Object.assign({},ul),this.dialogType="new",this.dialogVisible=!0},handleEdit(e){this.dialogType="edit",this.dialogVisible=!0,this.checkStrictly=!0,this.link=Re(e.row),this.link.pwd=""},handleAddEsCfg(){this.addEsCfgForm.share_roles=[],this.allRoleConfig=[];for(let e of this.roleList){const l={label:e.name,key:e.id.toString(),disabled:!1};this.allRoleConfig.push(l)}this.dialogAddCfgVisible=!0},handleEditEsCfg(e){this.editEsCfgForm.id=e.row.id,this.editEsCfgForm.user=e.row.user,this.editEsCfgForm.pwd=e.row.pwd,this.editEsCfgForm.remark=e.row.remark,this.editEsCfgForm.certpem=e.row.certpem,this.editEsCfgForm.keypem=e.row.keypem,this.editEsCfgForm.rootpem=e.row.rootpem,this.editEsCfgForm.share_roles=e.row.share_roles,this.editEsCfgForm.header=e.row.header,this.allRoleConfig=[];for(let l of this.roleList){const e={label:l.name,key:l.id.toString(),disabled:!1};this.allRoleConfig.push(e)}this.dialogEditCfgVisible=!0},async confirmEditEsCfg(){let e=JSON.parse(JSON.stringify(this.editEsCfgForm)),l=await he(e);0==l.code?(pe.success({type:"success",message:l.msg}),this.getList(),this.dialogEditCfgVisible=!1):pe.error({type:"error",message:l.msg})},async confirmEsCfg(){let e=JSON.parse(JSON.stringify(this.addEsCfgForm)),l=await ge(e);0==l.code?(pe.success({type:"success",message:l.msg}),this.getList(),this.dialogAddCfgVisible=!1):pe.error({type:"error",message:l.msg})},async deleteEsCfgAction(e){let l=await be({id:e.row.id});0==l.code?(pe.success({type:"success",message:l.msg}),this.getList()):pe.error({type:"error",message:l.msg})},handleDelete({$index:e,row:l}){ye.confirm("确定删除该连接信息吗?","警告",{confirmButtonText:"确认",cancelButtonText:"取消",type:"warning"}).then((async()=>{const e=await ve({id:l.id});0==e.code?this.getList():pe.error({type:"error",message:e.msg})})).catch((e=>{console.error(e)}))},async confirm(){const e="edit"===this.dialogType;if(e){const e=await Ce(this.link);if(0!=e.code)return void pe.error({type:"error",message:e.msg});this.getList()}else{const e=await ke(this.link);if(0!=e.code)return void pe.error({type:"error",message:e.msg});this.getList()}this.dialogVisible=!1,pe.success({type:"success",message:e?"修改成功":"创建成功"})}}},[["render",function(e,l,a,t,o,s){const r=ne,i=je,d=Te,n=Ae,u=qe,c=Ue,f=Se,p=R,m=nl,h=ze,g=we("es-header"),b=Ve,y=Ee;return v(),F("div",cl,[w("div",fl,[$(d,{inline:!0},{default:k((()=>[$(i,{label:""},{default:k((()=>[$(r,{type:"success",class:"filter-item",onClick:s.getList},{default:k((()=>[j(T(e.$t("搜索")),1)])),_:1},8,["onClick"])])),_:1}),$(i,{label:""},{default:k((()=>[$(r,{type:"primary",class:"filter-item",onClick:s.handleAddEsCfg},{default:k((()=>[j(T(e.$t("新建鉴权信息")),1)])),_:1},8,["onClick"])])),_:1})])),_:1})]),$(f,{shadow:"never",class:"table-container"},{default:k((()=>[o.refreshTable?ae((v(),C(c,{key:0,data:o.list},{default:k((()=>[$(n,{label:e.$t("备注"),align:"center"},{default:k((e=>[j(T(e.row.remark),1)])),_:1},8,["label"]),$(n,{align:"center",label:e.$t("已分配角色"),width:"200"},{default:k((e=>[(v(!0),F(A,null,U(e.row.share_roles,((e,l)=>(v(),C(u,null,{default:k((()=>[j(T(o.roleMap[e]),1)])),_:2},1024)))),256))])),_:1},8,["label"]),$(n,{align:"center",label:e.$t("用户名"),width:"200"},{default:k((e=>[j(T(e.row.user),1)])),_:1},8,["label"]),$(n,{align:"center",label:e.$t("root证书"),width:"100","show-overflow-tooltip":""},{default:k((e=>[j(T(e.row.rootpem),1)])),_:1},8,["label"]),$(n,{align:"center",label:e.$t("cert证书"),width:"100","show-overflow-tooltip":""},{default:k((e=>[j(T(e.row.certpem),1)])),_:1},8,["label"]),$(n,{align:"center",label:e.$t("key证书"),width:"100","show-overflow-tooltip":""},{default:k((e=>[j(T(e.row.keypem),1)])),_:1},8,["label"]),$(n,{align:"center",label:e.$t("创建时间"),width:"220"},{default:k((e=>[j(T(e.row.created),1)])),_:1},8,["label"]),$(n,{align:"center",label:e.$t("修改时间"),width:"220"},{default:k((e=>[j(T(e.row.updated),1)])),_:1},8,["label"]),$(n,{align:"center",label:e.$t("操作"),fixed:"right",width:"200"},{default:k((l=>[$(r,{type:"primary",onClick:e=>s.handleEditEsCfg(l)},{default:k((()=>[j(T(e.$t("编辑")),1)])),_:2},1032,["onClick"]),$(r,{type:"danger",onClick:e=>s.deleteEsCfgAction(l)},{default:k((()=>[j(T(e.$t("删除")),1)])),_:2},1032,["onClick"])])),_:1},8,["label"])])),_:1},8,["data"])),[[y,o.getListLoading]]):le("",!0)])),_:1}),$(b,{size:"80%",modelValue:o.dialogAddCfgVisible,"onUpdate:modelValue":l[9]||(l[9]=e=>o.dialogAddCfgVisible=e),title:e.$t("新建鉴权配置")},{footer:k((()=>[$(r,{type:"danger",onClick:l[8]||(l[8]=e=>o.dialogAddCfgVisible=!1)},{default:k((()=>[j(T(e.$t("取消")),1)])),_:1}),$(r,{type:"primary",onClick:s.confirmEsCfg},{default:k((()=>[j(T(e.$t("确认")),1)])),_:1},8,["onClick"])])),default:k((()=>[$(d,{model:o.addEsCfgForm,"label-width":"100px","label-position":"left"},{default:k((()=>[$(i,{label:e.$t("备注")},{default:k((()=>[$(p,{clearable:"",modelValue:o.addEsCfgForm.remark,"onUpdate:modelValue":l[0]||(l[0]=e=>o.addEsCfgForm.remark=e),placeholder:e.$t("备注")},null,8,["modelValue","placeholder"])])),_:1},8,["label"]),$(i,{label:e.$t("可访问集群成员")},{default:k((()=>[o.addEsCfgForm?(v(),C(m,{key:0,onChange:e.changeShareRoles,modelValue:o.addEsCfgForm.share_roles,"onUpdate:modelValue":l[1]||(l[1]=e=>o.addEsCfgForm.share_roles=e),titles:["全部角色","当前集群角色"],"button-texts":["移除角色","添加角色"],filterable:"","filter-method":s.filterMethod,"filter-placeholder":"请操作角色",data:o.allRoleConfig},null,8,["onChange","modelValue","filter-method","data"])):le("",!0)])),_:1},8,["label"]),$(i,{label:e.$t("用户名")},{default:k((()=>[$(h,{modelValue:o.addEsCfgForm.user,"onUpdate:modelValue":l[2]||(l[2]=e=>o.addEsCfgForm.user=e),clearable:"","fetch-suggestions":s.querySearch,placeholder:e.$t("用户名")},{default:k((({item:e})=>[w("span",null,T(e.value),1)])),_:1},8,["modelValue","fetch-suggestions","placeholder"])])),_:1},8,["label"]),$(i,{label:e.$t("密码")},{default:k((()=>[$(p,{"show-password":"",type:"password",clearable:"",modelValue:o.addEsCfgForm.pwd,"onUpdate:modelValue":l[3]||(l[3]=e=>o.addEsCfgForm.pwd=e),placeholder:e.$t("密码")},null,8,["modelValue","placeholder"])])),_:1},8,["label"]),$(i,{label:e.$t("root证书")},{default:k((()=>[$(p,{clearable:"",modelValue:o.addEsCfgForm.rootpem,"onUpdate:modelValue":l[4]||(l[4]=e=>o.addEsCfgForm.rootpem=e),type:"textarea",placeholder:e.$t("root证书")},null,8,["modelValue","placeholder"])])),_:1},8,["label"]),$(i,{label:e.$t("cert证书")},{default:k((()=>[$(p,{clearable:"",modelValue:o.addEsCfgForm.certpem,"onUpdate:modelValue":l[5]||(l[5]=e=>o.addEsCfgForm.certpem=e),type:"textarea",placeholder:e.$t("cert证书")},null,8,["modelValue","placeholder"])])),_:1},8,["label"]),$(i,{label:e.$t("key证书")},{default:k((()=>[$(p,{clearable:"",modelValue:o.addEsCfgForm.keypem,"onUpdate:modelValue":l[6]||(l[6]=e=>o.addEsCfgForm.keypem=e),type:"textarea",placeholder:e.$t("key证书")},null,8,["modelValue","placeholder"])])),_:1},8,["label"]),$(i,{label:e.$t("自定义请求头")},{default:k((()=>[$(g,{style:{width:"100%"},modelValue:o.addEsCfgForm.header,"onUpdate:modelValue":l[7]||(l[7]=e=>o.addEsCfgForm.header=e)},null,8,["modelValue"])])),_:1},8,["label"])])),_:1},8,["model"])])),_:1},8,["modelValue","title"]),$(b,{size:"80%",modelValue:o.dialogEditCfgVisible,"onUpdate:modelValue":l[19]||(l[19]=e=>o.dialogEditCfgVisible=e),title:e.$t("编辑鉴权配置")},{footer:k((()=>[$(r,{type:"danger",onClick:l[18]||(l[18]=e=>o.dialogEditCfgVisible=!1)},{default:k((()=>[j(T(e.$t("取消")),1)])),_:1}),$(r,{type:"primary",onClick:s.confirmEditEsCfg},{default:k((()=>[j(T(e.$t("确认")),1)])),_:1},8,["onClick"])])),default:k((()=>[$(d,{model:o.editEsCfgForm,"label-width":"200px","label-position":"left"},{default:k((()=>[$(i,{label:e.$t("备注")},{default:k((()=>[$(p,{clearable:"",modelValue:o.editEsCfgForm.remark,"onUpdate:modelValue":l[10]||(l[10]=e=>o.editEsCfgForm.remark=e),placeholder:e.$t("备注")},null,8,["modelValue","placeholder"])])),_:1},8,["label"]),$(i,{label:e.$t("用户名")},{default:k((()=>[$(h,{modelValue:o.editEsCfgForm.user,"onUpdate:modelValue":l[11]||(l[11]=e=>o.editEsCfgForm.user=e),clearable:"","fetch-suggestions":s.querySearch,placeholder:e.$t("用户名")},{default:k((({item:e})=>[w("span",null,T(e.value),1)])),_:1},8,["modelValue","fetch-suggestions","placeholder"])])),_:1},8,["label"]),$(i,{label:e.$t("密码")},{default:k((()=>[$(p,{"show-password":"",type:"password",clearable:"",modelValue:o.editEsCfgForm.pwd,"onUpdate:modelValue":l[12]||(l[12]=e=>o.editEsCfgForm.pwd=e),placeholder:e.$t("密码")},null,8,["modelValue","placeholder"])])),_:1},8,["label"]),$(i,{label:e.$t("可访问集群成员")},{default:k((()=>[o.dialogEditCfgVisible?(v(),C(m,{key:0,onChange:e.changeShareRoles,modelValue:o.editEsCfgForm.share_roles,"onUpdate:modelValue":l[13]||(l[13]=e=>o.editEsCfgForm.share_roles=e),titles:["全部角色","当前集群角色"],"button-texts":["移除角色","添加角色"],filterable:"","filter-method":s.filterMethod,"filter-placeholder":"请操作角色",data:o.allRoleConfig},null,8,["onChange","modelValue","filter-method","data"])):le("",!0)])),_:1},8,["label"]),$(i,{label:e.$t("root证书")},{default:k((()=>[$(p,{clearable:"",modelValue:o.editEsCfgForm.rootpem,"onUpdate:modelValue":l[14]||(l[14]=e=>o.editEsCfgForm.rootpem=e),type:"textarea",placeholder:e.$t("root证书")},null,8,["modelValue","placeholder"])])),_:1},8,["label"]),$(i,{label:e.$t("cert证书")},{default:k((()=>[$(p,{clearable:"",modelValue:o.editEsCfgForm.certpem,"onUpdate:modelValue":l[15]||(l[15]=e=>o.editEsCfgForm.certpem=e),type:"textarea",placeholder:e.$t("cert证书")},null,8,["modelValue","placeholder"])])),_:1},8,["label"]),$(i,{label:e.$t("key证书")},{default:k((()=>[$(p,{clearable:"",modelValue:o.editEsCfgForm.keypem,"onUpdate:modelValue":l[16]||(l[16]=e=>o.editEsCfgForm.keypem=e),type:"textarea",placeholder:e.$t("key证书")},null,8,["modelValue","placeholder"])])),_:1},8,["label"]),$(i,{label:e.$t("自定义请求头")},{default:k((()=>[$(g,{style:{width:"100%"},modelValue:o.editEsCfgForm.header,"onUpdate:modelValue":l[17]||(l[17]=e=>o.editEsCfgForm.header=e)},null,8,["modelValue"])])),_:1},8,["label"])])),_:1},8,["model"])])),_:1},8,["modelValue","title"])])}]]);export{pl as default}; diff --git a/resources/views/dist/js/backtop.C5bGCvZX.js b/resources/views/dist/js/backtop.C5bGCvZX.js new file mode 100644 index 0000000..5b92d12 --- /dev/null +++ b/resources/views/dist/js/backtop.C5bGCvZX.js @@ -0,0 +1 @@ +const a="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%3e%3cpath%20fill='none'%20d='M0%200h24v24H0z'/%3e%3cpath%20d='M2.88%2018.054a35.9%2035.9%200%200%201%208.531-16.32.8.8%200%200%201%201.178%200q.25.27.413.455a35.9%2035.9%200%200%201%208.118%2015.865c-2.141.451-4.34.747-6.584.874l-2.089%204.178a.5.5%200%200%201-.894%200l-2.089-4.178a44%2044%200%200%201-6.584-.874m6.698-1.123%201.157.066L12%2019.527l1.265-2.53%201.157-.066a42%2042%200%200%200%204.227-.454A33.9%2033.9%200%200%200%2012%204.09a33.9%2033.9%200%200%200-6.649%2012.387q2.093.334%204.227.454M12%2015a3%203%200%201%201%200-6%203%203%200%200%201%200%206m0-2a1%201%200%201%200%200-2%201%201%200%200%200%200%202'/%3e%3c/svg%3e";export{a as default}; diff --git a/resources/views/dist/js/captcha.KixZeTLs.js b/resources/views/dist/js/captcha.KixZeTLs.js new file mode 100644 index 0000000..6e19d43 --- /dev/null +++ b/resources/views/dist/js/captcha.KixZeTLs.js @@ -0,0 +1 @@ +const c="data:image/svg+xml,%3csvg%20class='icon'%20viewBox='0%200%201024%201024'%20xmlns='http://www.w3.org/2000/svg'%20width='200'%20height='200'%3e%3cpath%20d='M917.6%20267.2c-36.1-2.5-72.4-9.3-103.6-19.3-10.1-3-20.2-6.4-30.3-10-21.4-6.3-50.5-18.8-83.6-36.6-.4-.2-.7-.4-1.1-.6-7.8-4.2-15.7-8.7-23.8-13.4-10.9-6.3-21.7-12.9-32.5-19.9-.4-.3-.8-.5-1.2-.8-7.7-5-15.5-10.2-23.1-15.5-5-3.4-10-7.1-15-10.7-3.8-2.8-7.5-5.3-11.3-8.2-27.4-20.5-54.5-43.5-79.9-68.3-25.4%2024.8-52.5%2047.8-79.9%2068.3-3.7%202.8-7.5%205.4-11.3%208.2-5%203.6-10%207.3-15%2010.7-7.7%205.4-15.4%2010.5-23.1%2015.5-.4.3-.8.5-1.2.8-10.8%206.9-21.6%2013.6-32.5%2019.9-8.1%204.7-16%209.2-23.8%2013.4-.3.2-.7.4-1%20.6-33%2017.8-62.2%2030.3-83.6%2036.6-10.1%203.6-20.2%207-30.3%2010-31.1%2010-67.4%2016.8-103.6%2019.3h.1c1.1%2016.2%202.1%2037.7%203.4%2060.9h.7c6.1%2086.8%2023.5%20210.2%2049.7%20282.8%201.2%203.2%202.2%206.5%203.3%209.6.6%201.5%201.2%202.8%201.8%204.3%2062.8%20162.1%20171.9%20280.1%20303%20323.4v.4c17.3%205.7%2031.9%209.3%2043.5%2011.5%2011.5-2.2%2026.1-5.8%2043.5-11.5v-.4C687%20905%20796.1%20787%20858.9%20624.8c.6-1.5%201.2-2.8%201.8-4.3%201.2-3.1%202.2-6.4%203.3-9.6%2026.2-72.5%2043.6-196%2049.7-282.8h.7c1.1-23.3%202.2-44.7%203.2-60.9zm-47.4%2041.9-.5%209.5c-.5%202.2-.9%204.4-1%206.6C863%20406%20847%20525.7%20821.3%20596.7c-.7%201.9-1.4%203.9-2%205.8-.4%201.2-.8%202.5-1.4%204.1-.5%201.2-1%202.5-1.4%203.4C758.1%20760.8%20657.7%20869.3%20541%20907.8c-1.9.6-3.7%201.4-5.5%202.2-7.9%202.5-15.7%204.6-23.2%206.3-7.5-1.7-15.2-3.8-23.1-6.3-1.8-.9-3.6-1.6-5.5-2.2-116.7-38.5-217.1-147-275.4-297.5-.5-1.2-.9-2.4-1.7-4.1-.4-1.2-.8-2.4-1.3-3.6-.7-2-1.3-3.9-1.9-5.6-25.8-71.2-41.7-191-47.4-271.7-.2-2.3-.5-4.5-1-6.6l-.5-9.3c-.1-1.5-.2-3-.2-4.5%2024.6-3.8%2048.4-9.3%2070-16.2%2010.1-3%2020.4-6.4%2031.4-10.4%2025.2-7.6%2056.5-21.2%2090.5-39.6.6-.3%201.2-.6%201.7-.9%208.2-4.4%2016.7-9.2%2024.8-14%2010.7-6.1%2022-13%2034.5-21.1.4-.2%201-.6%201.3-.8%208.2-5.3%2016.4-10.8%2024.1-16.2%204.5-3.1%209.1-6.4%2013.7-9.7l2.4-1.8%204-2.9c2.6-1.9%205.2-3.7%207.5-5.5%2017.9-13.4%2035.3-27.5%2052-42.1%2016.7%2014.7%2034%2028.7%2051.8%2042%202.6%201.9%205.1%203.8%207.7%205.6l4.3%203.1%201.5%201.1c4.8%203.5%209.6%206.9%2014%209.9%208.1%205.7%2016.3%2011.2%2023.7%2016l2.1%201.3c12.4%208%2023.7%2014.9%2034.1%2020.8%208.6%205%2017%209.8%2025%2014.1.4.2%201%20.5%201.5.8%2034.2%2018.4%2065.6%2032.1%2090.9%2039.7%2011%203.9%2021.3%207.3%2030.6%2010.1%2022.1%207.1%2046.1%2012.6%2070.8%2016.5.1%201.5.1%203%200%204.4z'/%3e%3cpath%20d='M710.6%20411.2%20476.1%20651.6l-120-123c-8.3-8.5-21.8-8.5-30.1%200s-8.3%2022.3%200%2030.9L461.1%20698c4.2%204.3%209.6%206.4%2015.1%206.4%205.4%200%2010.9-2.1%2015-6.4l249.5-255.7c8.3-8.5%208.3-22.3%200-30.9-8.3-8.7-21.8-8.7-30.1-.2z'/%3e%3c/svg%3e";export{c as default}; diff --git a/resources/views/dist/js/cascader.Bxy7lIuJ.js b/resources/views/dist/js/cascader.Bxy7lIuJ.js new file mode 100644 index 0000000..aac6d7f --- /dev/null +++ b/resources/views/dist/js/cascader.Bxy7lIuJ.js @@ -0,0 +1 @@ +const c="data:image/svg+xml,%3csvg%20class='icon'%20viewBox='0%200%201024%201024'%20xmlns='http://www.w3.org/2000/svg'%20width='200'%20height='200'%3e%3cpath%20d='M832.128%20768c33.195%200%2060.501%2025.173%2063.573%2057.813L896%20832a64%2064%200%200%201-63.872%2064H533.205a63.787%2063.787%200%200%201-63.872-64%2064%2064%200%200%201%2063.872-64h298.923zM213.333%20874.667c-23.722%200-42.666-19.072-42.666-42.624V362.667A42.667%2042.667%200%200%201%20213.333%20320l4.992.299C239.66%20322.73%20256%20340.779%20256%20362.624l-.043%20128.043h128.299c21.248%200%2039.595%2016.469%2042.112%2037.674l.299%204.992-.299%204.992A42.368%2042.368%200%200%201%20384.256%20576H256l.043%20213.333h128.256c22.869%200%2042.41%2019.115%2042.41%2042.667l-.298%204.992a42.368%2042.368%200%200%201-42.112%2037.675zm618.795-405.334c33.195%200%2060.501%2025.174%2063.573%2057.814l.299%206.186a64%2064%200%200%201-63.872%2064H533.205a63.787%2063.787%200%200%201-63.872-64%2064%2064%200%200%201%2063.872-64h298.923zM576.171%20128c33.194%200%2060.458%2025.173%2063.573%2057.813L640%20192c0%2035.328-29.013%2064-63.83%2064H191.83A63.744%2063.744%200%200%201%20128%20192c0-35.328%2029.013-64%2063.83-64h384.34z'/%3e%3c/svg%3e";export{c as default}; diff --git a/resources/views/dist/js/castArray.arHVDzqw.js b/resources/views/dist/js/castArray.arHVDzqw.js new file mode 100644 index 0000000..0589592 --- /dev/null +++ b/resources/views/dist/js/castArray.arHVDzqw.js @@ -0,0 +1 @@ +import{cG as r}from"./index.DMBpWXpT.js";function n(){if(!arguments.length)return[];var n=arguments[0];return r(n)?n:[n]}export{n as c}; diff --git a/resources/views/dist/js/client.fwafuIJ_.js b/resources/views/dist/js/client.fwafuIJ_.js new file mode 100644 index 0000000..c4d2caf --- /dev/null +++ b/resources/views/dist/js/client.fwafuIJ_.js @@ -0,0 +1 @@ +const c="data:image/svg+xml,%3csvg%20class='icon'%20viewBox='0%200%201024%201024'%20xmlns='http://www.w3.org/2000/svg'%20width='200'%20height='200'%3e%3cpath%20d='M962.184%2055.874H61.818C27.732%2055.874%200%2083.606%200%20117.692v621.64c0%2034.086%2027.732%2061.818%2061.818%2061.818h308.52v44.98c0%2041.234-33.547%2074.782-74.781%2074.782h-67.995c-13.036%200-23.606%2010.568-23.606%2023.606%200%2013.038%2010.57%2023.606%2023.606%2023.606h568.874c13.036%200%2023.606-10.568%2023.606-23.606%200-13.038-10.57-23.606-23.606-23.606h-67.997c-41.234%200-74.782-33.548-74.782-74.782v-44.978h308.52c34.087%200%2061.821-27.732%2061.821-61.819v-621.64c.004-34.087-27.728-61.819-61.814-61.819zM391.84%20920.916c16.092-20.672%2025.714-46.616%2025.714-74.782v-44.98h188.894v44.98c0%2028.166%209.622%2054.112%2025.714%2074.782H391.841zm584.95-181.583c0%208.054-6.552%2014.608-14.608%2014.608H61.818c-8.054%200-14.608-6.552-14.608-14.608V615.267h929.58v124.066zm0-171.28H47.212v-450.36c0-8.055%206.552-14.609%2014.608-14.609h900.362c8.054%200%2014.61%206.552%2014.61%2014.608v450.361z'/%3e%3cpath%20d='M486.531%20684.611a25.476%2025.476%200%201%200%2050.952%200%2025.476%2025.476%200%201%200-50.952%200zm65.946-466.103c-9.22-9.218-24.162-9.218-33.386%200L352.263%20385.337c-9.218%209.218-9.218%2024.166%200%2033.386a23.534%2023.534%200%200%200%2016.694%206.914%2023.526%2023.526%200%200%200%2016.692-6.914l166.828-166.829c9.218-9.218%209.218-24.166%200-33.386zm98.88%2096.679c-9.216-9.218-24.158-9.218-33.384-.002l-66.46%2066.456c-9.218%209.22-9.218%2024.168%200%2033.386a23.53%2023.53%200%200%200%2016.692%206.914c6.04%200%2012.082-2.304%2016.692-6.914l66.46-66.456c9.218-9.218%209.218-24.166%200-33.384z'/%3e%3c/svg%3e";export{c as default}; diff --git a/resources/views/dist/js/close.3A3CTE27.js b/resources/views/dist/js/close.3A3CTE27.js new file mode 100644 index 0000000..958fe1b --- /dev/null +++ b/resources/views/dist/js/close.3A3CTE27.js @@ -0,0 +1 @@ +const e="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20aria-hidden='true'%20width='1em'%20height='1em'%20viewBox='0%200%2036%2036'%3e%3cpath%20d='m19.41%2018%208.29-8.29a1%201%200%200%200-1.41-1.41L18%2016.59l-8.29-8.3a1%201%200%200%200-1.42%201.42l8.3%208.29-8.3%208.29A1%201%200%201%200%209.7%2027.7l8.3-8.29%208.29%208.29a1%201%200%200%200%201.41-1.41z'%20fill='currentColor'/%3e%3c/svg%3e";export{e as default}; diff --git a/resources/views/dist/js/close_all.CpAPdWg9.js b/resources/views/dist/js/close_all.CpAPdWg9.js new file mode 100644 index 0000000..c5fd1ad --- /dev/null +++ b/resources/views/dist/js/close_all.CpAPdWg9.js @@ -0,0 +1 @@ +const e="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20aria-hidden='true'%20width='1em'%20height='1em'%20viewBox='0%200%2036%2036'%3e%3cpath%20d='M26%2017H10a1%201%200%200%200%200%202h16a1%201%200%200%200%200-2z'%20fill='currentColor'/%3e%3c/svg%3e";export{e as default}; diff --git a/resources/views/dist/js/close_left.FPCWsnfT.js b/resources/views/dist/js/close_left.FPCWsnfT.js new file mode 100644 index 0000000..00ffdf2 --- /dev/null +++ b/resources/views/dist/js/close_left.FPCWsnfT.js @@ -0,0 +1 @@ +const e="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20aria-hidden='true'%20width='1em'%20height='1em'%20viewBox='0%200%2024%2024'%3e%3cg%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%3e%3cpath%20d='m7%2012%207%207m-7-7%207-7'%20stroke-linejoin='round'/%3e%3cpath%20d='M21%2012H7.5'/%3e%3cpath%20d='M3%203v18'%20stroke-linejoin='round'/%3e%3c/g%3e%3c/svg%3e";export{e as default}; diff --git a/resources/views/dist/js/close_other.CtMgS35C.js b/resources/views/dist/js/close_other.CtMgS35C.js new file mode 100644 index 0000000..ef2e7d5 --- /dev/null +++ b/resources/views/dist/js/close_other.CtMgS35C.js @@ -0,0 +1 @@ +const e="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20aria-hidden='true'%20width='1em'%20height='1em'%20viewBox='0%200%2020%2020'%3e%3cpath%20d='M3%205h14V3H3v2zm12%208V7H5v6h10zM3%2017h14v-2H3v2z'%20fill='currentColor'/%3e%3c/svg%3e";export{e as default}; diff --git a/resources/views/dist/js/close_right.WYLOaSAD.js b/resources/views/dist/js/close_right.WYLOaSAD.js new file mode 100644 index 0000000..b5eaeb9 --- /dev/null +++ b/resources/views/dist/js/close_right.WYLOaSAD.js @@ -0,0 +1 @@ +const e="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20aria-hidden='true'%20width='1em'%20height='1em'%20viewBox='0%200%2024%2024'%3e%3cg%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%3e%3cpath%20d='m17%2012-7%207m7-7-7-7'%20stroke-linejoin='round'/%3e%3cpath%20d='M3%2012h13.5'/%3e%3cpath%20d='M21%203v18'%20stroke-linejoin='round'/%3e%3c/g%3e%3c/svg%3e";export{e as default}; diff --git a/resources/views/dist/js/collapse.ROHmwAah.js b/resources/views/dist/js/collapse.ROHmwAah.js new file mode 100644 index 0000000..570fb97 --- /dev/null +++ b/resources/views/dist/js/collapse.ROHmwAah.js @@ -0,0 +1 @@ +const v="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='currentColor'%3e%3cpath%20d='M3%204h18v2H3V4zm0%2015h18v2H3v-2zm8-5h10v2H11v-2zm0-5h10v2H11V9zm-8%203.5L7%209v7l-4-3.5z'/%3e%3c/svg%3e";export{v as default}; diff --git a/resources/views/dist/js/debounce.l44evi-0.js b/resources/views/dist/js/debounce.l44evi-0.js new file mode 100644 index 0000000..b6e7f5f --- /dev/null +++ b/resources/views/dist/js/debounce.l44evi-0.js @@ -0,0 +1 @@ +import{cP as t,bT as n,cQ as r}from"./index.DMBpWXpT.js";var i=/\s/;var e=/^\s+/;function u(t){return t?t.slice(0,function(t){for(var n=t.length;n--&&i.test(t.charAt(n)););return n}(t)+1).replace(e,""):t}var o=NaN,a=/^[-+]0x[0-9a-f]+$/i,f=/^0b[01]+$/i,c=/^0o[0-7]+$/i,v=parseInt;function s(r){if("number"==typeof r)return r;if(t(r))return o;if(n(r)){var i="function"==typeof r.valueOf?r.valueOf():r;r=n(i)?i+"":i}if("string"!=typeof r)return 0===r?r:+r;r=u(r);var e=f.test(r);return e||c.test(r)?v(r.slice(2),e?2:8):a.test(r)?o:+r}var l=function(){return r.Date.now()},d=Math.max,m=Math.min;function p(t,r,i){var e,u,o,a,f,c,v=0,p=!1,T=!1,h=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function x(n){var r=e,i=u;return e=u=void 0,v=n,a=t.apply(i,r)}function y(t){var n=t-c;return void 0===c||n>=r||n<0||T&&t-v>=o}function g(){var t=l();if(y(t))return b(t);f=setTimeout(g,function(t){var n=r-(t-c);return T?m(n,o-(t-v)):n}(t))}function b(t){return f=void 0,h&&e?x(t):(e=u=void 0,a)}function w(){var t=l(),n=y(t);if(e=arguments,u=this,c=t,n){if(void 0===f)return function(t){return v=t,f=setTimeout(g,r),p?x(t):a}(c);if(T)return clearTimeout(f),f=setTimeout(g,r),x(c)}return void 0===f&&(f=setTimeout(g,r)),a}return r=s(r)||0,n(i)&&(p=!!i.leading,o=(T="maxWait"in i)?d(s(i.maxWait)||0,r):o,h="trailing"in i?!!i.trailing:h),w.cancel=function(){void 0!==f&&clearTimeout(f),v=0,e=c=u=f=void 0},w.flush=function(){return void 0===f?a:b(l())},w}export{p as d}; diff --git a/resources/views/dist/js/delete.CrlEmVes.js b/resources/views/dist/js/delete.CrlEmVes.js new file mode 100644 index 0000000..1b03fde --- /dev/null +++ b/resources/views/dist/js/delete.CrlEmVes.js @@ -0,0 +1 @@ +import{e as a,h as e,C as l}from"./index.DMBpWXpT.js";const t={viewBox:"0 0 1024 1024",width:"1.2em",height:"1.2em"},n=[l("path",{fill:"currentColor",d:"M832 512a32 32 0 1 1 64 0v352a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h352a32 32 0 0 1 0 64H192v640h640z"},null,-1),l("path",{fill:"currentColor",d:"m469.952 554.24l52.8-7.552L847.104 222.4a32 32 0 1 0-45.248-45.248L477.44 501.44l-7.552 52.8zm422.4-422.4a96 96 0 0 1 0 135.808l-331.84 331.84a32 32 0 0 1-18.112 9.088L436.8 623.68a32 32 0 0 1-36.224-36.224l15.104-105.6a32 32 0 0 1 9.024-18.112l331.904-331.84a96 96 0 0 1 135.744 0z"},null,-1)];const r={name:"ep-edit",render:function(l,r){return a(),e("svg",t,[...n])}},h={viewBox:"0 0 1024 1024",width:"1.2em",height:"1.2em"},o=[l("path",{fill:"currentColor",d:"M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32zm448-64v-64H416v64zM224 896h576V256H224zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32m192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32"},null,-1)];const i={name:"ep-delete",render:function(l,t){return a(),e("svg",h,[...o])}};export{i as _,r as a}; diff --git a/resources/views/dist/js/dept-tree.DBPM0br8.js b/resources/views/dist/js/dept-tree.DBPM0br8.js new file mode 100644 index 0000000..6ebb0f0 --- /dev/null +++ b/resources/views/dist/js/dept-tree.DBPM0br8.js @@ -0,0 +1 @@ +import{_ as t}from"./dept-tree.vue_vue_type_script_setup_true_lang.DonqNhHi.js";import"./index.DMBpWXpT.js";import"./el-card.BhvZLWwX.js";import"./el-tree.UTBgh5GW.js";import"./token.DWNpOE8r.js";import"./el-checkbox.8MJHthul.js";import"./isEqual.B61-3bNT.js";import"./_Uint8Array.BEOPqGcx.js";import"./search.DdQbLJWh.js";import"./dept.o4EvKKVx.js";export{t as default}; diff --git a/resources/views/dist/js/dept-tree.vue_vue_type_script_setup_true_lang.DonqNhHi.js b/resources/views/dist/js/dept-tree.vue_vue_type_script_setup_true_lang.DonqNhHi.js new file mode 100644 index 0000000..2034027 --- /dev/null +++ b/resources/views/dist/js/dept-tree.vue_vue_type_script_setup_true_lang.DonqNhHi.js @@ -0,0 +1 @@ +import{d as e,r as a,c3 as l,R as o,aQ as s,e as t,f as r,w as d,l as n,g as i,aB as u,a5 as p}from"./index.DMBpWXpT.js";import{E as c}from"./el-card.BhvZLWwX.js";import{E as m}from"./el-tree.UTBgh5GW.js";import"./el-checkbox.8MJHthul.js";import{_ as f}from"./search.DdQbLJWh.js";import{D as h}from"./dept.o4EvKKVx.js";const v=e({__name:"dept-tree",props:{modelValue:{type:[Number],default:void 0}},emits:["node-click"],setup(e,{emit:v}){const b=e,x=a(),_=a(m),j=a(),k=v,V=l(b,"modelValue",k);function g(e,a){return!e||-1!==a.label.indexOf(e)}function w(e){V.value=e.value,k("node-click")}return o((()=>{_.value.filter(j.value)}),{flush:"post"}),s((()=>{h.getOptions().then((e=>{x.value=e}))})),(e,a)=>{const l=f,o=p,s=m,h=c;return t(),r(h,{shadow:"never"},{default:d((()=>[n(o,{modelValue:i(j),"onUpdate:modelValue":a[0]||(a[0]=e=>u(j)?j.value=e:null),placeholder:"部门名称",clearable:""},{prefix:d((()=>[n(l)])),_:1},8,["modelValue"]),n(s,{ref_key:"deptTreeRef",ref:_,class:"mt-2",data:i(x),props:{children:"children",label:"label",disabled:""},"expand-on-click-node":!1,"filter-node-method":g,"default-expand-all":"",onNodeClick:w},null,8,["data"])])),_:1})}}});export{v as _}; diff --git a/resources/views/dist/js/dept.o4EvKKVx.js b/resources/views/dist/js/dept.o4EvKKVx.js new file mode 100644 index 0000000..817d092 --- /dev/null +++ b/resources/views/dist/js/dept.o4EvKKVx.js @@ -0,0 +1 @@ +import{bC as t}from"./index.DMBpWXpT.js";const e="/api/v1/dept";const r=class{static getList(r){return t({url:`${e}`,method:"get",params:r})}static getOptions(){return t({url:`${e}/options`,method:"get"})}static getFormData(r){return t({url:`${e}/${r}/form`,method:"get"})}static add(r){return t({url:`${e}`,method:"post",data:r})}static update(r,a){return t({url:`${e}/${r}`,method:"put",data:a})}static deleteByIds(r){return t({url:`${e}/${r}`,method:"delete"})}};export{r as D}; diff --git a/resources/views/dist/js/dict.Bl25h5Gq.js b/resources/views/dist/js/dict.Bl25h5Gq.js new file mode 100644 index 0000000..9650447 --- /dev/null +++ b/resources/views/dist/js/dict.Bl25h5Gq.js @@ -0,0 +1 @@ +import{d as e,r as l,e as s,h as t,l as r,w as a,a7 as o,g as i,aB as m}from"./index.DMBpWXpT.js";import{a as n,E as p}from"./el-form.DUR-mZNt.js";import"./el-form-item.l0sNRNKZ.js";import{_ as u}from"./index.vue_vue_type_script_setup_true_lang.CqBp_XYA.js";import{E as d}from"./el-link.7KZopgR8.js";import"./castArray.arHVDzqw.js";import"./_Uint8Array.BEOPqGcx.js";/* empty css */import"./el-select.C9ddzdnq.js";import"./el-popper.Cb3Eus9m.js";import"./isUndefined.DgmxjSXK.js";import"./el-scrollbar.BJ_tYB1D.js";import"./index.qeCV5ckY.js";import"./token.DWNpOE8r.js";import"./strings.DeQ3Zoz4.js";import"./isEqual.B61-3bNT.js";import"./debounce.l44evi-0.js";import"./index.CP01f_MK.js";import"./dict.CNA62ktp.js";const c={class:"app-container"},j=e({__name:"dict",setup(e){const j=l("1"),f=l(1);return(e,l)=>{const _=d,g=u,v=n,y=p;return s(),t("div",c,[r(_,{href:"https://gitee.com/youlaiorg/vue3-element-admin/blob/master/src/views/demo/dict.vue",type:"primary",target:"_blank",class:"mb-[20px]"},{default:a((()=>[o("示例源码 请点击>>>>")])),_:1}),r(y,null,{default:a((()=>[r(v,{label:"性别"},{default:a((()=>[r(g,{modelValue:i(j),"onUpdate:modelValue":l[0]||(l[0]=e=>m(j)?j.value=e:null),code:"gender"},null,8,["modelValue"]),r(_,{underline:!1,type:"primary",class:"ml-5"},{default:a((()=>[o('值为String: const value = ref("1"); ')])),_:1})])),_:1}),r(v,{label:"性别"},{default:a((()=>[r(g,{modelValue:i(f),"onUpdate:modelValue":l[1]||(l[1]=e=>m(f)?f.value=e:null),code:"gender"},null,8,["modelValue"]),r(_,{underline:!1,type:"success",class:"ml-5"},{default:a((()=>[o("值为Number: const value = ref(1); ")])),_:1})])),_:1})])),_:1})])}}});export{j as default}; diff --git a/resources/views/dist/js/dict.BlxtrVRf.js b/resources/views/dist/js/dict.BlxtrVRf.js new file mode 100644 index 0000000..028dd01 --- /dev/null +++ b/resources/views/dist/js/dict.BlxtrVRf.js @@ -0,0 +1 @@ +const c="data:image/svg+xml,%3csvg%20class='icon'%20viewBox='0%200%201024%201024'%20xmlns='http://www.w3.org/2000/svg'%20width='200'%20height='200'%3e%3cpath%20d='M449.6%20116.2H303.8c-14.2%200-25.7-11.5-25.7-25.7s11.5-25.7%2025.7-25.7h145.8c14.2%200%2025.7%2011.5%2025.7%2025.7s-11.5%2025.7-25.7%2025.7zm0%200'/%3e%3cpath%20d='M160.1%20859.3c-14.2%200-25.7-11.5-25.7-25.7V167.4c0-56.6%2046-102.6%20102.6-102.6h66.8c14.2%200%2025.7%2011.5%2025.7%2025.7s-11.5%2025.7-25.7%2025.7H237c-28.2%200-51.1%2022.9-51.1%2051.1v666.2c-.1%2014.3-11.6%2025.8-25.8%2025.8zm373.5-512.6c-6.3%200-12.4-1.3-17.6-3.5-13.5-5.8-21.9-17.9-21.9-31.6v-221c0-14.2%2011.5-25.7%2025.7-25.7s25.7%2011.5%2025.7%2025.7v189l27.7-26.6c14.1-13.5%2036.1-13.5%2050.1%200l22.1%2021.3V90.5c0-14.2%2011.5-25.7%2025.7-25.7s25.7%2011.5%2025.7%2025.7v219.6c0%2014.5-8.6%2027.5-22%2033.2-13.3%205.7-28.7%202.9-39.2-7.2l-37.5-36-37.5%2036c-7.6%207.6-17.5%2010.6-27%2010.6zm0%200'/%3e%3cpath%20d='M846.1%20958.9H236.9c-56.6%200-102.6-46-102.6-102.6v-22.8c0-14.2%2011.5-25.7%2025.7-25.7s25.7%2011.5%2025.7%2025.7v22.8c0%2028.2%2022.9%2051.1%2051.1%2051.1H846c14.2%200%2025.7%2011.5%2025.7%2025.7.1%2014.3-11.4%2025.8-25.6%2025.8zm0%200'/%3e%3cpath%20d='M160.1%20876h-.9c-14.2-.5-25.3-12.4-24.8-26.6%201-28.2%206.3-48.5%2016.7-63.6%2013.8-20.1%2035.4-30.3%2064.3-30.3h615c3.2-2.7%206.4-6.1%208.6-8.6V133.1c-1.8-5.1-11.7-15-16.8-16.8H449.6c-14.2%200-25.7-11.5-25.7-25.7s11.5-25.7%2025.7-25.7h373.6c19.8%200%2036.7%2013.9%2045%2022.2%208.3%208.3%2022.2%2025.2%2022.2%2045v621.6c0%2010.8-6.2%2019.6-12.3%2026.7-4.6%205.4-10.3%2011-15.6%2015.4-1%20.9-2.1%201.7-3.2%202.5-5.4%204.1-12.9%208.8-22.3%208.8H215.3c-15%200-28%200-29.5%2044.2-.5%2013.8-11.9%2024.7-25.7%2024.7zm0%200'/%3e%3cpath%20d='M284.4%20806.4c-14.2%200-25.7-11.5-25.7-25.7V90.5c0-14.2%2011.5-25.7%2025.7-25.7s25.7%2011.5%2025.7%2025.7v690.1c0%2014.3-11.5%2025.8-25.7%2025.8zM844.9%20959h-1.6c-6.6-.3-30-2.3-52.2-16.9-19.5-12.7-42.6-38-42.6-86.3%200-62.3%2035.7-101%2093.1-101%2014.2%200%2025.7%2011.5%2025.7%2025.7s-11.5%2025.7-25.7%2025.7c-12.5%200-41.7%200-41.7%2049.6%200%2021%206.6%2035.3%2020.1%2043.8%2010.6%206.6%2022.1%207.8%2025%208%201.4-.1%202.9%200%204.4.2%2013.7%201.7%2023.6%2014%2022.5%2027.7-.9%209.5-8.8%2023.5-27%2023.5zm-1.8-51.3c-1.1.1-2.3.3-3.4.6%201.1-.3%202.2-.5%203.4-.6zm0%200'/%3e%3c/svg%3e";export{c as default}; diff --git a/resources/views/dist/js/dict.CNA62ktp.js b/resources/views/dist/js/dict.CNA62ktp.js new file mode 100644 index 0000000..dbe95fc --- /dev/null +++ b/resources/views/dist/js/dict.CNA62ktp.js @@ -0,0 +1 @@ +import{bC as t}from"./index.DMBpWXpT.js";const e="/api/v1/dict";class r{static getPage(r){return t({url:`${e}/page`,method:"get",params:r})}static getFormData(r){return t({url:`${e}/${r}/form`,method:"get"})}static add(r){return t({url:`${e}`,method:"post",data:r})}static update(r,a){return t({url:`${e}/${r}`,method:"put",data:a})}static deleteByIds(r){return t({url:`${e}/${r}`,method:"delete"})}static getOptions(r){return t({url:`${e}/${r}/options`,method:"get"})}}export{r as D}; diff --git a/resources/views/dist/js/document.DqID0E9P.js b/resources/views/dist/js/document.DqID0E9P.js new file mode 100644 index 0000000..6e9c7cb --- /dev/null +++ b/resources/views/dist/js/document.DqID0E9P.js @@ -0,0 +1 @@ +const c="data:image/svg+xml,%3csvg%20class='icon'%20viewBox='0%200%201024%201024'%20xmlns='http://www.w3.org/2000/svg'%20width='200'%20height='200'%3e%3cpath%20d='M832.1%20185.1H609.4l-17.1-62c-9.6-34.6-40.5-58.8-75.3-58.8H196c-43.2%200-78.3%2036.4-78.3%2081.1V897c0%2035.3%2028.7%2064%2064%2064H832c35.3%200%2064-28.7%2064-64V249c.1-35.2-28.6-63.9-63.9-63.9zm-644.4-39.7c0-6.6%204.4-11.1%208.3-11.1h321c3.4%200%206.6%203.1%207.8%207.4l12%2043.4H187.7v-39.7zm638.4%20745.8H187.7V255.1h638.4v636.1z'/%3e%3cpath%20d='M311.1%20415.1a35%2035%200%201%200%2070%200%2035%2035%200%201%200-70%200zm151.2-35h257.8v70H462.3zM311.1%20582.3a35%2035%200%201%200%2070%200%2035%2035%200%201%200-70%200zm151.2-35h257.8v70H462.3zM311.1%20749.5a35%2035%200%201%200%2070%200%2035%2035%200%201%200-70%200zm151.2-35h257.8v70H462.3z'/%3e%3c/svg%3e";export{c as default}; diff --git a/resources/views/dist/js/download.BcBrriOr.js b/resources/views/dist/js/download.BcBrriOr.js new file mode 100644 index 0000000..1d557e5 --- /dev/null +++ b/resources/views/dist/js/download.BcBrriOr.js @@ -0,0 +1 @@ +const c="data:image/svg+xml,%3csvg%20class='icon'%20viewBox='0%200%201024%201024'%20xmlns='http://www.w3.org/2000/svg'%20width='200'%20height='200'%3e%3cpath%20d='M624%20706.3h-74.1V464c0-4.4-3.6-8-8-8h-60c-4.4%200-8%203.6-8%208v242.3H400c-6.7%200-10.4%207.7-6.3%2012.9l112%20141.7c3.2%204.1%209.4%204.1%2012.6%200l112-141.7c4.1-5.2.4-12.9-6.3-12.9z'/%3e%3cpath%20d='M811.4%20366.7C765.6%20245.9%20648.9%20160%20512.2%20160S258.8%20245.8%20213%20366.6C127.3%20389.1%2064%20467.2%2064%20560c0%20110.5%2089.5%20200%20199.9%20200H304c4.4%200%208-3.6%208-8v-60c0-4.4-3.6-8-8-8h-40.1c-33.7%200-65.4-13.4-89-37.7-23.5-24.2-36-56.8-34.9-90.6.9-26.4%209.9-51.2%2026.2-72.1%2016.7-21.3%2040.1-36.8%2066.1-43.7l37.9-9.9%2013.9-36.6c8.6-22.8%2020.6-44.1%2035.7-63.4%2014.9-19.2%2032.6-35.9%2052.4-49.9%2041.1-28.9%2089.5-44.2%20140-44.2s98.9%2015.3%20140%2044.2c19.9%2014%2037.5%2030.8%2052.4%2049.9%2015.1%2019.3%2027.1%2040.7%2035.7%2063.4l13.8%2036.5%2037.8%2010C846.1%20454.5%20884%20503.8%20884%20560c0%2033.1-12.9%2064.3-36.3%2087.7-23.4%2023.4-54.5%2036.3-87.6%2036.3H720c-4.4%200-8%203.6-8%208v60c0%204.4%203.6%208%208%208h40.1C870.5%20760%20960%20670.5%20960%20560c0-92.7-63.1-170.7-148.6-193.3z'/%3e%3c/svg%3e";export{c as default}; diff --git a/resources/views/dist/js/dropdown.Dka1h-m0.js b/resources/views/dist/js/dropdown.Dka1h-m0.js new file mode 100644 index 0000000..7d3ee63 --- /dev/null +++ b/resources/views/dist/js/dropdown.Dka1h-m0.js @@ -0,0 +1 @@ +import{_ as e,d as t,k as o,r as l,z as a,B as n,o as r,g as i,al as s,v as p,A as d,x as u,ad as c}from"./index.DMBpWXpT.js";import{b as f,u as m}from"./el-popper.Cb3Eus9m.js";var y=e(t({inheritAttrs:!1}),[["render",function(e,t,l,a,n,r){return o(e.$slots,"default")}],["__file","collection.vue"]]);var g=e(t({name:"ElCollectionItem",inheritAttrs:!1}),[["render",function(e,t,l,a,n,r){return o(e.$slots,"default")}],["__file","collection-item.vue"]]);const C="data-el-collection-item",E=e=>{const t=`El${e}Collection`,o=`${t}Item`,p=Symbol(t),d=Symbol(o),u={...y,name:t,setup(){const e=l(null),t=new Map;a(p,{itemMap:t,getItems:()=>{const o=i(e);if(!o)return[];const l=Array.from(o.querySelectorAll(`[${C}]`));return[...t.values()].sort(((e,t)=>l.indexOf(e.ref)-l.indexOf(t.ref)))},collectionRef:e})}},c={...g,name:o,setup(e,{attrs:t}){const o=l(null),u=n(p,void 0);a(d,{collectionItemRef:o}),r((()=>{const e=i(o);e&&u.itemMap.set(e,{ref:e,...t})})),s((()=>{const e=i(o);u.itemMap.delete(e)}))}};return{COLLECTION_INJECTION_KEY:p,COLLECTION_ITEM_INJECTION_KEY:d,ElCollection:u,ElCollectionItem:c}},I=p({trigger:f.trigger,effect:{...m.effect,default:"light"},type:{type:d(String)},placement:{type:d(String),default:"bottom"},popperOptions:{type:d(Object),default:()=>({})},id:String,size:{type:String,default:""},splitButton:Boolean,hideOnClick:{type:Boolean,default:!0},loop:{type:Boolean,default:!0},showTimeout:{type:Number,default:150},hideTimeout:{type:Number,default:150},tabindex:{type:d([Number,String]),default:0},maxHeight:{type:d([Number,String]),default:""},popperClass:{type:String,default:""},disabled:Boolean,role:{type:String,default:"menu"},buttonProps:{type:d(Object)},teleported:m.teleported}),O=p({command:{type:[Object,String,Number],default:()=>({})},disabled:Boolean,divided:Boolean,textValue:String,icon:{type:u}}),b=p({onKeydown:{type:d(Function)}}),N=[c.down,c.pageDown,c.home],_=[c.up,c.pageUp,c.end],S=[...N,..._],{ElCollection:T,ElCollectionItem:L,COLLECTION_INJECTION_KEY:h,COLLECTION_ITEM_INJECTION_KEY:v}=E("Dropdown");export{v as C,T as E,S as F,_ as L,O as a,C as b,E as c,I as d,L as e,b as f,h as g}; diff --git a/resources/views/dist/js/el-alert.oASVj8Ze.js b/resources/views/dist/js/el-alert.oASVj8Ze.js new file mode 100644 index 0000000..043386d --- /dev/null +++ b/resources/views/dist/js/el-alert.oASVj8Ze.js @@ -0,0 +1 @@ +import{v as e,bP as s,bQ as t,d as a,ae as l,b as i,r as o,c,e as n,f as d,w as r,a3 as f,C as p,i as u,g as y,E as v,D as b,p as k,h as g,k as m,a7 as h,F as S,S as _,l as x,aa as w,T as C,_ as E,bR as T,q as $}from"./index.DMBpWXpT.js";const B=e({title:{type:String,default:""},description:{type:String,default:""},type:{type:String,values:s(t),default:"info"},closable:{type:Boolean,default:!0},closeText:{type:String,default:""},showIcon:Boolean,center:Boolean,effect:{type:String,values:["light","dark"],default:"light"}}),I={close:e=>e instanceof MouseEvent},j=a({name:"ElAlert"});const q=$(E(a({...j,props:B,emits:I,setup(e,{emit:s}){const a=e,{Close:E}=T,$=l(),B=i("alert"),I=o(!0),j=c((()=>t[a.type])),q=c((()=>[B.e("icon"),{[B.is("big")]:!!a.description||!!$.default}])),A=c((()=>({"with-description":a.description||$.default}))),D=e=>{I.value=!1,s("close",e)};return(e,s)=>(n(),d(C,{name:y(B).b("fade"),persisted:""},{default:r((()=>[f(p("div",{class:u([y(B).b(),y(B).m(e.type),y(B).is("center",e.center),y(B).is(e.effect)]),role:"alert"},[e.showIcon&&y(j)?(n(),d(y(v),{key:0,class:u(y(q))},{default:r((()=>[(n(),d(b(y(j))))])),_:1},8,["class"])):k("v-if",!0),p("div",{class:u(y(B).e("content"))},[e.title||e.$slots.title?(n(),g("span",{key:0,class:u([y(B).e("title"),y(A)])},[m(e.$slots,"title",{},(()=>[h(S(e.title),1)]))],2)):k("v-if",!0),e.$slots.default||e.description?(n(),g("p",{key:1,class:u(y(B).e("description"))},[m(e.$slots,"default",{},(()=>[h(S(e.description),1)]))],2)):k("v-if",!0),e.closable?(n(),g(_,{key:2},[e.closeText?(n(),g("div",{key:0,class:u([y(B).e("close-btn"),y(B).is("customed")]),onClick:D},S(e.closeText),3)):(n(),d(y(v),{key:1,class:u(y(B).e("close-btn")),onClick:D},{default:r((()=>[x(y(E))])),_:1},8,["class"]))],64)):k("v-if",!0)],2)],2),[[w,I.value]])])),_:3},8,["name"]))}}),[["__file","alert.vue"]]));export{q as E}; diff --git a/resources/views/dist/js/el-card.BhvZLWwX.js b/resources/views/dist/js/el-card.BhvZLWwX.js new file mode 100644 index 0000000..70fb1b3 --- /dev/null +++ b/resources/views/dist/js/el-card.BhvZLWwX.js @@ -0,0 +1 @@ +import{v as s,A as a,d as e,b as t,e as o,h as r,i as d,g as l,k as y,a7 as i,F as f,p as n,C as h,n as v,_ as c,q as p}from"./index.DMBpWXpT.js";const u=s({header:{type:String,default:""},footer:{type:String,default:""},bodyStyle:{type:a([String,Object,Array]),default:""},bodyClass:String,shadow:{type:String,values:["always","hover","never"],default:"always"}}),b=e({name:"ElCard"});const S=p(c(e({...b,props:u,setup(s){const a=t("card");return(s,e)=>(o(),r("div",{class:d([l(a).b(),l(a).is(`${s.shadow}-shadow`)])},[s.$slots.header||s.header?(o(),r("div",{key:0,class:d(l(a).e("header"))},[y(s.$slots,"header",{},(()=>[i(f(s.header),1)]))],2)):n("v-if",!0),h("div",{class:d([l(a).e("body"),s.bodyClass]),style:v(s.bodyStyle)},[y(s.$slots,"default")],6),s.$slots.footer||s.footer?(o(),r("div",{key:1,class:d(l(a).e("footer"))},[y(s.$slots,"footer",{},(()=>[i(f(s.footer),1)]))],2)):n("v-if",!0)],2))}}),[["__file","card.vue"]]));export{S as E}; diff --git a/resources/views/dist/js/el-checkbox.8MJHthul.js b/resources/views/dist/js/el-checkbox.8MJHthul.js new file mode 100644 index 0000000..ab12138 --- /dev/null +++ b/resources/views/dist/js/el-checkbox.8MJHthul.js @@ -0,0 +1 @@ +import{L as e,M as l,U as a,N as t,bK as n,c9 as o,B as u,c as s,bp as i,Y as d,W as r,J as c,ac as v,a2 as b,G as m,r as h,bl as p,cI as f,as as k,c2 as x,X as g,Z as C,a1 as L,d as y,ae as V,b as S,e as B,f as I,w as E,C as F,i as z,g as N,a3 as w,h as U,aB as D,j as O,cN as _,k as G,S as $,a7 as j,F as R,p as A,D as q,_ as K,n as M,v as H,A as J,z as P,cO as W,bd as X,q as Y,H as Z}from"./index.DMBpWXpT.js";import{i as Q}from"./isEqual.B61-3bNT.js";const T={modelValue:{type:[Number,String,Boolean],default:void 0},label:{type:[String,Boolean,Number,Object],default:void 0},value:{type:[String,Boolean,Number,Object],default:void 0},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:{type:String,default:void 0},trueValue:{type:[String,Number],default:void 0},falseValue:{type:[String,Number],default:void 0},trueLabel:{type:[String,Number],default:void 0},falseLabel:{type:[String,Number],default:void 0},id:{type:String,default:void 0},controls:{type:String,default:void 0},border:Boolean,size:e,tabindex:[String,Number],validateEvent:{type:Boolean,default:!0},...l(["ariaControls"])},ee={[a]:e=>t(e)||n(e)||o(e),change:e=>t(e)||n(e)||o(e)},le=Symbol("checkboxGroupContextKey"),ae=(e,{model:l,isLimitExceeded:a,hasOwnLabel:t,isDisabled:n,isLabeledByFormItem:o})=>{const i=u(le,void 0),{formItem:d}=r(),{emit:h}=m();function p(l){var a,t,n,o;return[!0,e.trueValue,e.trueLabel].includes(l)?null==(t=null!=(a=e.trueValue)?a:e.trueLabel)||t:null!=(o=null!=(n=e.falseValue)?n:e.falseLabel)&&o}const f=s((()=>(null==i?void 0:i.validateEvent)||e.validateEvent));return c((()=>e.modelValue),(()=>{f.value&&(null==d||d.validate("change").catch((e=>v())))})),{handleChange:function(e){if(a.value)return;const l=e.target;h("change",p(l.checked),e)},onClickRoot:async function(u){if(!a.value&&!t.value&&!n.value&&o.value){u.composedPath().some((e=>"LABEL"===e.tagName))||(l.value=p([!1,e.falseValue,e.falseLabel].includes(l.value)),await b(),function(e,l){h("change",p(e),l)}(l.value,u))}}}},te=(e,l)=>{const{formItem:t}=r(),{model:n,isGroup:c,isLimitExceeded:v}=(e=>{const l=h(!1),{emit:t}=m(),n=u(le,void 0),o=s((()=>!1===i(n))),d=h(!1),r=s({get(){var a,t;return o.value?null==(a=null==n?void 0:n.modelValue)?void 0:a.value:null!=(t=e.modelValue)?t:l.value},set(e){var u,s;o.value&&p(e)?(d.value=void 0!==(null==(u=null==n?void 0:n.max)?void 0:u.value)&&e.length>(null==n?void 0:n.max.value)&&e.length>r.value.length,!1===d.value&&(null==(s=null==n?void 0:n.changeEvent)||s.call(n,e))):(t(a,e),l.value=e)}});return{model:r,isGroup:o,isLimitExceeded:d}})(e),{isFocused:b,isChecked:y,checkboxButtonSize:V,checkboxSize:S,hasOwnLabel:B,actualValue:I}=((e,l,{model:a})=>{const t=u(le,void 0),n=h(!1),i=s((()=>f(e.value)?e.label:e.value)),d=s((()=>{const l=a.value;return o(l)?l:p(l)?k(i.value)?l.map(x).some((e=>Q(e,i.value))):l.map(x).includes(i.value):null!=l?l===e.trueValue||l===e.trueLabel:!!l}));return{checkboxButtonSize:g(s((()=>{var e;return null==(e=null==t?void 0:t.size)?void 0:e.value})),{prop:!0}),isChecked:d,isFocused:n,checkboxSize:g(s((()=>{var e;return null==(e=null==t?void 0:t.size)?void 0:e.value}))),hasOwnLabel:s((()=>!!l.default||!f(i.value))),actualValue:i}})(e,l,{model:n}),{isDisabled:E}=(({model:e,isChecked:l})=>{const a=u(le,void 0),t=s((()=>{var t,n;const o=null==(t=null==a?void 0:a.max)?void 0:t.value,u=null==(n=null==a?void 0:a.min)?void 0:n.value;return!i(o)&&e.value.length>=o&&!l.value||!i(u)&&e.value.length<=u&&l.value}));return{isDisabled:d(s((()=>(null==a?void 0:a.disabled.value)||t.value))),isLimitDisabled:t}})({model:n,isChecked:y}),{inputId:F,isLabeledByFormItem:z}=C(e,{formItemContext:t,disableIdGeneration:B,disableIdManagement:c}),{handleChange:N,onClickRoot:w}=ae(e,{model:n,isLimitExceeded:v,hasOwnLabel:B,isDisabled:E,isLabeledByFormItem:z});var U,D;return e.checked&&(p(n.value)&&!n.value.includes(I.value)?n.value.push(I.value):n.value=null==(D=null!=(U=e.trueValue)?U:e.trueLabel)||D),L({from:"controls",replacement:"aria-controls",version:"2.8.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},s((()=>!!e.controls))),L({from:"label act as value",replacement:"value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},s((()=>c.value&&f(e.value)))),L({from:"true-label",replacement:"true-value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},s((()=>!!e.trueLabel))),L({from:"false-label",replacement:"false-value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},s((()=>!!e.falseLabel))),{inputId:F,isLabeledByFormItem:z,isChecked:y,isDisabled:E,isFocused:b,checkboxButtonSize:V,checkboxSize:S,hasOwnLabel:B,model:n,actualValue:I,handleChange:N,onClickRoot:w}},ne=["id","indeterminate","name","tabindex","disabled","true-value","false-value"],oe=["id","indeterminate","disabled","value","name","tabindex"],ue=y({name:"ElCheckbox"});var se=K(y({...ue,props:T,emits:ee,setup(e){const l=e,a=V(),{inputId:t,isLabeledByFormItem:n,isChecked:o,isDisabled:u,isFocused:i,checkboxSize:d,hasOwnLabel:r,model:c,actualValue:v,handleChange:b,onClickRoot:m}=te(l,a),h=S("checkbox"),p=s((()=>[h.b(),h.m(d.value),h.is("disabled",u.value),h.is("bordered",l.border),h.is("checked",o.value)])),f=s((()=>[h.e("input"),h.is("disabled",u.value),h.is("checked",o.value),h.is("indeterminate",l.indeterminate),h.is("focus",i.value)]));return(e,l)=>(B(),I(q(!N(r)&&N(n)?"span":"label"),{class:z(N(p)),"aria-controls":e.indeterminate?e.controls||e.ariaControls:null,onClick:N(m)},{default:E((()=>{var a,n;return[F("span",{class:z(N(f))},[e.trueValue||e.falseValue||e.trueLabel||e.falseLabel?w((B(),U("input",{key:0,id:N(t),"onUpdate:modelValue":l[0]||(l[0]=e=>D(c)?c.value=e:null),class:z(N(h).e("original")),type:"checkbox",indeterminate:e.indeterminate,name:e.name,tabindex:e.tabindex,disabled:N(u),"true-value":null!=(a=e.trueValue)?a:e.trueLabel,"false-value":null!=(n=e.falseValue)?n:e.falseLabel,onChange:l[1]||(l[1]=(...e)=>N(b)&&N(b)(...e)),onFocus:l[2]||(l[2]=e=>i.value=!0),onBlur:l[3]||(l[3]=e=>i.value=!1),onClick:l[4]||(l[4]=O((()=>{}),["stop"]))},null,42,ne)),[[_,N(c)]]):w((B(),U("input",{key:1,id:N(t),"onUpdate:modelValue":l[5]||(l[5]=e=>D(c)?c.value=e:null),class:z(N(h).e("original")),type:"checkbox",indeterminate:e.indeterminate,disabled:N(u),value:N(v),name:e.name,tabindex:e.tabindex,onChange:l[6]||(l[6]=(...e)=>N(b)&&N(b)(...e)),onFocus:l[7]||(l[7]=e=>i.value=!0),onBlur:l[8]||(l[8]=e=>i.value=!1),onClick:l[9]||(l[9]=O((()=>{}),["stop"]))},null,42,oe)),[[_,N(c)]]),F("span",{class:z(N(h).e("inner"))},null,2)],2),N(r)?(B(),U("span",{key:0,class:z(N(h).e("label"))},[G(e.$slots,"default"),e.$slots.default?A("v-if",!0):(B(),U($,{key:0},[j(R(e.label),1)],64))],2)):A("v-if",!0)]})),_:3},8,["class","aria-controls","onClick"]))}}),[["__file","checkbox.vue"]]);const ie=["name","tabindex","disabled","true-value","false-value"],de=["name","tabindex","disabled","value"],re=y({name:"ElCheckboxButton"});var ce=K(y({...re,props:T,emits:ee,setup(e){const l=e,a=V(),{isFocused:t,isChecked:n,isDisabled:o,checkboxButtonSize:i,model:d,actualValue:r,handleChange:c}=te(l,a),v=u(le,void 0),b=S("checkbox"),m=s((()=>{var e,l,a,t;const n=null!=(l=null==(e=null==v?void 0:v.fill)?void 0:e.value)?l:"";return{backgroundColor:n,borderColor:n,color:null!=(t=null==(a=null==v?void 0:v.textColor)?void 0:a.value)?t:"",boxShadow:n?`-1px 0 0 0 ${n}`:void 0}})),h=s((()=>[b.b("button"),b.bm("button",i.value),b.is("disabled",o.value),b.is("checked",n.value),b.is("focus",t.value)]));return(e,l)=>{var a,u;return B(),U("label",{class:z(N(h))},[e.trueValue||e.falseValue||e.trueLabel||e.falseLabel?w((B(),U("input",{key:0,"onUpdate:modelValue":l[0]||(l[0]=e=>D(d)?d.value=e:null),class:z(N(b).be("button","original")),type:"checkbox",name:e.name,tabindex:e.tabindex,disabled:N(o),"true-value":null!=(a=e.trueValue)?a:e.trueLabel,"false-value":null!=(u=e.falseValue)?u:e.falseLabel,onChange:l[1]||(l[1]=(...e)=>N(c)&&N(c)(...e)),onFocus:l[2]||(l[2]=e=>t.value=!0),onBlur:l[3]||(l[3]=e=>t.value=!1),onClick:l[4]||(l[4]=O((()=>{}),["stop"]))},null,42,ie)),[[_,N(d)]]):w((B(),U("input",{key:1,"onUpdate:modelValue":l[5]||(l[5]=e=>D(d)?d.value=e:null),class:z(N(b).be("button","original")),type:"checkbox",name:e.name,tabindex:e.tabindex,disabled:N(o),value:N(r),onChange:l[6]||(l[6]=(...e)=>N(c)&&N(c)(...e)),onFocus:l[7]||(l[7]=e=>t.value=!0),onBlur:l[8]||(l[8]=e=>t.value=!1),onClick:l[9]||(l[9]=O((()=>{}),["stop"]))},null,42,de)),[[_,N(d)]]),e.$slots.default||e.label?(B(),U("span",{key:2,class:z(N(b).be("button","inner")),style:M(N(n)?N(m):void 0)},[G(e.$slots,"default",{},(()=>[j(R(e.label),1)]))],6)):A("v-if",!0)],2)}}}),[["__file","checkbox-button.vue"]]);const ve=H({modelValue:{type:J(Array),default:()=>[]},disabled:Boolean,min:Number,max:Number,size:e,label:String,fill:String,textColor:String,tag:{type:String,default:"div"},validateEvent:{type:Boolean,default:!0},...l(["ariaLabel"])}),be={[a]:e=>p(e),change:e=>p(e)},me=y({name:"ElCheckboxGroup"});var he=K(y({...me,props:ve,emits:be,setup(e,{emit:l}){const t=e,n=S("checkbox"),{formItem:o}=r(),{inputId:u,isLabeledByFormItem:i}=C(t,{formItemContext:o}),d=async e=>{l(a,e),await b(),l("change",e)},m=s({get:()=>t.modelValue,set(e){d(e)}});return P(le,{...W(X(t),["size","min","max","disabled","validateEvent","fill","textColor"]),modelValue:m,changeEvent:d}),L({from:"label",replacement:"aria-label",version:"2.8.0",scope:"el-checkbox-group",ref:"https://element-plus.org/en-US/component/checkbox.html"},s((()=>!!t.label))),c((()=>t.modelValue),(()=>{t.validateEvent&&(null==o||o.validate("change").catch((e=>v())))})),(e,l)=>{var a;return B(),I(q(e.tag),{id:N(u),class:z(N(n).b("group")),role:"group","aria-label":N(i)?void 0:e.label||e.ariaLabel||"checkbox-group","aria-labelledby":N(i)?null==(a=N(o))?void 0:a.labelId:void 0},{default:E((()=>[G(e.$slots,"default")])),_:3},8,["id","class","aria-label","aria-labelledby"])}}}),[["__file","checkbox-group.vue"]]);const pe=Y(se,{CheckboxButton:ce,CheckboxGroup:he});Z(ce);const fe=Z(he);export{pe as E,fe as a}; diff --git a/resources/views/dist/js/el-col.DOWhjITg.js b/resources/views/dist/js/el-col.DOWhjITg.js new file mode 100644 index 0000000..867d981 --- /dev/null +++ b/resources/views/dist/js/el-col.DOWhjITg.js @@ -0,0 +1 @@ +import{v as t,d as e,b as s,c as a,z as u,e as l,f as r,w as p,k as n,i as o,g as f,n as d,D as c,_ as i,q as g,A as b,ao as y,B as m,bK as $,as as h}from"./index.DMBpWXpT.js";const j=Symbol("rowContextKey"),v=t({tag:{type:String,default:"div"},gutter:{type:Number,default:0},justify:{type:String,values:["start","center","end","space-around","space-between","space-evenly"],default:"start"},align:{type:String,values:["top","middle","bottom"]}}),N=e({name:"ElRow"});const x=g(i(e({...N,props:v,setup(t){const e=t,i=s("row"),g=a((()=>e.gutter));u(j,{gutter:g});const b=a((()=>{const t={};return e.gutter?(t.marginRight=t.marginLeft=`-${e.gutter/2}px`,t):t})),y=a((()=>[i.b(),i.is(`justify-${e.justify}`,"start"!==e.justify),i.is(`align-${e.align}`,!!e.align)]));return(t,e)=>(l(),r(c(t.tag),{class:o(f(y)),style:d(f(b))},{default:p((()=>[n(t.$slots,"default")])),_:3},8,["class","style"]))}}),[["__file","row.vue"]])),_=t({tag:{type:String,default:"div"},span:{type:Number,default:24},offset:{type:Number,default:0},pull:{type:Number,default:0},push:{type:Number,default:0},xs:{type:b([Number,Object]),default:()=>y({})},sm:{type:b([Number,Object]),default:()=>y({})},md:{type:b([Number,Object]),default:()=>y({})},lg:{type:b([Number,Object]),default:()=>y({})},xl:{type:b([Number,Object]),default:()=>y({})}}),w=e({name:"ElCol"});const E=g(i(e({...w,props:_,setup(t){const e=t,{gutter:u}=m(j,{gutter:a((()=>0))}),i=s("col"),g=a((()=>{const t={};return u.value&&(t.paddingLeft=t.paddingRight=u.value/2+"px"),t})),b=a((()=>{const t=[];["span","offset","pull","push"].forEach((s=>{const a=e[s];$(a)&&("span"===s?t.push(i.b(`${e[s]}`)):a>0&&t.push(i.b(`${s}-${e[s]}`)))}));return["xs","sm","md","lg","xl"].forEach((s=>{$(e[s])?t.push(i.b(`${s}-${e[s]}`)):h(e[s])&&Object.entries(e[s]).forEach((([e,a])=>{t.push("span"!==e?i.b(`${s}-${e}-${a}`):i.b(`${s}-${a}`))}))})),u.value&&t.push(i.is("guttered")),[i.b(),t]}));return(t,e)=>(l(),r(c(t.tag),{class:o(f(b)),style:d(f(g))},{default:p((()=>[n(t.$slots,"default")])),_:3},8,["class","style"]))}}),[["__file","col.vue"]]));export{E,x as a}; diff --git a/resources/views/dist/js/el-date-picker.BPCW1w6T.js b/resources/views/dist/js/el-date-picker.BPCW1w6T.js new file mode 100644 index 0000000..a994742 --- /dev/null +++ b/resources/views/dist/js/el-date-picker.BPCW1w6T.js @@ -0,0 +1 @@ +import{bF as e,bE as a,bn as t,dk as n,bl as l,v as r,A as s,cw as o,L as i,cx as u,M as d,d as c,bi as v,y as p,b as m,W as f,B as h,cr as y,r as b,c as g,J as k,a2 as w,ac as D,dl as M,dm as S,X as x,g as $,bj as C,z as _,a1 as O,e as P,f as V,w as Y,a5 as A,i as I,n as N,j as T,E as F,D as L,p as R,h as E,C as W,k as B,F as j,a8 as H,_ as z,ad as K,dn as U,o as Z,S as G,V as q,a7 as X,a3 as J,l as Q,di as ee,a9 as ae,bp as te,T as ne,dp as le,a4 as re,ai as se,ae as oe,at as ie,aa as ue,dq as de,bo as ce,ak as ve,dr as pe,a6 as me,bm as fe,G as he,a0 as ye}from"./index.DMBpWXpT.js";import{E as be,T as ge}from"./el-popper.Cb3Eus9m.js";import{E as ke}from"./el-scrollbar.BJ_tYB1D.js";import{v as we}from"./index.tvUbLRs9.js";import{d as De}from"./debounce.l44evi-0.js";import{C as Me}from"./index.CP01f_MK.js";import{i as Se}from"./isEqual.B61-3bNT.js";const xe=e=>e||0===e?Array.isArray(e)?e:[e]:[];var $e={exports:{}};$e.exports=function(){var e=1e3,a=6e4,t=36e5,n="millisecond",l="second",r="minute",s="hour",o="day",i="week",u="month",d="quarter",c="year",v="date",p="Invalid Date",m=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,f=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,h={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var a=["th","st","nd","rd"],t=e%100;return"["+e+(a[(t-20)%10]||a[t]||a[0])+"]"}},y=function(e,a,t){var n=String(e);return!n||n.length>=a?e:""+Array(a+1-n.length).join(t)+e},b={s:y,z:function(e){var a=-e.utcOffset(),t=Math.abs(a),n=Math.floor(t/60),l=t%60;return(a<=0?"+":"-")+y(n,2,"0")+":"+y(l,2,"0")},m:function e(a,t){if(a.date()1)return e(s[0])}else{var o=a.name;k[o]=a,l=o}return!n&&l&&(g=l),l||!n&&g},S=function(e,a){if(D(e))return e.clone();var t="object"==typeof a?a:{};return t.date=e,t.args=arguments,new $(t)},x=b;x.l=M,x.i=D,x.w=function(e,a){return S(e,{locale:a.$L,utc:a.$u,x:a.$x,$offset:a.$offset})};var $=function(){function h(e){this.$L=M(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[w]=!0}var y=h.prototype;return y.parse=function(e){this.$d=function(e){var a=e.date,t=e.utc;if(null===a)return new Date(NaN);if(x.u(a))return new Date;if(a instanceof Date)return new Date(a);if("string"==typeof a&&!/Z$/i.test(a)){var n=a.match(m);if(n){var l=n[2]-1||0,r=(n[7]||"0").substring(0,3);return t?new Date(Date.UTC(n[1],l,n[3]||1,n[4]||0,n[5]||0,n[6]||0,r)):new Date(n[1],l,n[3]||1,n[4]||0,n[5]||0,n[6]||0,r)}}return new Date(a)}(e),this.init()},y.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},y.$utils=function(){return x},y.isValid=function(){return!(this.$d.toString()===p)},y.isSame=function(e,a){var t=S(e);return this.startOf(a)<=t&&t<=this.endOf(a)},y.isAfter=function(e,a){return S(e)68?1900:2e3)},o=function(e){return function(a){this[e]=+a}},i=[/[+-]\d\d:?(\d\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if("Z"===e)return 0;var a=e.match(/([+-]|\d\d)/g),t=60*a[1]+(+a[2]||0);return 0===t?0:"+"===a[0]?-t:t}(e)}],u=function(e){var a=r[e];return a&&(a.indexOf?a:a.s.concat(a.f))},d=function(e,a){var t,n=r.meridiem;if(n){for(var l=1;l<=24;l+=1)if(e.indexOf(n(l,0,a))>-1){t=l>12;break}}else t=e===(a?"pm":"PM");return t},c={A:[l,function(e){this.afternoon=d(e,!1)}],a:[l,function(e){this.afternoon=d(e,!0)}],S:[/\d/,function(e){this.milliseconds=100*+e}],SS:[t,function(e){this.milliseconds=10*+e}],SSS:[/\d{3}/,function(e){this.milliseconds=+e}],s:[n,o("seconds")],ss:[n,o("seconds")],m:[n,o("minutes")],mm:[n,o("minutes")],H:[n,o("hours")],h:[n,o("hours")],HH:[n,o("hours")],hh:[n,o("hours")],D:[n,o("day")],DD:[t,o("day")],Do:[l,function(e){var a=r.ordinal,t=e.match(/\d+/);if(this.day=t[0],a)for(var n=1;n<=31;n+=1)a(n).replace(/\[|\]/g,"")===e&&(this.day=n)}],M:[n,o("month")],MM:[t,o("month")],MMM:[l,function(e){var a=u("months"),t=(u("monthsShort")||a.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],MMMM:[l,function(e){var a=u("months").indexOf(e)+1;if(a<1)throw new Error;this.month=a%12||a}],Y:[/[+-]?\d+/,o("year")],YY:[t,function(e){this.year=s(e)}],YYYY:[/\d{4}/,o("year")],Z:i,ZZ:i};function v(t){var n,l;n=t,l=r&&r.formats;for(var s=(t=n.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(a,t,n){var r=n&&n.toUpperCase();return t||l[n]||e[n]||l[r].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,a,t){return a||t.slice(1)}))}))).match(a),o=s.length,i=0;i-1)return new Date(("X"===a?1e3:1)*e);var n=v(a)(e),l=n.year,r=n.month,s=n.day,o=n.hours,i=n.minutes,u=n.seconds,d=n.milliseconds,c=n.zone,p=new Date,m=s||(l||r?1:p.getDate()),f=l||p.getFullYear(),h=0;l&&!r||(h=r>0?r-1:p.getMonth());var y=o||0,b=i||0,g=u||0,k=d||0;return c?new Date(Date.UTC(f,h,m,y,b,g,k+60*c.offset*1e3)):t?new Date(Date.UTC(f,h,m,y,b,g,k)):new Date(f,h,m,y,b,g,k)}catch(w){return new Date("")}}(a,o,n),this.init(),c&&!0!==c&&(this.$L=this.locale(c).$L),d&&a!=this.format(o)&&(this.$d=new Date("")),r={}}else if(o instanceof Array)for(var p=o.length,m=1;m<=p;m+=1){s[1]=o[m-1];var f=t.apply(this,s);if(f.isValid()){this.$d=f.$d,this.$L=f.$L,this.init();break}m===p&&(this.$d=new Date(""))}else l.call(this,e)}}}();const Oe=e(_e.exports),Pe=["hours","minutes","seconds"],Ve="HH:mm:ss",Ye="YYYY-MM-DD",Ae={date:Ye,dates:Ye,week:"gggg[w]ww",year:"YYYY",years:"YYYY",month:"YYYY-MM",months:"YYYY-MM",datetime:`${Ye} ${Ve}`,monthrange:"YYYY-MM",daterange:Ye,datetimerange:`${Ye} ${Ve}`},Ie=(e,a)=>[e>0?e-1:void 0,e,eArray.from(Array.from({length:e}).keys()),Te=e=>e.replace(/\W?m{1,2}|\W?ZZ/g,"").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi,"").trim(),Fe=e=>e.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?Y{2,4}/g,"").trim(),Le=function(e,a){const t=n(e),l=n(a);return t&&l?e.getTime()===a.getTime():!t&&!l&&e===a},Re=function(e,a){const t=l(e),n=l(a);return t&&n?e.length===a.length&&e.every(((e,t)=>Le(e,a[t]))):!t&&!n&&Le(e,a)},Ee=function(e,a,n){const l=t(a)||"x"===a?Ce(e).locale(n):Ce(e,a).locale(n);return l.isValid()?l:void 0},We=function(e,a,n){return t(a)?e:"x"===a?+e:Ce(e).locale(n).format(a)},Be=(e,a)=>{var t;const n=[],l=null==a?void 0:a();for(let r=0;r({})},modelValue:{type:s([Date,Array,String,Number]),default:""},rangeSeparator:{type:String,default:"-"},startPlaceholder:String,endPlaceholder:String,defaultValue:{type:s([Date,Array])},defaultTime:{type:s([Date,Array])},isRange:Boolean,...je,disabledDate:{type:Function},cellClassName:{type:Function},shortcuts:{type:Array,default:()=>[]},arrowControl:Boolean,label:{type:String,default:void 0},tabindex:{type:s([String,Number]),default:0},validateEvent:{type:Boolean,default:!0},unlinkPanels:Boolean,...u,...d(["ariaLabel"])}),Ke=["id","name","placeholder","value","disabled","readonly"],Ue=["id","name","placeholder","value","disabled","readonly"],Ze=c({name:"Picker"}),Ge=c({...Ze,props:ze,emits:["update:modelValue","change","focus","blur","clear","calendar-change","panel-change","visible-change","keydown"],setup(e,{expose:a,emit:t}){const n=e,r=v(),{lang:s}=p(),o=m("date"),i=m("input"),u=m("range"),{form:d,formItem:c}=f(),z=h("ElPopperOptions",{}),{valueOnClear:U}=y(n,null),Z=b(),G=b(),q=b(!1),X=b(!1),J=b(null);let Q=!1,ee=!1;const ae=g((()=>[o.b("editor"),o.bm("editor",n.type),i.e("wrapper"),o.is("disabled",he.value),o.is("active",q.value),u.b("editor"),Ne?u.bm("editor",Ne.value):"",r.class])),te=g((()=>[i.e("icon"),u.e("close-icon"),Ce.value?"":u.e("close-icon--hidden")]));k(q,(e=>{e?w((()=>{e&&(J.value=n.modelValue)})):(Le.value=null,w((()=>{ne(n.modelValue)})))}));const ne=(e,a)=>{!a&&Re(e,J.value)||(t("change",e),n.validateEvent&&(null==c||c.validate("change").catch((e=>D()))))},le=e=>{if(!Re(n.modelValue,e)){let a;l(e)?a=e.map((e=>We(e,n.valueFormat,s.value))):e&&(a=We(e,n.valueFormat,s.value)),t("update:modelValue",e?a:e,s.value)}},re=g((()=>{if(G.value){const e=Ie.value?G.value:G.value.$el;return Array.from(e.querySelectorAll("input"))}return[]})),se=(e,a,t)=>{const n=re.value;n.length&&(t&&"min"!==t?"max"===t&&(n[1].setSelectionRange(e,a),n[1].focus()):(n[0].setSelectionRange(e,a),n[0].focus()))},oe=(e="",a=!1)=>{let t;a||(ee=!0),q.value=a,t=l(e)?e.map((e=>e.toDate())):e?e.toDate():e,Le.value=null,le(t)},ie=()=>{X.value=!0},ue=()=>{t("visible-change",!0)},de=e=>{(null==e?void 0:e.key)===K.esc&&ve(!0,!0)},ce=()=>{X.value=!1,q.value=!1,ee=!1,t("visible-change",!1)},ve=(e=!0,a=!1)=>{ee=a;const[t,n]=$(re);let l=t;!e&&Ie.value&&(l=n),l&&l.focus()},pe=e=>{n.readonly||he.value||q.value||ee||(q.value=!0,t("focus",e))};let me;const fe=e=>{const a=async()=>{setTimeout((()=>{var l;me===a&&((null==(l=Z.value)?void 0:l.isFocusInsideContent())&&!Q||0!==re.value.filter((e=>e.contains(document.activeElement))).length||(Be(),q.value=!1,t("blur",e),n.validateEvent&&(null==c||c.validate("blur").catch((e=>D())))),Q=!1)}),0)};me=a,a()},he=g((()=>n.disabled||(null==d?void 0:d.disabled))),ye=g((()=>{let e;if(Oe.value?ea.value.getDefaultValue&&(e=ea.value.getDefaultValue()):e=l(n.modelValue)?n.modelValue.map((e=>Ee(e,n.valueFormat,s.value))):Ee(n.modelValue,n.valueFormat,s.value),ea.value.getRangeAvailableTime){const a=ea.value.getRangeAvailableTime(e);Se(a,e)||(e=a,le(l(e)?e.map((e=>e.toDate())):e.toDate()))}return l(e)&&e.some((e=>!e))&&(e=[]),e})),ge=g((()=>{if(!ea.value.panelReady)return"";const e=He(ye.value);return l(Le.value)?[Le.value[0]||e&&e[0]||"",Le.value[1]||e&&e[1]||""]:null!==Le.value?Le.value:!we.value&&Oe.value||!q.value&&Oe.value?"":e?De.value||Me.value||xe.value?e.join(", "):e:""})),ke=g((()=>n.type.includes("time"))),we=g((()=>n.type.startsWith("time"))),De=g((()=>"dates"===n.type)),Me=g((()=>"months"===n.type)),xe=g((()=>"years"===n.type)),$e=g((()=>n.prefixIcon||(ke.value?M:S))),Ce=b(!1),_e=e=>{n.readonly||he.value||(Ce.value&&(e.stopPropagation(),ve(!0,!0),w((()=>{ee=!1})),le(U.value),ne(U.value,!0),Ce.value=!1,q.value=!1,ea.value.handleClear&&ea.value.handleClear()),t("clear"))},Oe=g((()=>{const{modelValue:e}=n;return!e||l(e)&&!e.filter(Boolean).length})),Pe=async e=>{var a;n.readonly||he.value||("INPUT"!==(null==(a=e.target)?void 0:a.tagName)||re.value.includes(document.activeElement))&&(q.value=!0)},Ve=()=>{n.readonly||he.value||!Oe.value&&n.clearable&&(Ce.value=!0)},Ye=()=>{Ce.value=!1},Ae=e=>{var a;n.readonly||he.value||("INPUT"!==(null==(a=e.touches[0].target)?void 0:a.tagName)||re.value.includes(document.activeElement))&&(q.value=!0)},Ie=g((()=>n.type.includes("range"))),Ne=x(),Te=g((()=>{var e,a;return null==(a=null==(e=$(Z))?void 0:e.popperRef)?void 0:a.contentRef})),Fe=g((()=>{var e;return $(Ie)?$(G):null==(e=$(G))?void 0:e.$el}));C(Fe,(e=>{const a=$(Te),t=$(Fe);a&&(e.target===a||e.composedPath().includes(a))||e.target===t||e.composedPath().includes(t)||(q.value=!1)}));const Le=b(null),Be=()=>{if(Le.value){const e=je(ge.value);e&&ze(e)&&(le(l(e)?e.map((e=>e.toDate())):e.toDate()),Le.value=null)}""===Le.value&&(le(U.value),ne(U.value),Le.value=null)},je=e=>e?ea.value.parseUserInput(e):null,He=e=>e?ea.value.formatToString(e):null,ze=e=>ea.value.isValidValue(e),Ze=async e=>{if(n.readonly||he.value)return;const{code:a}=e;if(t("keydown",e),a!==K.esc)if(a===K.down&&(ea.value.handleFocusPicker&&(e.preventDefault(),e.stopPropagation()),!1===q.value&&(q.value=!0,await w()),ea.value.handleFocusPicker))ea.value.handleFocusPicker();else{if(a!==K.tab)return a===K.enter||a===K.numpadEnter?((null===Le.value||""===Le.value||ze(je(ge.value)))&&(Be(),q.value=!1),void e.stopPropagation()):void(Le.value?e.stopPropagation():ea.value.handleKeydownInput&&ea.value.handleKeydownInput(e));Q=!0}else!0===q.value&&(q.value=!1,e.preventDefault(),e.stopPropagation())},Ge=e=>{Le.value=e,q.value||(q.value=!0)},qe=e=>{const a=e.target;Le.value?Le.value=[a.value,Le.value[1]]:Le.value=[a.value,null]},Xe=e=>{const a=e.target;Le.value?Le.value=[Le.value[0],a.value]:Le.value=[null,a.value]},Je=()=>{var e;const a=Le.value,t=je(a&&a[0]),n=$(ye);if(t&&t.isValid()){Le.value=[He(t),(null==(e=ge.value)?void 0:e[1])||null];const a=[t,n&&(n[1]||null)];ze(a)&&(le(a),Le.value=null)}},Qe=()=>{var e;const a=$(Le),t=je(a&&a[1]),n=$(ye);if(t&&t.isValid()){Le.value=[(null==(e=$(ge))?void 0:e[0])||null,He(t)];const a=[n&&n[0],t];ze(a)&&(le(a),Le.value=null)}},ea=b({}),aa=e=>{ea.value[e[0]]=e[1],ea.value.panelReady=!0},ta=e=>{t("calendar-change",e)},na=(e,a,n)=>{t("panel-change",e,a,n)};return _("EP_PICKER_BASE",{props:n}),O({from:"label",replacement:"aria-label",version:"2.8.0",scope:"el-time-picker",ref:"https://element-plus.org/en-US/component/time-picker.html"},g((()=>!!n.label))),a({focus:ve,handleFocusInput:pe,handleBlurInput:fe,handleOpen:()=>{q.value=!0},handleClose:()=>{q.value=!1},onPick:oe}),(e,a)=>(P(),V($(be),H({ref_key:"refPopper",ref:Z,visible:q.value,effect:"light",pure:"",trigger:"click"},e.$attrs,{role:"dialog",teleported:"",transition:`${$(o).namespace.value}-zoom-in-top`,"popper-class":[`${$(o).namespace.value}-picker__popper`,e.popperClass],"popper-options":$(z),"fallback-placements":["bottom","top","right","left"],"gpu-acceleration":!1,"stop-popper-mouse-event":!1,"hide-after":0,persistent:"",onBeforeShow:ie,onShow:ue,onHide:ce}),{default:Y((()=>[$(Ie)?(P(),E("div",{key:1,ref_key:"inputRef",ref:G,class:I($(ae)),style:N(e.$attrs.style),onClick:pe,onMouseenter:Ve,onMouseleave:Ye,onTouchstartPassive:Ae,onKeydown:Ze},[$($e)?(P(),V($(F),{key:0,class:I([$(i).e("icon"),$(u).e("icon")]),onMousedown:T(Pe,["prevent"]),onTouchstartPassive:Ae},{default:Y((()=>[(P(),V(L($($e))))])),_:1},8,["class","onMousedown"])):R("v-if",!0),W("input",{id:e.id&&e.id[0],autocomplete:"off",name:e.name&&e.name[0],placeholder:e.startPlaceholder,value:$(ge)&&$(ge)[0],disabled:$(he),readonly:!e.editable||e.readonly,class:I($(u).b("input")),onMousedown:Pe,onInput:qe,onChange:Je,onFocus:pe,onBlur:fe},null,42,Ke),B(e.$slots,"range-separator",{},(()=>[W("span",{class:I($(u).b("separator"))},j(e.rangeSeparator),3)])),W("input",{id:e.id&&e.id[1],autocomplete:"off",name:e.name&&e.name[1],placeholder:e.endPlaceholder,value:$(ge)&&$(ge)[1],disabled:$(he),readonly:!e.editable||e.readonly,class:I($(u).b("input")),onMousedown:Pe,onFocus:pe,onBlur:fe,onInput:Xe,onChange:Qe},null,42,Ue),e.clearIcon?(P(),V($(F),{key:1,class:I($(te)),onClick:_e},{default:Y((()=>[(P(),V(L(e.clearIcon)))])),_:1},8,["class"])):R("v-if",!0)],38)):(P(),V($(A),{key:0,id:e.id,ref_key:"inputRef",ref:G,"container-role":"combobox","model-value":$(ge),name:e.name,size:$(Ne),disabled:$(he),placeholder:e.placeholder,class:I([$(o).b("editor"),$(o).bm("editor",e.type),e.$attrs.class]),style:N(e.$attrs.style),readonly:!e.editable||e.readonly||$(De)||$(Me)||$(xe)||"week"===e.type,"aria-label":e.label||e.ariaLabel,tabindex:e.tabindex,"validate-event":!1,onInput:Ge,onFocus:pe,onBlur:fe,onKeydown:Ze,onChange:Be,onMousedown:Pe,onMouseenter:Ve,onMouseleave:Ye,onTouchstartPassive:Ae,onClick:a[0]||(a[0]=T((()=>{}),["stop"]))},{prefix:Y((()=>[$($e)?(P(),V($(F),{key:0,class:I($(i).e("icon")),onMousedown:T(Pe,["prevent"]),onTouchstartPassive:Ae},{default:Y((()=>[(P(),V(L($($e))))])),_:1},8,["class","onMousedown"])):R("v-if",!0)])),suffix:Y((()=>[Ce.value&&e.clearIcon?(P(),V($(F),{key:0,class:I(`${$(i).e("icon")} clear-icon`),onClick:T(_e,["stop"])},{default:Y((()=>[(P(),V(L(e.clearIcon)))])),_:1},8,["class","onClick"])):R("v-if",!0)])),_:1},8,["id","model-value","name","size","disabled","placeholder","class","style","readonly","aria-label","tabindex","onKeydown"]))])),content:Y((()=>[B(e.$slots,"default",{visible:q.value,actualVisible:X.value,parsedValue:$(ye),format:e.format,dateFormat:e.dateFormat,timeFormat:e.timeFormat,unlinkPanels:e.unlinkPanels,type:e.type,defaultValue:e.defaultValue,onPick:oe,onSelectRange:se,onSetPickerOption:aa,onCalendarChange:ta,onPanelChange:na,onKeydown:de,onMousedown:a[1]||(a[1]=T((()=>{}),["stop"]))})])),_:3},16,["visible","transition","popper-class","popper-options"]))}});var qe=z(Ge,[["__file","picker.vue"]]);const Xe=r({...He,datetimeRole:String,parsedValue:{type:s(Object)}}),Je=e=>e.map(((e,a)=>e||a)).filter((e=>!0!==e)),Qe=(e,a,t)=>({getHoursList:(a,t)=>Be(24,e&&(()=>null==e?void 0:e(a,t))),getMinutesList:(e,t,n)=>Be(60,a&&(()=>null==a?void 0:a(e,t,n))),getSecondsList:(e,a,n,l)=>Be(60,t&&(()=>null==t?void 0:t(e,a,n,l)))}),ea=r({role:{type:String,required:!0},spinnerDate:{type:s(Object),required:!0},showSeconds:{type:Boolean,default:!0},arrowControl:Boolean,amPmMode:{type:s(String),default:""},...je}),aa=["onClick"],ta=["onMouseenter"];var na=z(c({__name:"basic-time-spinner",props:ea,emits:["change","select-range","set-option"],setup(e,{emit:a}){const t=e,n=m("time"),{getHoursList:l,getMinutesList:r,getSecondsList:s}=Qe(t.disabledHours,t.disabledMinutes,t.disabledSeconds);let o=!1;const i=b(),u={hours:b(),minutes:b(),seconds:b()},d=g((()=>t.showSeconds?Pe:Pe.slice(0,2))),c=g((()=>{const{spinnerDate:e}=t;return{hours:e.hour(),minutes:e.minute(),seconds:e.second()}})),v=g((()=>{const{hours:e,minutes:a}=$(c);return{hours:l(t.role),minutes:r(e,t.role),seconds:s(e,a,t.role)}})),p=g((()=>{const{hours:e,minutes:a,seconds:t}=$(c);return{hours:Ie(e,23),minutes:Ie(a,59),seconds:Ie(t,59)}})),f=De((e=>{o=!1,D(e)}),200),h=e=>{if(!!!t.amPmMode)return"";let a=e<12?" am":" pm";return"A"===t.amPmMode&&(a=a.toUpperCase()),a},y=e=>{let t;switch(e){case"hours":t=[0,2];break;case"minutes":t=[3,5];break;case"seconds":t=[6,8]}const[n,l]=t;a("select-range",n,l),i.value=e},D=e=>{x(e,$(c)[e])},M=()=>{D("hours"),D("minutes"),D("seconds")},S=e=>e.querySelector(`.${n.namespace.value}-scrollbar__wrap`),x=(e,a)=>{if(t.arrowControl)return;const n=$(u[e]);n&&n.$el&&(S(n.$el).scrollTop=Math.max(0,a*C(e)))},C=e=>{const a=$(u[e]),t=null==a?void 0:a.$el.querySelector("li");return t&&Number.parseFloat(U(t,"height"))||0},_=()=>{A(1)},O=()=>{A(-1)},A=e=>{i.value||y("hours");const a=i.value,t=$(c)[a],n="hours"===i.value?24:60,l=N(a,t,e,n);T(a,l),x(a,l),w((()=>y(a)))},N=(e,a,t,n)=>{let l=(a+t+n)%n;const r=$(v)[e];for(;r[l]&&l!==a;)l=(l+t+n)%n;return l},T=(e,n)=>{if($(v)[e][n])return;const{hours:l,minutes:r,seconds:s}=$(c);let o;switch(e){case"hours":o=t.spinnerDate.hour(n).minute(r).second(s);break;case"minutes":o=t.spinnerDate.hour(l).minute(n).second(s);break;case"seconds":o=t.spinnerDate.hour(l).minute(r).second(n)}a("change",o)},L=e=>$(u[e]).$el.offsetHeight,B=()=>{const e=e=>{const a=$(u[e]);a&&a.$el&&(S(a.$el).onscroll=()=>{(e=>{o=!0,f(e);const a=Math.min(Math.round((S($(u[e]).$el).scrollTop-(.5*L(e)-10)/C(e)+3)/C(e)),"hours"===e?23:59);T(e,a)})(e)})};e("hours"),e("minutes"),e("seconds")};Z((()=>{w((()=>{!t.arrowControl&&B(),M(),"start"===t.role&&y("hours")}))}));return a("set-option",[`${t.role}_scrollDown`,A]),a("set-option",[`${t.role}_emitSelectRange`,y]),k((()=>t.spinnerDate),(()=>{o||M()})),(e,a)=>(P(),E("div",{class:I([$(n).b("spinner"),{"has-seconds":e.showSeconds}])},[e.arrowControl?R("v-if",!0):(P(!0),E(G,{key:0},q($(d),(a=>(P(),V($(ke),{key:a,ref_for:!0,ref:e=>((e,a)=>{u[a].value=e})(e,a),class:I($(n).be("spinner","wrapper")),"wrap-style":"max-height: inherit;","view-class":$(n).be("spinner","list"),noresize:"",tag:"ul",onMouseenter:e=>y(a),onMousemove:e=>D(a)},{default:Y((()=>[(P(!0),E(G,null,q($(v)[a],((t,l)=>(P(),E("li",{key:l,class:I([$(n).be("spinner","item"),$(n).is("active",l===$(c)[a]),$(n).is("disabled",t)]),onClick:e=>((e,{value:a,disabled:t})=>{t||(T(e,a),y(e),x(e,a))})(a,{value:l,disabled:t})},["hours"===a?(P(),E(G,{key:0},[X(j(("0"+(e.amPmMode?l%12||12:l)).slice(-2))+j(h(l)),1)],64)):(P(),E(G,{key:1},[X(j(("0"+l).slice(-2)),1)],64))],10,aa)))),128))])),_:2},1032,["class","view-class","onMouseenter","onMousemove"])))),128)),e.arrowControl?(P(!0),E(G,{key:1},q($(d),(a=>(P(),E("div",{key:a,class:I([$(n).be("spinner","wrapper"),$(n).is("arrow")]),onMouseenter:e=>y(a)},[J((P(),V($(F),{class:I(["arrow-up",$(n).be("spinner","arrow")])},{default:Y((()=>[Q($(ee))])),_:1},8,["class"])),[[$(we),O]]),J((P(),V($(F),{class:I(["arrow-down",$(n).be("spinner","arrow")])},{default:Y((()=>[Q($(ae))])),_:1},8,["class"])),[[$(we),_]]),W("ul",{class:I($(n).be("spinner","list"))},[(P(!0),E(G,null,q($(p)[a],((t,l)=>(P(),E("li",{key:l,class:I([$(n).be("spinner","item"),$(n).is("active",t===$(c)[a]),$(n).is("disabled",$(v)[a][t])])},["number"==typeof t?(P(),E(G,{key:0},["hours"===a?(P(),E(G,{key:0},[X(j(("0"+(e.amPmMode?t%12||12:t)).slice(-2))+j(h(t)),1)],64)):(P(),E(G,{key:1},[X(j(("0"+t).slice(-2)),1)],64))],64)):R("v-if",!0)],2)))),128))],2)],42,ta)))),128)):R("v-if",!0)],2))}}),[["__file","basic-time-spinner.vue"]]);const la=c({__name:"panel-time-pick",props:Xe,emits:["pick","select-range","set-picker-option"],setup(e,{emit:a}){const t=e,n=h("EP_PICKER_BASE"),{arrowControl:l,disabledHours:r,disabledMinutes:s,disabledSeconds:o,defaultValue:i}=n.props,{getAvailableHours:u,getAvailableMinutes:d,getAvailableSeconds:c}=((e,a,t)=>{const{getHoursList:n,getMinutesList:l,getSecondsList:r}=Qe(e,a,t);return{getAvailableHours:(e,a)=>Je(n(e,a)),getAvailableMinutes:(e,a,t)=>Je(l(e,a,t)),getAvailableSeconds:(e,a,t,n)=>Je(r(e,a,t,n))}})(r,s,o),v=m("time"),{t:f,lang:y}=p(),w=b([0,2]),D=(e=>{const a=b(e.parsedValue);return k((()=>e.visible),(t=>{t||(a.value=e.parsedValue)})),a})(t),M=g((()=>te(t.actualVisible)?`${v.namespace.value}-zoom-in-top`:"")),S=g((()=>t.format.includes("ss"))),x=g((()=>t.format.includes("A")?"A":t.format.includes("a")?"a":"")),C=()=>{a("pick",D.value,!1)},_=e=>{if(!t.visible)return;const n=F(e).millisecond(0);a("pick",n,!0)},O=(e,t)=>{a("select-range",e,t),w.value=[e,t]},{timePickerOptions:A,onSetOption:N,getAvailableTime:T}=(({getAvailableHours:e,getAvailableMinutes:a,getAvailableSeconds:t})=>{const n={};return{timePickerOptions:n,getAvailableTime:(n,l,r,s)=>{const o={hour:e,minute:a,second:t};let i=n;return["hour","minute","second"].forEach((e=>{if(o[e]){let a;const t=o[e];switch(e){case"minute":a=t(i.hour(),l,s);break;case"second":a=t(i.hour(),i.minute(),l,s);break;default:a=t(l,s)}if((null==a?void 0:a.length)&&!a.includes(i[e]())){const t=r?0:a.length-1;i=i[e](a[t])}}})),i},onSetOption:([e,a])=>{n[e]=a}}})({getAvailableHours:u,getAvailableMinutes:d,getAvailableSeconds:c}),F=e=>T(e,t.datetimeRole||"",!0);return a("set-picker-option",["isValidValue",e=>{const a=Ce(e).locale(y.value),t=F(a);return a.isSame(t)}]),a("set-picker-option",["formatToString",e=>e?e.format(t.format):null]),a("set-picker-option",["parseUserInput",e=>e?Ce(e,t.format).locale(y.value):null]),a("set-picker-option",["handleKeydownInput",e=>{const a=e.code,{left:t,right:n,up:l,down:r}=K;if([t,n].includes(a)){return(e=>{const a=[0,3].concat(S.value?[6]:[]),t=["hours","minutes"].concat(S.value?["seconds"]:[]),n=(a.indexOf(w.value[0])+e+a.length)%a.length;A.start_emitSelectRange(t[n])})(a===t?-1:1),void e.preventDefault()}if([l,r].includes(a)){const t=a===l?-1:1;return A.start_scrollDown(t),void e.preventDefault()}}]),a("set-picker-option",["getRangeAvailableTime",F]),a("set-picker-option",["getDefaultValue",()=>Ce(i).locale(y.value)]),(e,n)=>(P(),V(ne,{name:$(M)},{default:Y((()=>[e.actualVisible||e.visible?(P(),E("div",{key:0,class:I($(v).b("panel"))},[W("div",{class:I([$(v).be("panel","content"),{"has-seconds":$(S)}])},[Q(na,{ref:"spinner",role:e.datetimeRole||"start","arrow-control":$(l),"show-seconds":$(S),"am-pm-mode":$(x),"spinner-date":e.parsedValue,"disabled-hours":$(r),"disabled-minutes":$(s),"disabled-seconds":$(o),onChange:_,onSetOption:$(N),onSelectRange:O},null,8,["role","arrow-control","show-seconds","am-pm-mode","spinner-date","disabled-hours","disabled-minutes","disabled-seconds","onSetOption"])],2),W("div",{class:I($(v).be("panel","footer"))},[W("button",{type:"button",class:I([$(v).be("panel","btn"),"cancel"]),onClick:C},j($(f)("el.datepicker.cancel")),3),W("button",{type:"button",class:I([$(v).be("panel","btn"),"confirm"]),onClick:n[0]||(n[0]=e=>((e=!1,n=!1)=>{n||a("pick",t.parsedValue,e)})())},j($(f)("el.datepicker.confirm")),3)],2)],2)):R("v-if",!0)])),_:1},8,["name"]))}});var ra=z(la,[["__file","panel-time-pick.vue"]]),sa={exports:{}};sa.exports=function(e,a,t){var n=a.prototype,l=function(e){return e&&(e.indexOf?e:e.s)},r=function(e,a,t,n,r){var s=e.name?e:e.$locale(),o=l(s[a]),i=l(s[t]),u=o||i.map((function(e){return e.slice(0,n)}));if(!r)return u;var d=s.weekStart;return u.map((function(e,a){return u[(a+(d||0))%7]}))},s=function(){return t.Ls[t.locale()]},o=function(e,a){return e.formats[a]||e.formats[a.toUpperCase()].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,a,t){return a||t.slice(1)}))},i=function(){var e=this;return{months:function(a){return a?a.format("MMMM"):r(e,"months")},monthsShort:function(a){return a?a.format("MMM"):r(e,"monthsShort","months",3)},firstDayOfWeek:function(){return e.$locale().weekStart||0},weekdays:function(a){return a?a.format("dddd"):r(e,"weekdays")},weekdaysMin:function(a){return a?a.format("dd"):r(e,"weekdaysMin","weekdays",2)},weekdaysShort:function(a){return a?a.format("ddd"):r(e,"weekdaysShort","weekdays",3)},longDateFormat:function(a){return o(e.$locale(),a)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};n.localeData=function(){return i.bind(this)()},t.localeData=function(){var e=s();return{firstDayOfWeek:function(){return e.weekStart||0},weekdays:function(){return t.weekdays()},weekdaysShort:function(){return t.weekdaysShort()},weekdaysMin:function(){return t.weekdaysMin()},months:function(){return t.months()},monthsShort:function(){return t.monthsShort()},longDateFormat:function(a){return o(e,a)},meridiem:e.meridiem,ordinal:e.ordinal}},t.months=function(){return r(s(),"months")},t.monthsShort=function(){return r(s(),"monthsShort","months",3)},t.weekdays=function(e){return r(s(),"weekdays",null,null,e)},t.weekdaysShort=function(e){return r(s(),"weekdaysShort","weekdays",3,e)},t.weekdaysMin=function(e){return r(s(),"weekdaysMin","weekdays",2,e)}};const oa=e(sa.exports);var ia={exports:{}};ia.exports=function(e,a){var t=a.prototype,n=t.format;t.format=function(e){var a=this,t=this.$locale();if(!this.isValid())return n.bind(this)(e);var l=this.$utils(),r=(e||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(e){switch(e){case"Q":return Math.ceil((a.$M+1)/3);case"Do":return t.ordinal(a.$D);case"gggg":return a.weekYear();case"GGGG":return a.isoWeekYear();case"wo":return t.ordinal(a.week(),"W");case"w":case"ww":return l.s(a.week(),"w"===e?1:2,"0");case"W":case"WW":return l.s(a.isoWeek(),"W"===e?1:2,"0");case"k":case"kk":return l.s(String(0===a.$H?24:a.$H),"k"===e?1:2,"0");case"X":return Math.floor(a.$d.getTime()/1e3);case"x":return a.$d.getTime();case"z":return"["+a.offsetName()+"]";case"zzz":return"["+a.offsetName("long")+"]";default:return e}}));return n.bind(this)(r)}};const ua=e(ia.exports);var da,ca,va={exports:{}};const pa=e(va.exports=(da="week",ca="year",function(e,a,t){var n=a.prototype;n.week=function(e){if(void 0===e&&(e=null),null!==e)return this.add(7*(e-this.week()),"day");var a=this.$locale().yearStart||1;if(11===this.month()&&this.date()>25){var n=t(this).startOf(ca).add(1,ca).date(a),l=t(this).endOf(da);if(n.isBefore(l))return 1}var r=t(this).startOf(ca).date(a).startOf(da).subtract(1,"millisecond"),s=this.diff(r,da,!0);return s<0?t(this).startOf("week").week():Math.ceil(s)},n.weeks=function(e){return void 0===e&&(e=null),this.week(e)}}));var ma={exports:{}};ma.exports=function(e,a){a.prototype.weekYear=function(){var e=this.month(),a=this.week(),t=this.year();return 1===a&&11===e?t+1:0===e&&a>=52?t-1:t}};const fa=e(ma.exports);var ha={exports:{}};ha.exports=function(e,a,t){a.prototype.dayOfYear=function(e){var a=Math.round((t(this).startOf("day")-t(this).startOf("year"))/864e5)+1;return null==e?a:this.add(e-a,"day")}};const ya=e(ha.exports);var ba={exports:{}};ba.exports=function(e,a){a.prototype.isSameOrAfter=function(e,a){return this.isSame(e,a)||this.isAfter(e,a)}};const ga=e(ba.exports);var ka={exports:{}};const wa=e(ka.exports=function(e,a){a.prototype.isSameOrBefore=function(e,a){return this.isSame(e,a)||this.isBefore(e,a)}}),Da=Symbol(),Ma=r({...ze,type:{type:s(String),default:"date"}}),Sa=["date","dates","year","years","month","months","week","range"],xa=r({disabledDate:{type:s(Function)},date:{type:s(Object),required:!0},minDate:{type:s(Object)},maxDate:{type:s(Object)},parsedValue:{type:s([Object,Array])},rangeState:{type:s(Object),default:()=>({endDate:null,selecting:!1})}}),$a=r({type:{type:s(String),required:!0,values:["year","years","month","months","date","dates","week","datetime","datetimerange","daterange","monthrange"]},dateFormat:String,timeFormat:String}),Ca=r({unlinkPanels:Boolean,parsedValue:{type:s(Array)}}),_a=e=>({type:String,values:Sa,default:e}),Oa=r({...$a,parsedValue:{type:s([Object,Array])},visible:{type:Boolean},format:{type:String,default:""}}),Pa=r({...xa,cellClassName:{type:s(Function)},showWeekNumber:Boolean,selectionMode:_a("date")}),Va=e=>{if(!l(e))return!1;const[a,t]=e;return Ce.isDayjs(a)&&Ce.isDayjs(t)&&a.isSameOrBefore(t)},Ya=(e,{lang:a,unit:t,unlinkPanels:n})=>{let r;if(l(e)){let[l,r]=e.map((e=>Ce(e).locale(a)));return n||(r=l.add(1,t)),[l,r]}return r=e?Ce(e):Ce(),r=r.locale(a),[r,r.add(1,t)]},Aa=(e="")=>["normal","today"].includes(e),Ia=(e,a)=>{const{lang:t}=p(),n=b(),l=b(),r=b(),s=b(),o=b([[],[],[],[],[],[]]);let i=!1;const u=e.date.$locale().weekStart||7,d=e.date.locale("en").localeData().weekdaysShort().map((e=>e.toLowerCase())),c=g((()=>u>3?7-u:-u)),v=g((()=>{const a=e.date.startOf("month");return a.subtract(a.day()||7,"day")})),m=g((()=>d.concat(d).slice(u,u+7))),f=g((()=>le($(S)).some((e=>e.isCurrent)))),h=g((()=>{const a=e.date.startOf("month");return{startOfMonthDay:a.day()||7,dateCountOfMonth:a.daysInMonth(),dateCountOfLastMonth:a.subtract(1,"month").daysInMonth()}})),y=g((()=>"dates"===e.selectionMode?xe(e.parsedValue):[])),D=(a,{columnIndex:t,rowIndex:n},l)=>{const{disabledDate:r,cellClassName:s}=e,o=$(y),i=((e,{count:a,rowIndex:t,columnIndex:n})=>{const{startOfMonthDay:l,dateCountOfMonth:r,dateCountOfLastMonth:s}=$(h),o=$(c);if(!(t>=0&&t<=1))return a<=r?e.text=a:(e.text=a-r,e.type="next-month"),!0;{const r=l+o<0?7+l+o:l+o;if(n+7*t>=r)return e.text=a,!0;e.text=s-(r-n%7)+1+7*t,e.type="prev-month"}return!1})(a,{count:l,rowIndex:n,columnIndex:t}),u=a.dayjs.toDate();return a.selected=o.find((e=>e.isSame(a.dayjs,"day"))),a.isSelected=!!a.selected,a.isCurrent=C(a),a.disabled=null==r?void 0:r(u),a.customClass=null==s?void 0:s(u),i},M=a=>{if("week"===e.selectionMode){const[t,n]=e.showWeekNumber?[1,7]:[0,6],l=V(a[t+1]);a[t].inRange=l,a[t].start=l,a[n].inRange=l,a[n].end=l}},S=g((()=>{const{minDate:a,maxDate:n,rangeState:l,showWeekNumber:r}=e,s=$(c),i=$(o),u="day";let d=1;if(r)for(let e=0;e<6;e++)i[e][0]||(i[e][0]={type:"week",text:$(v).add(7*e+1,u).week()});return((e,a,{columnIndexOffset:t,startDate:n,nextEndDate:l,now:r,unit:s,relativeDateGetter:o,setCellMetadata:i,setRowMetadata:u})=>{for(let d=0;d$(v).add(e-s,u),setCellMetadata:(...e)=>{D(...e,d)&&(d+=1)},setRowMetadata:M}),i}));k((()=>e.date),(async()=>{var e;(null==(e=$(n))?void 0:e.contains(document.activeElement))&&(await w(),await x())}));const x=async()=>{var e;return null==(e=$(l))?void 0:e.focus()},C=a=>"date"===e.selectionMode&&Aa(a.type)&&_(a,e.parsedValue),_=(a,n)=>!!n&&Ce(n).locale($(t)).isSame(e.date.date(Number(a.text)),"day"),O=(a,t)=>{const n=7*a+(t-(e.showWeekNumber?1:0))-$(c);return $(v).add(n,"day")},P=(t,n=!1)=>{const l=t.target.closest("td");if(!l)return;const r=l.parentNode.rowIndex-1,s=l.cellIndex,o=$(S)[r][s];if(o.disabled||"week"===o.type)return;const i=O(r,s);switch(e.selectionMode){case"range":(t=>{e.rangeState.selecting&&e.minDate?(t>=e.minDate?a("pick",{minDate:e.minDate,maxDate:t}):a("pick",{minDate:t,maxDate:e.minDate}),a("select",!1)):(a("pick",{minDate:t,maxDate:null}),a("select",!0))})(i);break;case"date":a("pick",i,n);break;case"week":(e=>{const t=e.week(),n=`${e.year()}w${t}`;a("pick",{year:e.year(),week:t,value:n,date:e.startOf("week")})})(i);break;case"dates":((t,n)=>{const l=n?xe(e.parsedValue).filter((e=>(null==e?void 0:e.valueOf())!==t.valueOf())):xe(e.parsedValue).concat([t]);a("pick",l)})(i,!!o.selected)}},V=a=>{if("week"!==e.selectionMode)return!1;let t=e.date.startOf("day");if("prev-month"===a.type&&(t=t.subtract(1,"month")),"next-month"===a.type&&(t=t.add(1,"month")),t=t.date(Number.parseInt(a.text,10)),e.parsedValue&&!Array.isArray(e.parsedValue)){const a=(e.parsedValue.day()-u+7)%7-1;return e.parsedValue.subtract(a,"day").isSame(t,"day")}return!1};return{WEEKS:m,rows:S,tbodyRef:n,currentCellRef:l,focus:x,isCurrent:C,isWeekActive:V,isSelectedCell:e=>!$(f)&&1===(null==e?void 0:e.text)&&"normal"===e.type||e.isCurrent,handlePickDate:P,handleMouseUp:e=>{e.target.closest("td")&&(i=!1)},handleMouseDown:e=>{e.target.closest("td")&&(i=!0)},handleMouseMove:t=>{var n;if(!e.rangeState.selecting)return;let l=t.target;if("SPAN"===l.tagName&&(l=null==(n=l.parentNode)?void 0:n.parentNode),"DIV"===l.tagName&&(l=l.parentNode),"TD"!==l.tagName)return;const o=l.parentNode.rowIndex-1,i=l.cellIndex;$(S)[o][i].disabled||o===$(r)&&i===$(s)||(r.value=o,s.value=i,a("changerange",{selecting:!0,endDate:O(o,i)}))},handleFocus:a=>{i||$(f)||"date"!==e.selectionMode||P(a,!0)}}};var Na=c({name:"ElDatePickerCell",props:r({cell:{type:s(Object)}}),setup(e){const a=m("date-table-cell"),{slots:t}=h(Da);return()=>{const{cell:n}=e;return B(t,"default",{...n},(()=>[Q("div",{class:a.b()},[Q("span",{class:a.e("text")},[null==n?void 0:n.text])])]))}}});const Ta=["aria-label"],Fa={key:0,scope:"col"},La=["aria-label"],Ra=["aria-current","aria-selected","tabindex"],Ea=c({__name:"basic-date-table",props:Pa,emits:["changerange","pick","select"],setup(e,{expose:a,emit:t}){const n=e,{WEEKS:l,rows:r,tbodyRef:s,currentCellRef:o,focus:i,isCurrent:u,isWeekActive:d,isSelectedCell:c,handlePickDate:v,handleMouseUp:f,handleMouseDown:h,handleMouseMove:y,handleFocus:b}=Ia(n,t),{tableLabel:k,tableKls:w,weekLabel:D,getCellClasses:M,getRowKls:S,t:x}=((e,{isCurrent:a,isWeekActive:t})=>{const n=m("date-table"),{t:l}=p();return{tableKls:g((()=>[n.b(),{"is-week-mode":"week"===e.selectionMode}])),tableLabel:g((()=>l("el.datepicker.dateTablePrompt"))),weekLabel:g((()=>l("el.datepicker.week"))),getCellClasses:t=>{const n=[];return Aa(t.type)&&!t.disabled?(n.push("available"),"today"===t.type&&n.push("today")):n.push(t.type),a(t)&&n.push("current"),t.inRange&&(Aa(t.type)||"week"===e.selectionMode)&&(n.push("in-range"),t.start&&n.push("start-date"),t.end&&n.push("end-date")),t.disabled&&n.push("disabled"),t.selected&&n.push("selected"),t.customClass&&n.push(t.customClass),n.join(" ")},getRowKls:e=>[n.e("row"),{current:t(e)}],t:l}})(n,{isCurrent:u,isWeekActive:d});return a({focus:i}),(e,a)=>(P(),E("table",{"aria-label":$(k),class:I($(w)),cellspacing:"0",cellpadding:"0",role:"grid",onClick:a[1]||(a[1]=(...e)=>$(v)&&$(v)(...e)),onMousemove:a[2]||(a[2]=(...e)=>$(y)&&$(y)(...e)),onMousedown:a[3]||(a[3]=T(((...e)=>$(h)&&$(h)(...e)),["prevent"])),onMouseup:a[4]||(a[4]=(...e)=>$(f)&&$(f)(...e))},[W("tbody",{ref_key:"tbodyRef",ref:s},[W("tr",null,[e.showWeekNumber?(P(),E("th",Fa,j($(D)),1)):R("v-if",!0),(P(!0),E(G,null,q($(l),((e,a)=>(P(),E("th",{key:a,"aria-label":$(x)("el.datepicker.weeksFull."+e),scope:"col"},j($(x)("el.datepicker.weeks."+e)),9,La)))),128))]),(P(!0),E(G,null,q($(r),((e,t)=>(P(),E("tr",{key:t,class:I($(S)(e[1]))},[(P(!0),E(G,null,q(e,((e,n)=>(P(),E("td",{key:`${t}.${n}`,ref_for:!0,ref:a=>$(c)(e)&&(o.value=a),class:I($(M)(e)),"aria-current":e.isCurrent?"date":void 0,"aria-selected":e.isCurrent,tabindex:$(c)(e)?0:-1,onFocus:a[0]||(a[0]=(...e)=>$(b)&&$(b)(...e))},[Q($(Na),{cell:e},null,8,["cell"])],42,Ra)))),128))],2)))),128))],512)],42,Ta))}});var Wa=z(Ea,[["__file","basic-date-table.vue"]]);const Ba=r({...xa,selectionMode:_a("month")}),ja=["aria-label"],Ha=["aria-selected","aria-label","tabindex","onKeydown"],za={class:"cell"},Ka=c({__name:"basic-month-table",props:Ba,emits:["changerange","pick","select"],setup(e,{expose:a,emit:t}){const n=e,l=m("month-table"),{t:r,lang:s}=p(),o=b(),i=b(),u=b(n.date.locale("en").localeData().monthsShort().map((e=>e.toLowerCase()))),d=b([[],[],[]]),c=b(),v=b(),f=g((()=>{var e,a;const t=d.value,l=Ce().locale(s.value).startOf("month");for(let r=0;r<3;r++){const s=t[r];for(let t=0;t<4;t++){const o=s[t]||(s[t]={row:r,column:t,type:"normal",inRange:!1,start:!1,end:!1,text:-1,disabled:!1});o.type="normal";const i=4*r+t,u=n.date.startOf("year").month(i),d=n.rangeState.endDate||n.maxDate||n.rangeState.selecting&&n.minDate||null;o.inRange=!!(n.minDate&&u.isSameOrAfter(n.minDate,"month")&&d&&u.isSameOrBefore(d,"month"))||!!(n.minDate&&u.isSameOrBefore(n.minDate,"month")&&d&&u.isSameOrAfter(d,"month")),(null==(e=n.minDate)?void 0:e.isSameOrAfter(d))?(o.start=!(!d||!u.isSame(d,"month")),o.end=n.minDate&&u.isSame(n.minDate,"month")):(o.start=!(!n.minDate||!u.isSame(n.minDate,"month")),o.end=!(!d||!u.isSame(d,"month")));l.isSame(u)&&(o.type="today"),o.text=i,o.disabled=(null==(a=n.disabledDate)?void 0:a.call(n,u.toDate()))||!1}}return t})),h=e=>{const a={},t=n.date.year(),l=new Date,r=e.text;return a.disabled=!!n.disabledDate&&((e,a,t)=>{const n=Ce().locale(t).startOf("month").month(a).year(e),l=n.daysInMonth();return Ne(l).map((e=>n.add(e,"day").toDate()))})(t,r,s.value).every(n.disabledDate),a.current=xe(n.parsedValue).findIndex((e=>Ce.isDayjs(e)&&e.year()===t&&e.month()===r))>=0,a.today=l.getFullYear()===t&&l.getMonth()===r,e.inRange&&(a["in-range"]=!0,e.start&&(a["start-date"]=!0),e.end&&(a["end-date"]=!0)),a},y=e=>{const a=n.date.year(),t=e.text;return xe(n.date).findIndex((e=>e.year()===a&&e.month()===t))>=0},D=e=>{var a;if(!n.rangeState.selecting)return;let l=e.target;if("SPAN"===l.tagName&&(l=null==(a=l.parentNode)?void 0:a.parentNode),"DIV"===l.tagName&&(l=l.parentNode),"TD"!==l.tagName)return;const r=l.parentNode.rowIndex,s=l.cellIndex;f.value[r][s].disabled||r===c.value&&s===v.value||(c.value=r,v.value=s,t("changerange",{selecting:!0,endDate:n.date.startOf("year").month(4*r+s)}))},M=e=>{var a;const l=null==(a=e.target)?void 0:a.closest("td");if("TD"!==(null==l?void 0:l.tagName))return;if(se(l,"disabled"))return;const r=l.cellIndex,s=4*l.parentNode.rowIndex+r,o=n.date.startOf("year").month(s);if("months"===n.selectionMode){if("keydown"===e.type)return void t("pick",xe(n.parsedValue),!1);const a=n.date.startOf("month").month(s),r=se(l,"current")?xe(n.parsedValue).filter((e=>Number(e)!==Number(a))):xe(n.parsedValue).concat([Ce(a)]);t("pick",r)}else"range"===n.selectionMode?n.rangeState.selecting?(n.minDate&&o>=n.minDate?t("pick",{minDate:n.minDate,maxDate:o}):t("pick",{minDate:o,maxDate:n.minDate}),t("select",!1)):(t("pick",{minDate:o,maxDate:null}),t("select",!0)):t("pick",s)};return k((()=>n.date),(async()=>{var e,a;(null==(e=o.value)?void 0:e.contains(document.activeElement))&&(await w(),null==(a=i.value)||a.focus())})),a({focus:()=>{var e;null==(e=i.value)||e.focus()}}),(e,a)=>(P(),E("table",{role:"grid","aria-label":$(r)("el.datepicker.monthTablePrompt"),class:I($(l).b()),onClick:M,onMousemove:D},[W("tbody",{ref_key:"tbodyRef",ref:o},[(P(!0),E(G,null,q($(f),((e,a)=>(P(),E("tr",{key:a},[(P(!0),E(G,null,q(e,((e,a)=>(P(),E("td",{key:a,ref_for:!0,ref:a=>y(e)&&(i.value=a),class:I(h(e)),"aria-selected":`${y(e)}`,"aria-label":$(r)("el.datepicker.month"+(+e.text+1)),tabindex:y(e)?0:-1,onKeydown:[re(T(M,["prevent","stop"]),["space"]),re(T(M,["prevent","stop"]),["enter"])]},[W("div",null,[W("span",za,j($(r)("el.datepicker.months."+u.value[e.text])),1)])],42,Ha)))),128))])))),128))],512)],42,ja))}});var Ua=z(Ka,[["__file","basic-month-table.vue"]]);const{date:Za,disabledDate:Ga,parsedValue:qa}=xa,Xa=r({date:Za,disabledDate:Ga,parsedValue:qa,selectionMode:_a("year")}),Ja=["aria-label"],Qa=["aria-selected","tabindex","onKeydown"],et={class:"cell"},at={key:1},tt=c({__name:"basic-year-table",props:Xa,emits:["pick"],setup(e,{expose:a,emit:t}){const n=e,l=m("year-table"),{t:r,lang:s}=p(),o=b(),i=b(),u=g((()=>10*Math.floor(n.date.year()/10))),d=e=>{const a={},t=Ce().locale(s.value);return a.disabled=!!n.disabledDate&&((e,a)=>{const t=Ce(String(e)).locale(a).startOf("year"),n=t.endOf("year").dayOfYear();return Ne(n).map((e=>t.add(e,"day").toDate()))})(e,s.value).every(n.disabledDate),a.current=xe(n.parsedValue).findIndex((a=>a.year()===e))>=0,a.today=t.year()===e,a},c=e=>e===u.value&&n.date.year()u.value+9||xe(n.date).findIndex((a=>a.year()===e))>=0||xe(n.parsedValue).findIndex((a=>(null==a?void 0:a.year())===e))>=0,v=e=>{const a=e.target.closest("td");if(a&&a.textContent){if(se(a,"disabled"))return;const l=a.textContent||a.innerText;if("years"===n.selectionMode){if("keydown"===e.type)return void t("pick",xe(n.parsedValue),!1);const r=se(a,"current")?xe(n.parsedValue).filter((e=>(null==e?void 0:e.year())!==Number(l))):xe(n.parsedValue).concat([Ce(l)]);t("pick",r)}else t("pick",Number(l))}};return k((()=>n.date),(async()=>{var e,a;(null==(e=o.value)?void 0:e.contains(document.activeElement))&&(await w(),null==(a=i.value)||a.focus())})),a({focus:()=>{var e;null==(e=i.value)||e.focus()}}),(e,a)=>(P(),E("table",{role:"grid","aria-label":$(r)("el.datepicker.yearTablePrompt"),class:I($(l).b()),onClick:v},[W("tbody",{ref_key:"tbodyRef",ref:o},[(P(),E(G,null,q(3,((e,a)=>W("tr",{key:a},[(P(),E(G,null,q(4,((e,t)=>(P(),E(G,{key:a+"_"+t},[4*a+t<10?(P(),E("td",{key:0,ref_for:!0,ref:e=>c($(u)+4*a+t)&&(i.value=e),class:I(["available",d($(u)+4*a+t)]),"aria-selected":`${c($(u)+4*a+t)}`,tabindex:c($(u)+4*a+t)?0:-1,onKeydown:[re(T(v,["prevent","stop"]),["space"]),re(T(v,["prevent","stop"]),["enter"])]},[W("div",null,[W("span",et,j($(u)+4*a+t),1)])],42,Qa)):(P(),E("td",at))],64)))),64))]))),64))],512)],10,Ja))}});var nt=z(tt,[["__file","basic-year-table.vue"]]);const lt=["onClick"],rt=["aria-label"],st=["aria-label"],ot=["aria-label"],it=["aria-label"],ut=c({__name:"panel-date-pick",props:Oa,emits:["pick","set-picker-option","panel-change"],setup(e,{emit:a}){const t=e,n=m("picker-panel"),r=m("date-picker"),s=v(),o=oe(),{t:i,lang:u}=p(),d=h("EP_PICKER_BASE"),c=h(ge),{shortcuts:f,disabledDate:y,cellClassName:D,defaultTime:M}=d.props,S=ie(d.props,"defaultValue"),x=b(),C=b(Ce().locale(u.value)),_=b(!1);let O=!1;const N=g((()=>Ce(M).locale(u.value))),T=g((()=>C.value.month())),L=g((()=>C.value.year())),H=b([]),z=b(null),U=b(null),Z=e=>!(H.value.length>0)||(H.value,t.format,!0),ee=e=>!M||Ne.value||_.value||O?$e.value?e.millisecond(0):e.startOf("day"):N.value.year(e.year()).month(e.month()).date(e.date()),ae=(e,...t)=>{if(e)if(l(e)){const n=e.map(ee);a("pick",n,...t)}else a("pick",ee(e),...t);else a("pick",e,...t);z.value=null,U.value=null,_.value=!1,O=!1},te=async(e,a)=>{if("date"===ye.value){let n=t.parsedValue?t.parsedValue.year(e.year()).month(e.month()).date(e.date()):e;Z()||(n=H.value[0][0].year(e.year()).month(e.month()).date(e.date())),C.value=n,ae(n,$e.value||a),"datetime"===t.type&&(await w(),Ue())}else"week"===ye.value?ae(e.date):"dates"===ye.value&&ae(e,!0)},ne=e=>{const a=e?"add":"subtract";C.value=C.value[a](1,"month"),qe("month")},le=e=>{const a=C.value,t=e?"add":"subtract";C.value="year"===se.value?a[t](10,"year"):a[t](1,"year"),qe("year")},se=b("date"),he=g((()=>{const e=i("el.datepicker.year");if("year"===se.value){const a=10*Math.floor(L.value/10);return e?`${a} ${e} - ${a+9} ${e}`:`${a} - ${a+9}`}return`${L.value} ${e}`})),ye=g((()=>{const{type:e}=t;return["week","month","months","year","years","dates"].includes(e)?e:"date"})),be=g((()=>"dates"===ye.value||"months"===ye.value||"years"===ye.value)),ke=g((()=>"date"===ye.value?se.value:ye.value)),we=g((()=>!!f.length)),De=async(e,a)=>{"month"===ye.value?(C.value=C.value.startOf("month").month(e),ae(C.value,!1)):"months"===ye.value?ae(e,null==a||a):(C.value=C.value.startOf("month").month(e),se.value="date",["month","year","date","week"].includes(ye.value)&&(ae(C.value,!0),await w(),Ue())),qe("month")},Se=async(e,a)=>{"year"===ye.value?(C.value=C.value.startOf("year").year(e),ae(C.value,!1)):"years"===ye.value?ae(e,null==a||a):(C.value=C.value.year(e),se.value="month",["month","year","date","week"].includes(ye.value)&&(ae(C.value,!0),await w(),Ue())),qe("year")},xe=async e=>{se.value=e,await w(),Ue()},$e=g((()=>"datetime"===t.type||"datetimerange"===t.type)),_e=g((()=>{const e=$e.value||"dates"===ye.value,a="years"===ye.value,t="months"===ye.value,n="date"===se.value,l="year"===se.value,r="month"===se.value;return e&&n||a&&l||t&&r})),Oe=g((()=>!!y&&(!t.parsedValue||(l(t.parsedValue)?y(t.parsedValue[0].toDate()):y(t.parsedValue.toDate()))))),Pe=()=>{if(be.value)ae(t.parsedValue);else{let e=t.parsedValue;if(!e){const a=Ce(M).locale(u.value),t=Ke();e=a.year(t.year()).month(t.month()).date(t.date())}C.value=e,ae(e)}},Ve=g((()=>!!y&&y(Ce().locale(u.value).toDate()))),Ye=()=>{const e=Ce().locale(u.value).toDate();_.value=!0,y&&y(e)||!Z()||(C.value=Ce().locale(u.value),ae(C.value))},Ae=g((()=>t.timeFormat||Fe(t.format))),Ie=g((()=>t.dateFormat||Te(t.format))),Ne=g((()=>U.value?U.value:t.parsedValue||S.value?(t.parsedValue||C.value).format(Ae.value):void 0)),Le=g((()=>z.value?z.value:t.parsedValue||S.value?(t.parsedValue||C.value).format(Ie.value):void 0)),Re=b(!1),Ee=()=>{Re.value=!0},We=()=>{Re.value=!1},Be=e=>({hour:e.hour(),minute:e.minute(),second:e.second(),year:e.year(),month:e.month(),date:e.date()}),je=(e,a,n)=>{const{hour:l,minute:r,second:s}=Be(e),o=t.parsedValue?t.parsedValue.hour(l).minute(r).second(s):e;C.value=o,ae(C.value,!0),n||(Re.value=a)},He=e=>{const a=Ce(e,Ae.value).locale(u.value);if(a.isValid()&&Z()){const{year:e,month:t,date:n}=Be(C.value);C.value=a.year(e).month(t).date(n),U.value=null,Re.value=!1,ae(C.value,!0)}},ze=e=>{const a=Ce(e,Ie.value).locale(u.value);if(a.isValid()){if(y&&y(a.toDate()))return;const{hour:e,minute:t,second:n}=Be(C.value);C.value=a.hour(e).minute(t).second(n),z.value=null,ae(C.value,!0)}},Ke=()=>{const e=Ce(S.value).locale(u.value);if(!S.value){const e=N.value;return Ce().hour(e.hour()).minute(e.minute()).second(e.second()).locale(u.value)}return e},Ue=async()=>{var e;["week","month","year","date"].includes(ye.value)&&(null==(e=x.value)||e.focus(),"week"===ye.value&&Ge(K.down))},Ze=e=>{const{code:a}=e;[K.up,K.down,K.left,K.right,K.home,K.end,K.pageUp,K.pageDown].includes(a)&&(Ge(a),e.stopPropagation(),e.preventDefault()),[K.enter,K.space,K.numpadEnter].includes(a)&&null===z.value&&null===U.value&&(e.preventDefault(),ae(C.value,!1))},Ge=e=>{var t;const{up:n,down:l,left:r,right:s,home:o,end:i,pageUp:d,pageDown:c}=K,v={year:{[n]:-4,[l]:4,[r]:-1,[s]:1,offset:(e,a)=>e.setFullYear(e.getFullYear()+a)},month:{[n]:-4,[l]:4,[r]:-1,[s]:1,offset:(e,a)=>e.setMonth(e.getMonth()+a)},week:{[n]:-1,[l]:1,[r]:-1,[s]:1,offset:(e,a)=>e.setDate(e.getDate()+7*a)},date:{[n]:-7,[l]:7,[r]:-1,[s]:1,[o]:e=>-e.getDay(),[i]:e=>6-e.getDay(),[d]:e=>-new Date(e.getFullYear(),e.getMonth(),0).getDate(),[c]:e=>new Date(e.getFullYear(),e.getMonth()+1,0).getDate(),offset:(e,a)=>e.setDate(e.getDate()+a)}},p=C.value.toDate();for(;Math.abs(C.value.diff(p,"year",!0))<1;){const n=v[ke.value];if(!n)return;if(n.offset(p,fe(n[e])?n[e](p):null!=(t=n[e])?t:0),y&&y(p))break;const l=Ce(p).locale(u.value);C.value=l,a("pick",l,!0);break}},qe=e=>{a("panel-change",C.value.toDate(),e,se.value)};return k((()=>ye.value),(e=>{["month","year"].includes(e)?se.value=e:se.value="years"!==e?"months"!==e?"date":"month":"year"}),{immediate:!0}),k((()=>se.value),(()=>{null==c||c.updatePopper()})),k((()=>S.value),(e=>{e&&(C.value=Ke())}),{immediate:!0}),k((()=>t.parsedValue),(e=>{if(e){if(be.value)return;if(Array.isArray(e))return;C.value=e}else C.value=Ke()}),{immediate:!0}),a("set-picker-option",["isValidValue",e=>Ce.isDayjs(e)&&e.isValid()&&(!y||!y(e.toDate()))]),a("set-picker-option",["formatToString",e=>l(e)?e.map((e=>e.format(t.format))):e.format(t.format)]),a("set-picker-option",["parseUserInput",e=>Ce(e,t.format).locale(u.value)]),a("set-picker-option",["handleFocusPicker",Ue]),(e,t)=>(P(),E("div",{class:I([$(n).b(),$(r).b(),{"has-sidebar":e.$slots.sidebar||$(we),"has-time":$($e)}])},[W("div",{class:I($(n).e("body-wrapper"))},[B(e.$slots,"sidebar",{class:I($(n).e("sidebar"))}),$(we)?(P(),E("div",{key:0,class:I($(n).e("sidebar"))},[(P(!0),E(G,null,q($(f),((e,t)=>(P(),E("button",{key:t,type:"button",class:I($(n).e("shortcut")),onClick:t=>(e=>{const t=fe(e.value)?e.value():e.value;if(t)return O=!0,void ae(Ce(t).locale(u.value));e.onClick&&e.onClick({attrs:s,slots:o,emit:a})})(e)},j(e.text),11,lt)))),128))],2)):R("v-if",!0),W("div",{class:I($(n).e("body"))},[$($e)?(P(),E("div",{key:0,class:I($(r).e("time-header"))},[W("span",{class:I($(r).e("editor-wrap"))},[Q($(A),{placeholder:$(i)("el.datepicker.selectDate"),"model-value":$(Le),size:"small","validate-event":!1,onInput:t[0]||(t[0]=e=>z.value=e),onChange:ze},null,8,["placeholder","model-value"])],2),J((P(),E("span",{class:I($(r).e("editor-wrap"))},[Q($(A),{placeholder:$(i)("el.datepicker.selectTime"),"model-value":$(Ne),size:"small","validate-event":!1,onFocus:Ee,onInput:t[1]||(t[1]=e=>U.value=e),onChange:He},null,8,["placeholder","model-value"]),Q($(ra),{visible:Re.value,format:$(Ae),"parsed-value":C.value,onPick:je},null,8,["visible","format","parsed-value"])],2)),[[$(Me),We]])],2)):R("v-if",!0),J(W("div",{class:I([$(r).e("header"),("year"===se.value||"month"===se.value)&&$(r).e("header--bordered")])},[W("span",{class:I($(r).e("prev-btn"))},[W("button",{type:"button","aria-label":$(i)("el.datepicker.prevYear"),class:I(["d-arrow-left",$(n).e("icon-btn")]),onClick:t[2]||(t[2]=e=>le(!1))},[Q($(F),null,{default:Y((()=>[Q($(de))])),_:1})],10,rt),J(W("button",{type:"button","aria-label":$(i)("el.datepicker.prevMonth"),class:I([$(n).e("icon-btn"),"arrow-left"]),onClick:t[3]||(t[3]=e=>ne(!1))},[Q($(F),null,{default:Y((()=>[Q($(ce))])),_:1})],10,st),[[ue,"date"===se.value]])],2),W("span",{role:"button",class:I($(r).e("header-label")),"aria-live":"polite",tabindex:"0",onKeydown:t[4]||(t[4]=re((e=>xe("year")),["enter"])),onClick:t[5]||(t[5]=e=>xe("year"))},j($(he)),35),J(W("span",{role:"button","aria-live":"polite",tabindex:"0",class:I([$(r).e("header-label"),{active:"month"===se.value}]),onKeydown:t[6]||(t[6]=re((e=>xe("month")),["enter"])),onClick:t[7]||(t[7]=e=>xe("month"))},j($(i)(`el.datepicker.month${$(T)+1}`)),35),[[ue,"date"===se.value]]),W("span",{class:I($(r).e("next-btn"))},[J(W("button",{type:"button","aria-label":$(i)("el.datepicker.nextMonth"),class:I([$(n).e("icon-btn"),"arrow-right"]),onClick:t[8]||(t[8]=e=>ne(!0))},[Q($(F),null,{default:Y((()=>[Q($(ve))])),_:1})],10,ot),[[ue,"date"===se.value]]),W("button",{type:"button","aria-label":$(i)("el.datepicker.nextYear"),class:I([$(n).e("icon-btn"),"d-arrow-right"]),onClick:t[9]||(t[9]=e=>le(!0))},[Q($(F),null,{default:Y((()=>[Q($(pe))])),_:1})],10,it)],2)],2),[[ue,"time"!==se.value]]),W("div",{class:I($(n).e("content")),onKeydown:Ze},["date"===se.value?(P(),V(Wa,{key:0,ref_key:"currentViewRef",ref:x,"selection-mode":$(ye),date:C.value,"parsed-value":e.parsedValue,"disabled-date":$(y),"cell-class-name":$(D),onPick:te},null,8,["selection-mode","date","parsed-value","disabled-date","cell-class-name"])):R("v-if",!0),"year"===se.value?(P(),V(nt,{key:1,ref_key:"currentViewRef",ref:x,"selection-mode":$(ye),date:C.value,"disabled-date":$(y),"parsed-value":e.parsedValue,onPick:Se},null,8,["selection-mode","date","disabled-date","parsed-value"])):R("v-if",!0),"month"===se.value?(P(),V(Ua,{key:2,ref_key:"currentViewRef",ref:x,"selection-mode":$(ye),date:C.value,"parsed-value":e.parsedValue,"disabled-date":$(y),onPick:De},null,8,["selection-mode","date","parsed-value","disabled-date"])):R("v-if",!0)],34)],2)],2),J(W("div",{class:I($(n).e("footer"))},[J(Q($(me),{text:"",size:"small",class:I($(n).e("link-btn")),disabled:$(Ve),onClick:Ye},{default:Y((()=>[X(j($(i)("el.datepicker.now")),1)])),_:1},8,["class","disabled"]),[[ue,!$(be)]]),Q($(me),{plain:"",size:"small",class:I($(n).e("link-btn")),disabled:$(Oe),onClick:Pe},{default:Y((()=>[X(j($(i)("el.datepicker.confirm")),1)])),_:1},8,["class","disabled"])],2),[[ue,$(_e)]])],2))}});var dt=z(ut,[["__file","panel-date-pick.vue"]]);const ct=r({...$a,...Ca}),vt=(e,{defaultValue:a,leftDate:t,rightDate:n,unit:r,onParsedValueChanged:s})=>{const{emit:o}=he(),{pickerNs:i}=h(Da),u=m("date-range-picker"),{t:d,lang:c}=p(),f=(e=>{const{emit:a}=he(),t=v(),n=oe();return l=>{const r=fe(l.value)?l.value():l.value;r?a("pick",[Ce(r[0]).locale(e.value),Ce(r[1]).locale(e.value)]):l.onClick&&l.onClick({attrs:t,slots:n,emit:a})}})(c),y=b(),g=b(),w=b({endDate:null,selecting:!1}),D=()=>{const[l,s]=Ya($(a),{lang:$(c),unit:r,unlinkPanels:e.unlinkPanels});y.value=void 0,g.value=void 0,t.value=l,n.value=s};return k(a,(e=>{e&&D()}),{immediate:!0}),k((()=>e.parsedValue),(e=>{if(l(e)&&2===e.length){const[a,n]=e;y.value=a,t.value=a,g.value=n,s($(y),$(g))}else D()}),{immediate:!0}),{minDate:y,maxDate:g,rangeState:w,lang:c,ppNs:i,drpNs:u,handleChangeRange:e=>{w.value=e},handleRangeConfirm:(e=!1)=>{const a=$(y),t=$(g);Va([a,t])&&o("pick",[a,t],e)},handleShortcutClick:f,onSelect:e=>{w.value.selecting=e,e||(w.value.endDate=null)},t:d}},pt=["onClick"],mt=["aria-label"],ft=["aria-label"],ht=["disabled","aria-label"],yt=["disabled","aria-label"],bt=["disabled","aria-label"],gt=["disabled","aria-label"],kt=["aria-label"],wt=["aria-label"],Dt="month",Mt=c({__name:"panel-date-range",props:ct,emits:["pick","set-picker-option","calendar-change","panel-change"],setup(e,{emit:a}){const t=e,n=h("EP_PICKER_BASE"),{disabledDate:r,cellClassName:s,defaultTime:o,clearable:i}=n.props,u=ie(n.props,"format"),d=ie(n.props,"shortcuts"),c=ie(n.props,"defaultValue"),{lang:v}=p(),m=b(Ce().locale(v.value)),f=b(Ce().locale(v.value).add(1,Dt)),{minDate:y,maxDate:k,rangeState:w,ppNs:D,drpNs:M,handleChangeRange:S,handleRangeConfirm:x,handleShortcutClick:C,onSelect:_,t:O}=vt(t,{defaultValue:c,leftDate:m,rightDate:f,unit:Dt,onParsedValueChanged:function(e,a){if(t.unlinkPanels&&a){const t=(null==e?void 0:e.year())||0,n=(null==e?void 0:e.month())||0,l=a.year(),r=a.month();f.value=t===l&&n===r?a.add(1,Dt):a}else f.value=m.value.add(1,Dt),a&&(f.value=f.value.hour(a.hour()).minute(a.minute()).second(a.second()))}}),N=b({min:null,max:null}),T=b({min:null,max:null}),L=g((()=>`${m.value.year()} ${O("el.datepicker.year")} ${O(`el.datepicker.month${m.value.month()+1}`)}`)),H=g((()=>`${f.value.year()} ${O("el.datepicker.year")} ${O(`el.datepicker.month${f.value.month()+1}`)}`)),z=g((()=>m.value.year())),K=g((()=>m.value.month())),U=g((()=>f.value.year())),Z=g((()=>f.value.month())),ee=g((()=>!!d.value.length)),ae=g((()=>null!==N.value.min?N.value.min:y.value?y.value.format(se.value):"")),te=g((()=>null!==N.value.max?N.value.max:k.value||y.value?(k.value||y.value).format(se.value):"")),ne=g((()=>null!==T.value.min?T.value.min:y.value?y.value.format(re.value):"")),le=g((()=>null!==T.value.max?T.value.max:k.value||y.value?(k.value||y.value).format(re.value):"")),re=g((()=>t.timeFormat||Fe(u.value))),se=g((()=>t.dateFormat||Te(u.value))),oe=()=>{m.value=m.value.subtract(1,"year"),t.unlinkPanels||(f.value=m.value.add(1,"month")),we("year")},ue=()=>{m.value=m.value.subtract(1,"month"),t.unlinkPanels||(f.value=m.value.add(1,"month")),we("month")},fe=()=>{t.unlinkPanels?f.value=f.value.add(1,"year"):(m.value=m.value.add(1,"year"),f.value=m.value.add(1,"month")),we("year")},he=()=>{t.unlinkPanels?f.value=f.value.add(1,"month"):(m.value=m.value.add(1,"month"),f.value=m.value.add(1,"month")),we("month")},ye=()=>{m.value=m.value.add(1,"year"),we("year")},be=()=>{m.value=m.value.add(1,"month"),we("month")},ge=()=>{f.value=f.value.subtract(1,"year"),we("year")},ke=()=>{f.value=f.value.subtract(1,"month"),we("month")},we=e=>{a("panel-change",[m.value.toDate(),f.value.toDate()],e)},De=g((()=>{const e=(K.value+1)%12,a=K.value+1>=12?1:0;return t.unlinkPanels&&new Date(z.value+a,e)t.unlinkPanels&&12*U.value+Z.value-(12*z.value+K.value+1)>=12)),xe=g((()=>!(y.value&&k.value&&!w.value.selecting&&Va([y.value,k.value])))),$e=g((()=>"datetime"===t.type||"datetimerange"===t.type)),_e=(e,a)=>{if(e){if(o){return Ce(o[a]||o).locale(v.value).year(e.year()).month(e.month()).date(e.date())}return e}},Oe=(e,t=!0)=>{const n=e.minDate,l=e.maxDate,r=_e(n,0),s=_e(l,1);k.value===s&&y.value===r||(a("calendar-change",[n.toDate(),l&&l.toDate()]),k.value=s,y.value=r,t&&!$e.value&&x())},Pe=b(!1),Ve=b(!1),Ye=()=>{Pe.value=!1},Ae=()=>{Ve.value=!1},Ie=(e,a)=>{N.value[a]=e;const n=Ce(e,se.value).locale(v.value);if(n.isValid()){if(r&&r(n.toDate()))return;"min"===a?(m.value=n,y.value=(y.value||m.value).year(n.year()).month(n.month()).date(n.date()),t.unlinkPanels||k.value&&!k.value.isBefore(y.value)||(f.value=n.add(1,"month"),k.value=y.value.add(1,"month"))):(f.value=n,k.value=(k.value||f.value).year(n.year()).month(n.month()).date(n.date()),t.unlinkPanels||y.value&&!y.value.isAfter(k.value)||(m.value=n.subtract(1,"month"),y.value=k.value.subtract(1,"month")))}},Ne=(e,a)=>{N.value[a]=null},Le=(e,a)=>{T.value[a]=e;const t=Ce(e,re.value).locale(v.value);t.isValid()&&("min"===a?(Pe.value=!0,y.value=(y.value||m.value).hour(t.hour()).minute(t.minute()).second(t.second())):(Ve.value=!0,k.value=(k.value||f.value).hour(t.hour()).minute(t.minute()).second(t.second()),f.value=k.value))},Re=(e,a)=>{T.value[a]=null,"min"===a?(m.value=y.value,Pe.value=!1,k.value&&!k.value.isBefore(y.value)||(k.value=y.value)):(f.value=k.value,Ve.value=!1,k.value&&k.value.isBefore(y.value)&&(y.value=k.value))},Ee=(e,a,t)=>{T.value.min||(e&&(m.value=e,y.value=(y.value||m.value).hour(e.hour()).minute(e.minute()).second(e.second())),t||(Pe.value=a),k.value&&!k.value.isBefore(y.value)||(k.value=y.value,f.value=e))},We=(e,a,t)=>{T.value.max||(e&&(f.value=e,k.value=(k.value||f.value).hour(e.hour()).minute(e.minute()).second(e.second())),t||(Ve.value=a),k.value&&k.value.isBefore(y.value)&&(y.value=k.value))},Be=()=>{m.value=Ya($(c),{lang:$(v),unit:"month",unlinkPanels:t.unlinkPanels})[0],f.value=m.value.add(1,"month"),k.value=void 0,y.value=void 0,a("pick",null)};return a("set-picker-option",["isValidValue",e=>Va(e)&&(!r||!r(e[0].toDate())&&!r(e[1].toDate()))]),a("set-picker-option",["parseUserInput",e=>l(e)?e.map((e=>Ce(e,u.value).locale(v.value))):Ce(e,u.value).locale(v.value)]),a("set-picker-option",["formatToString",e=>l(e)?e.map((e=>e.format(u.value))):e.format(u.value)]),a("set-picker-option",["handleClear",Be]),(e,a)=>(P(),E("div",{class:I([$(D).b(),$(M).b(),{"has-sidebar":e.$slots.sidebar||$(ee),"has-time":$($e)}])},[W("div",{class:I($(D).e("body-wrapper"))},[B(e.$slots,"sidebar",{class:I($(D).e("sidebar"))}),$(ee)?(P(),E("div",{key:0,class:I($(D).e("sidebar"))},[(P(!0),E(G,null,q($(d),((e,a)=>(P(),E("button",{key:a,type:"button",class:I($(D).e("shortcut")),onClick:a=>$(C)(e)},j(e.text),11,pt)))),128))],2)):R("v-if",!0),W("div",{class:I($(D).e("body"))},[$($e)?(P(),E("div",{key:0,class:I($(M).e("time-header"))},[W("span",{class:I($(M).e("editors-wrap"))},[W("span",{class:I($(M).e("time-picker-wrap"))},[Q($(A),{size:"small",disabled:$(w).selecting,placeholder:$(O)("el.datepicker.startDate"),class:I($(M).e("editor")),"model-value":$(ae),"validate-event":!1,onInput:a[0]||(a[0]=e=>Ie(e,"min")),onChange:a[1]||(a[1]=e=>Ne(0,"min"))},null,8,["disabled","placeholder","class","model-value"])],2),J((P(),E("span",{class:I($(M).e("time-picker-wrap"))},[Q($(A),{size:"small",class:I($(M).e("editor")),disabled:$(w).selecting,placeholder:$(O)("el.datepicker.startTime"),"model-value":$(ne),"validate-event":!1,onFocus:a[2]||(a[2]=e=>Pe.value=!0),onInput:a[3]||(a[3]=e=>Le(e,"min")),onChange:a[4]||(a[4]=e=>Re(0,"min"))},null,8,["class","disabled","placeholder","model-value"]),Q($(ra),{visible:Pe.value,format:$(re),"datetime-role":"start","parsed-value":m.value,onPick:Ee},null,8,["visible","format","parsed-value"])],2)),[[$(Me),Ye]])],2),W("span",null,[Q($(F),null,{default:Y((()=>[Q($(ve))])),_:1})]),W("span",{class:I([$(M).e("editors-wrap"),"is-right"])},[W("span",{class:I($(M).e("time-picker-wrap"))},[Q($(A),{size:"small",class:I($(M).e("editor")),disabled:$(w).selecting,placeholder:$(O)("el.datepicker.endDate"),"model-value":$(te),readonly:!$(y),"validate-event":!1,onInput:a[5]||(a[5]=e=>Ie(e,"max")),onChange:a[6]||(a[6]=e=>Ne(0,"max"))},null,8,["class","disabled","placeholder","model-value","readonly"])],2),J((P(),E("span",{class:I($(M).e("time-picker-wrap"))},[Q($(A),{size:"small",class:I($(M).e("editor")),disabled:$(w).selecting,placeholder:$(O)("el.datepicker.endTime"),"model-value":$(le),readonly:!$(y),"validate-event":!1,onFocus:a[7]||(a[7]=e=>$(y)&&(Ve.value=!0)),onInput:a[8]||(a[8]=e=>Le(e,"max")),onChange:a[9]||(a[9]=e=>Re(0,"max"))},null,8,["class","disabled","placeholder","model-value","readonly"]),Q($(ra),{"datetime-role":"end",visible:Ve.value,format:$(re),"parsed-value":f.value,onPick:We},null,8,["visible","format","parsed-value"])],2)),[[$(Me),Ae]])],2)],2)):R("v-if",!0),W("div",{class:I([[$(D).e("content"),$(M).e("content")],"is-left"])},[W("div",{class:I($(M).e("header"))},[W("button",{type:"button",class:I([$(D).e("icon-btn"),"d-arrow-left"]),"aria-label":$(O)("el.datepicker.prevYear"),onClick:oe},[Q($(F),null,{default:Y((()=>[Q($(de))])),_:1})],10,mt),W("button",{type:"button",class:I([$(D).e("icon-btn"),"arrow-left"]),"aria-label":$(O)("el.datepicker.prevMonth"),onClick:ue},[Q($(F),null,{default:Y((()=>[Q($(ce))])),_:1})],10,ft),e.unlinkPanels?(P(),E("button",{key:0,type:"button",disabled:!$(Se),class:I([[$(D).e("icon-btn"),{"is-disabled":!$(Se)}],"d-arrow-right"]),"aria-label":$(O)("el.datepicker.nextYear"),onClick:ye},[Q($(F),null,{default:Y((()=>[Q($(pe))])),_:1})],10,ht)):R("v-if",!0),e.unlinkPanels?(P(),E("button",{key:1,type:"button",disabled:!$(De),class:I([[$(D).e("icon-btn"),{"is-disabled":!$(De)}],"arrow-right"]),"aria-label":$(O)("el.datepicker.nextMonth"),onClick:be},[Q($(F),null,{default:Y((()=>[Q($(ve))])),_:1})],10,yt)):R("v-if",!0),W("div",null,j($(L)),1)],2),Q(Wa,{"selection-mode":"range",date:m.value,"min-date":$(y),"max-date":$(k),"range-state":$(w),"disabled-date":$(r),"cell-class-name":$(s),onChangerange:$(S),onPick:Oe,onSelect:$(_)},null,8,["date","min-date","max-date","range-state","disabled-date","cell-class-name","onChangerange","onSelect"])],2),W("div",{class:I([[$(D).e("content"),$(M).e("content")],"is-right"])},[W("div",{class:I($(M).e("header"))},[e.unlinkPanels?(P(),E("button",{key:0,type:"button",disabled:!$(Se),class:I([[$(D).e("icon-btn"),{"is-disabled":!$(Se)}],"d-arrow-left"]),"aria-label":$(O)("el.datepicker.prevYear"),onClick:ge},[Q($(F),null,{default:Y((()=>[Q($(de))])),_:1})],10,bt)):R("v-if",!0),e.unlinkPanels?(P(),E("button",{key:1,type:"button",disabled:!$(De),class:I([[$(D).e("icon-btn"),{"is-disabled":!$(De)}],"arrow-left"]),"aria-label":$(O)("el.datepicker.prevMonth"),onClick:ke},[Q($(F),null,{default:Y((()=>[Q($(ce))])),_:1})],10,gt)):R("v-if",!0),W("button",{type:"button","aria-label":$(O)("el.datepicker.nextYear"),class:I([$(D).e("icon-btn"),"d-arrow-right"]),onClick:fe},[Q($(F),null,{default:Y((()=>[Q($(pe))])),_:1})],10,kt),W("button",{type:"button",class:I([$(D).e("icon-btn"),"arrow-right"]),"aria-label":$(O)("el.datepicker.nextMonth"),onClick:he},[Q($(F),null,{default:Y((()=>[Q($(ve))])),_:1})],10,wt),W("div",null,j($(H)),1)],2),Q(Wa,{"selection-mode":"range",date:f.value,"min-date":$(y),"max-date":$(k),"range-state":$(w),"disabled-date":$(r),"cell-class-name":$(s),onChangerange:$(S),onPick:Oe,onSelect:$(_)},null,8,["date","min-date","max-date","range-state","disabled-date","cell-class-name","onChangerange","onSelect"])],2)],2)],2),$($e)?(P(),E("div",{key:0,class:I($(D).e("footer"))},[$(i)?(P(),V($(me),{key:0,text:"",size:"small",class:I($(D).e("link-btn")),onClick:Be},{default:Y((()=>[X(j($(O)("el.datepicker.clear")),1)])),_:1},8,["class"])):R("v-if",!0),Q($(me),{plain:"",size:"small",class:I($(D).e("link-btn")),disabled:$(xe),onClick:a[10]||(a[10]=e=>$(x)(!1))},{default:Y((()=>[X(j($(O)("el.datepicker.confirm")),1)])),_:1},8,["class","disabled"])],2)):R("v-if",!0)],2))}});var St=z(Mt,[["__file","panel-date-range.vue"]]);const xt=r({...Ca}),$t=["onClick"],Ct=["disabled"],_t=["disabled"],Ot="year",Pt=c({name:"DatePickerMonthRange"}),Vt=c({...Pt,props:xt,emits:["pick","set-picker-option","calendar-change"],setup(e,{emit:a}){const t=e,{lang:n}=p(),l=h("EP_PICKER_BASE"),{shortcuts:r,disabledDate:s}=l.props,o=ie(l.props,"format"),i=ie(l.props,"defaultValue"),u=b(Ce().locale(n.value)),d=b(Ce().locale(n.value).add(1,Ot)),{minDate:c,maxDate:v,rangeState:m,ppNs:f,drpNs:y,handleChangeRange:k,handleRangeConfirm:w,handleShortcutClick:D,onSelect:M}=vt(t,{defaultValue:i,leftDate:u,rightDate:d,unit:Ot,onParsedValueChanged:function(e,a){if(t.unlinkPanels&&a){const t=(null==e?void 0:e.year())||0,n=a.year();d.value=t===n?a.add(1,Ot):a}else d.value=u.value.add(1,Ot)}}),S=g((()=>!!r.length)),{leftPrevYear:x,rightNextYear:C,leftNextYear:_,rightPrevYear:O,leftLabel:V,rightLabel:A,leftYear:N,rightYear:T}=(({unlinkPanels:e,leftDate:a,rightDate:t})=>{const{t:n}=p();return{leftPrevYear:()=>{a.value=a.value.subtract(1,"year"),e.value||(t.value=t.value.subtract(1,"year"))},rightNextYear:()=>{e.value||(a.value=a.value.add(1,"year")),t.value=t.value.add(1,"year")},leftNextYear:()=>{a.value=a.value.add(1,"year")},rightPrevYear:()=>{t.value=t.value.subtract(1,"year")},leftLabel:g((()=>`${a.value.year()} ${n("el.datepicker.year")}`)),rightLabel:g((()=>`${t.value.year()} ${n("el.datepicker.year")}`)),leftYear:g((()=>a.value.year())),rightYear:g((()=>t.value.year()===a.value.year()?a.value.year()+1:t.value.year()))}})({unlinkPanels:ie(t,"unlinkPanels"),leftDate:u,rightDate:d}),L=g((()=>t.unlinkPanels&&T.value>N.value+1)),H=(e,t=!0)=>{const n=e.minDate,l=e.maxDate;v.value===l&&c.value===n||(a("calendar-change",[n.toDate(),l&&l.toDate()]),v.value=l,c.value=n,t&&w())};return a("set-picker-option",["formatToString",e=>e.map((e=>e.format(o.value)))]),(e,a)=>(P(),E("div",{class:I([$(f).b(),$(y).b(),{"has-sidebar":Boolean(e.$slots.sidebar)||$(S)}])},[W("div",{class:I($(f).e("body-wrapper"))},[B(e.$slots,"sidebar",{class:I($(f).e("sidebar"))}),$(S)?(P(),E("div",{key:0,class:I($(f).e("sidebar"))},[(P(!0),E(G,null,q($(r),((e,a)=>(P(),E("button",{key:a,type:"button",class:I($(f).e("shortcut")),onClick:a=>$(D)(e)},j(e.text),11,$t)))),128))],2)):R("v-if",!0),W("div",{class:I($(f).e("body"))},[W("div",{class:I([[$(f).e("content"),$(y).e("content")],"is-left"])},[W("div",{class:I($(y).e("header"))},[W("button",{type:"button",class:I([$(f).e("icon-btn"),"d-arrow-left"]),onClick:a[0]||(a[0]=(...e)=>$(x)&&$(x)(...e))},[Q($(F),null,{default:Y((()=>[Q($(de))])),_:1})],2),e.unlinkPanels?(P(),E("button",{key:0,type:"button",disabled:!$(L),class:I([[$(f).e("icon-btn"),{[$(f).is("disabled")]:!$(L)}],"d-arrow-right"]),onClick:a[1]||(a[1]=(...e)=>$(_)&&$(_)(...e))},[Q($(F),null,{default:Y((()=>[Q($(pe))])),_:1})],10,Ct)):R("v-if",!0),W("div",null,j($(V)),1)],2),Q(Ua,{"selection-mode":"range",date:u.value,"min-date":$(c),"max-date":$(v),"range-state":$(m),"disabled-date":$(s),onChangerange:$(k),onPick:H,onSelect:$(M)},null,8,["date","min-date","max-date","range-state","disabled-date","onChangerange","onSelect"])],2),W("div",{class:I([[$(f).e("content"),$(y).e("content")],"is-right"])},[W("div",{class:I($(y).e("header"))},[e.unlinkPanels?(P(),E("button",{key:0,type:"button",disabled:!$(L),class:I([[$(f).e("icon-btn"),{"is-disabled":!$(L)}],"d-arrow-left"]),onClick:a[2]||(a[2]=(...e)=>$(O)&&$(O)(...e))},[Q($(F),null,{default:Y((()=>[Q($(de))])),_:1})],10,_t)):R("v-if",!0),W("button",{type:"button",class:I([$(f).e("icon-btn"),"d-arrow-right"]),onClick:a[3]||(a[3]=(...e)=>$(C)&&$(C)(...e))},[Q($(F),null,{default:Y((()=>[Q($(pe))])),_:1})],2),W("div",null,j($(A)),1)],2),Q(Ua,{"selection-mode":"range",date:d.value,"min-date":$(c),"max-date":$(v),"range-state":$(m),"disabled-date":$(s),onChangerange:$(k),onPick:H,onSelect:$(M)},null,8,["date","min-date","max-date","range-state","disabled-date","onChangerange","onSelect"])],2)],2)],2)],2))}});var Yt=z(Vt,[["__file","panel-month-range.vue"]]);Ce.extend(oa),Ce.extend(ua),Ce.extend(Oe),Ce.extend(pa),Ce.extend(fa),Ce.extend(ya),Ce.extend(ga),Ce.extend(wa);const At=c({name:"ElDatePicker",install:null,props:Ma,emits:["update:modelValue"],setup(e,{expose:a,emit:t,slots:n}){const l=m("picker-panel");_("ElPopperOptions",ye(ie(e,"popperOptions"))),_(Da,{slots:n,pickerNs:l});const r=b();a({focus:(e=!0)=>{var a;null==(a=r.value)||a.focus(e)},handleOpen:()=>{var e;null==(e=r.value)||e.handleOpen()},handleClose:()=>{var e;null==(e=r.value)||e.handleClose()}});const s=e=>{t("update:modelValue",e)};return()=>{var a;const t=null!=(a=e.format)?a:Ae[e.type]||Ye,l=function(e){switch(e){case"daterange":case"datetimerange":return St;case"monthrange":return Yt;default:return dt}}(e.type);return Q(qe,H(e,{format:t,type:e.type,ref:r,"onUpdate:modelValue":s}),{default:e=>Q(l,e,null),"range-separator":n["range-separator"]})}}});At.install=e=>{e.component(At.name,At)};const It=At;export{It as E,Ce as d}; diff --git a/resources/views/dist/js/el-dialog.DGaSOiRM.js b/resources/views/dist/js/el-dialog.DGaSOiRM.js new file mode 100644 index 0000000..ba4e73b --- /dev/null +++ b/resources/views/dist/js/el-dialog.DGaSOiRM.js @@ -0,0 +1 @@ +import{d as e,y as a,B as o,ba as s,c as l,da as t,e as r,h as n,C as d,k as i,i as c,g as f,F as u,l as p,w as v,f as b,D as g,E as y,p as m,n as h,_ as C,db as k,ae as R,a1 as w,b as $,r as A,z as _,a3 as F,cl as I,cj as L,a8 as x,b9 as E,aa as M,T,c1 as j,dc as q,q as z}from"./index.DMBpWXpT.js";import{b as B,c as D,d as P,a as S,u as K}from"./use-dialog.CoOh9qjD.js";import{c as O}from"./refs.BiRbkTK3.js";const U=Symbol("dialogInjectionKey"),G=["aria-level"],H=["aria-label"],J=["id"],N=e({name:"ElDialogContent"});var Q=C(e({...N,props:B,emits:D,setup(e){const C=e,{t:R}=a(),{Close:w}=k,{dialogRef:$,headerRef:A,bodyId:_,ns:F,style:I}=o(U),{focusTrapRef:L}=o(s),x=l((()=>[F.b(),F.is("fullscreen",C.fullscreen),F.is("draggable",C.draggable),F.is("align-center",C.alignCenter),{[F.m("center")]:C.center}])),E=O(L,$),M=l((()=>C.draggable)),T=l((()=>C.overflow));return t($,A,M,T),(e,a)=>(r(),n("div",{ref:f(E),class:c(f(x)),style:h(f(I)),tabindex:"-1"},[d("header",{ref_key:"headerRef",ref:A,class:c([f(F).e("header"),{"show-close":e.showClose}])},[i(e.$slots,"header",{},(()=>[d("span",{role:"heading","aria-level":e.ariaLevel,class:c(f(F).e("title"))},u(e.title),11,G)])),e.showClose?(r(),n("button",{key:0,"aria-label":f(R)("el.dialog.close"),class:c(f(F).e("headerbtn")),type:"button",onClick:a[0]||(a[0]=a=>e.$emit("close"))},[p(f(y),{class:c(f(F).e("close"))},{default:v((()=>[(r(),b(g(e.closeIcon||f(w))))])),_:1},8,["class"])],10,H)):m("v-if",!0)],2),d("div",{id:f(_),class:c(f(F).e("body"))},[i(e.$slots,"default")],10,J),e.$slots.footer?(r(),n("footer",{key:0,class:c(f(F).e("footer"))},[i(e.$slots,"footer")],2)):m("v-if",!0)],6))}}),[["__file","dialog-content.vue"]]);const V=["aria-label","aria-labelledby","aria-describedby"],W=e({name:"ElDialog",inheritAttrs:!1});const X=z(C(e({...W,props:P,emits:S,setup(e,{expose:a}){const o=e,s=R();w({scope:"el-dialog",from:"the title slot",replacement:"the header slot",version:"3.0.0",ref:"https://element-plus.org/en-US/component/dialog.html#slots"},l((()=>!!s.title)));const t=$("dialog"),n=A(),u=A(),g=A(),{visible:y,titleId:C,bodyId:k,style:z,overlayDialogStyle:B,rendered:D,zIndex:P,afterEnter:S,afterLeave:O,beforeLeave:G,handleClose:H,onModalClick:J,onOpenAutoFocus:N,onCloseAutoFocus:W,onCloseRequested:X,onFocusoutPrevented:Y}=K(o,n);_(U,{dialogRef:n,headerRef:u,bodyId:k,ns:t,rendered:D,style:z});const Z=q(J),ee=l((()=>o.draggable&&!o.fullscreen));return a({visible:y,dialogContentRef:g}),(e,a)=>(r(),b(j,{to:e.appendTo,disabled:"body"===e.appendTo&&!e.appendToBody},[p(T,{name:"dialog-fade",onAfterEnter:f(S),onAfterLeave:f(O),onBeforeLeave:f(G),persisted:""},{default:v((()=>[F(p(f(I),{"custom-mask-event":"",mask:e.modal,"overlay-class":e.modalClass,"z-index":f(P)},{default:v((()=>[d("div",{role:"dialog","aria-modal":"true","aria-label":e.title||void 0,"aria-labelledby":e.title?void 0:f(C),"aria-describedby":f(k),class:c(`${f(t).namespace.value}-overlay-dialog`),style:h(f(B)),onClick:a[0]||(a[0]=(...e)=>f(Z).onClick&&f(Z).onClick(...e)),onMousedown:a[1]||(a[1]=(...e)=>f(Z).onMousedown&&f(Z).onMousedown(...e)),onMouseup:a[2]||(a[2]=(...e)=>f(Z).onMouseup&&f(Z).onMouseup(...e))},[p(f(L),{loop:"",trapped:f(y),"focus-start-el":"container",onFocusAfterTrapped:f(N),onFocusAfterReleased:f(W),onFocusoutPrevented:f(Y),onReleaseRequested:f(X)},{default:v((()=>[f(D)?(r(),b(Q,x({key:0,ref_key:"dialogContentRef",ref:g},e.$attrs,{center:e.center,"align-center":e.alignCenter,"close-icon":e.closeIcon,draggable:f(ee),overflow:e.overflow,fullscreen:e.fullscreen,"show-close":e.showClose,title:e.title,"aria-level":e.headerAriaLevel,onClose:f(H)}),E({header:v((()=>[e.$slots.title?i(e.$slots,"title",{key:1}):i(e.$slots,"header",{key:0,close:f(H),titleId:f(C),titleClass:f(t).e("title")})])),default:v((()=>[i(e.$slots,"default")])),_:2},[e.$slots.footer?{name:"footer",fn:v((()=>[i(e.$slots,"footer")]))}:void 0]),1040,["center","align-center","close-icon","draggable","overflow","fullscreen","show-close","title","aria-level","onClose"])):m("v-if",!0)])),_:3},8,["trapped","onFocusAfterTrapped","onFocusAfterReleased","onFocusoutPrevented","onReleaseRequested"])],46,V)])),_:3},8,["mask","overlay-class","z-index"]),[[M,f(y)]])])),_:3},8,["onAfterEnter","onAfterLeave","onBeforeLeave"])],8,["to","disabled"]))}}),[["__file","dialog.vue"]]));export{X as E}; diff --git a/resources/views/dist/js/el-divider.CoJV5nts.js b/resources/views/dist/js/el-divider.CoJV5nts.js new file mode 100644 index 0000000..da73c4f --- /dev/null +++ b/resources/views/dist/js/el-divider.CoJV5nts.js @@ -0,0 +1 @@ +import{v as e,A as o,d as n,b as t,c as l,e as r,h as a,i,g as s,k as d,p as u,n as c,_ as p,q as v,r as f,B as m,z as g,b7 as b,at as w,J as h,a as y,au as I,f as E,w as F,l as C,b1 as _,b2 as R,b8 as k,ad as S,a2 as T,a6 as x,E as B,a9 as $,y as D,K as P,al as K,X as M,b9 as L,a8 as G,G as z,C as O,D as A,j as H,S as j,ba as N,H as J}from"./index.DMBpWXpT.js";import{c as U,E as V,O as W,w as Y}from"./el-popper.Cb3Eus9m.js";import{E as q}from"./el-scrollbar.BJ_tYB1D.js";import{c as X,E as Q,d as Z,a as ee,C as oe,b as ne,e as te,f as le,g as re,F as ae,L as ie}from"./dropdown.Dka1h-m0.js";import{c as se}from"./castArray.arHVDzqw.js";import{c as de}from"./refs.BiRbkTK3.js";const ue=e({direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},contentPosition:{type:String,values:["left","center","right"],default:"center"},borderStyle:{type:o(String),default:"solid"}}),ce=n({name:"ElDivider"});const pe=v(p(n({...ce,props:ue,setup(e){const o=e,n=t("divider"),p=l((()=>n.cssVar({"border-style":o.borderStyle})));return(e,o)=>(r(),a("div",{class:i([s(n).b(),s(n).m(e.direction)]),style:c(s(p)),role:"separator"},[e.$slots.default&&"vertical"!==e.direction?(r(),a("div",{key:0,class:i([s(n).e("text"),s(n).is(e.contentPosition)])},[d(e.$slots,"default")],2)):u("v-if",!0)],6))}}),[["__file","divider.vue"]])),ve=e({style:{type:o([String,Array,Object])},currentTabId:{type:o(String)},defaultCurrentTabId:String,loop:Boolean,dir:{type:String,values:["ltr","rtl"],default:"ltr"},orientation:{type:o(String)},onBlur:Function,onFocus:Function,onMousedown:Function}),{ElCollection:fe,ElCollectionItem:me,COLLECTION_INJECTION_KEY:ge,COLLECTION_ITEM_INJECTION_KEY:be}=X("RovingFocusGroup"),we=Symbol("elRovingFocusGroup"),he=Symbol("elRovingFocusGroupItem"),ye={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"},Ie=e=>{const{activeElement:o}=document;for(const n of e){if(n===o)return;if(n.focus(),o!==document.activeElement)return}},Ee="currentTabIdChange",Fe="rovingFocusGroup.entryFocus",Ce={bubbles:!1,cancelable:!0},_e=n({name:"ElRovingFocusGroupImpl",inheritAttrs:!1,props:ve,emits:[Ee,"entryFocus"],setup(e,{emit:o}){var n;const t=f(null!=(n=e.currentTabId||e.defaultCurrentTabId)?n:null),r=f(!1),a=f(!1),i=f(null),{getItems:d}=m(ge,void 0),u=l((()=>[{outline:"none"},e.style])),c=U((o=>{var n;null==(n=e.onMousedown)||n.call(e,o)}),(()=>{a.value=!0})),p=U((o=>{var n;null==(n=e.onFocus)||n.call(e,o)}),(e=>{const o=!s(a),{target:n,currentTarget:l}=e;if(n===l&&o&&!s(r)){const e=new Event(Fe,Ce);if(null==l||l.dispatchEvent(e),!e.defaultPrevented){const e=d().filter((e=>e.focusable)),o=[e.find((e=>e.active)),e.find((e=>e.id===s(t))),...e].filter(Boolean).map((e=>e.ref));Ie(o)}}a.value=!1})),v=U((o=>{var n;null==(n=e.onBlur)||n.call(e,o)}),(()=>{r.value=!1}));g(we,{currentTabbedId:b(t),loop:w(e,"loop"),tabIndex:l((()=>s(r)?-1:0)),rovingFocusGroupRef:i,rovingFocusGroupRootStyle:u,orientation:w(e,"orientation"),dir:w(e,"dir"),onItemFocus:e=>{o(Ee,e)},onItemShiftTab:()=>{r.value=!0},onBlur:v,onFocus:p,onMousedown:c}),h((()=>e.currentTabId),(e=>{t.value=null!=e?e:null})),y(i,Fe,((...e)=>{o("entryFocus",...e)}))}});var Re=p(n({name:"ElRovingFocusGroup",components:{ElFocusGroupCollection:fe,ElRovingFocusGroupImpl:p(_e,[["render",function(e,o,n,t,l,r){return d(e.$slots,"default")}],["__file","roving-focus-group-impl.vue"]])}}),[["render",function(e,o,n,t,l,a){const i=I("el-roving-focus-group-impl"),s=I("el-focus-group-collection");return r(),E(s,null,{default:F((()=>[C(i,_(R(e.$attrs)),{default:F((()=>[d(e.$slots,"default")])),_:3},16)])),_:3})}],["__file","roving-focus-group.vue"]]);var ke=p(n({components:{ElRovingFocusCollectionItem:me},props:{focusable:{type:Boolean,default:!0},active:{type:Boolean,default:!1}},emits:["mousedown","focus","keydown"],setup(e,{emit:o}){const{currentTabbedId:n,loop:t,onItemFocus:r,onItemShiftTab:a}=m(we,void 0),{getItems:i}=m(ge,void 0),d=k(),u=f(null),c=U((e=>{o("mousedown",e)}),(o=>{e.focusable?r(s(d)):o.preventDefault()})),p=U((e=>{o("focus",e)}),(()=>{r(s(d))})),v=U((e=>{o("keydown",e)}),(e=>{const{key:o,shiftKey:n,target:l,currentTarget:r}=e;if(o===S.tab&&n)return void a();if(l!==r)return;const s=(e=>{const o=e.key;return ye[o]})(e);if(s){e.preventDefault();let o=i().filter((e=>e.focusable)).map((e=>e.ref));switch(s){case"last":o.reverse();break;case"prev":case"next":{"prev"===s&&o.reverse();const e=o.indexOf(r);o=t.value?(u=e+1,(d=o).map(((e,o)=>d[(o+u)%d.length]))):o.slice(e+1);break}}T((()=>{Ie(o)}))}var d,u})),b=l((()=>n.value===s(d)));return g(he,{rovingFocusGroupItemRef:u,tabIndex:l((()=>s(b)?0:-1)),handleMousedown:c,handleFocus:p,handleKeydown:v}),{id:d,handleKeydown:v,handleFocus:p,handleMousedown:c}}}),[["render",function(e,o,n,t,l,a){const i=I("el-roving-focus-collection-item");return r(),E(i,{id:e.id,focusable:e.focusable,active:e.active},{default:F((()=>[d(e.$slots,"default")])),_:3},8,["id","focusable","active"])}],["__file","roving-focus-item.vue"]]);const Se=Symbol("elDropdown"),{ButtonGroup:Te}=x;var xe=p(n({name:"ElDropdown",components:{ElButton:x,ElButtonGroup:Te,ElScrollbar:q,ElDropdownCollection:Q,ElTooltip:V,ElRovingFocusGroup:Re,ElOnlyChild:W,ElIcon:B,ArrowDown:$},props:Z,emits:["visible-change","click","command"],setup(e,{emit:o}){const n=z(),r=t("dropdown"),{t:a}=D(),i=f(),d=f(),u=f(null),c=f(null),p=f(null),v=f(null),m=f(!1),b=[S.enter,S.space,S.down],y=l((()=>({maxHeight:P(e.maxHeight)}))),I=l((()=>[r.m(R.value)])),E=l((()=>se(e.trigger))),F=k().value,C=l((()=>e.id||F));function _(){var e;null==(e=u.value)||e.onClose()}h([i,E],(([e,o],[n])=>{var t,l,r;(null==(t=null==n?void 0:n.$el)?void 0:t.removeEventListener)&&n.$el.removeEventListener("pointerenter",T),(null==(l=null==e?void 0:e.$el)?void 0:l.removeEventListener)&&e.$el.removeEventListener("pointerenter",T),(null==(r=null==e?void 0:e.$el)?void 0:r.addEventListener)&&o.includes("hover")&&e.$el.addEventListener("pointerenter",T)}),{immediate:!0}),K((()=>{var e,o;(null==(o=null==(e=i.value)?void 0:e.$el)?void 0:o.removeEventListener)&&i.value.$el.removeEventListener("pointerenter",T)}));const R=M();function T(){var e,o;null==(o=null==(e=i.value)?void 0:e.$el)||o.focus()}g(Se,{contentRef:c,role:l((()=>e.role)),triggerId:C,isUsingKeyboard:m,onItemEnter:function(){},onItemLeave:function(){const e=s(c);E.value.includes("hover")&&(null==e||e.focus()),v.value=null}}),g("elDropdown",{instance:n,dropdownSize:R,handleClick:function(){_()},commandHandler:function(...e){o("command",...e)},trigger:w(e,"trigger"),hideOnClick:w(e,"hideOnClick")});return{t:a,ns:r,scrollbar:p,wrapStyle:y,dropdownTriggerKls:I,dropdownSize:R,triggerId:C,triggerKeys:b,currentTabId:v,handleCurrentTabIdChange:function(e){v.value=e},handlerMainButtonClick:e=>{o("click",e)},handleEntryFocus:function(e){m.value||(e.preventDefault(),e.stopImmediatePropagation())},handleClose:_,handleOpen:function(){var e;null==(e=u.value)||e.onOpen()},handleBeforeShowTooltip:function(){o("visible-change",!0)},handleShowTooltip:function(e){"keydown"===(null==e?void 0:e.type)&&c.value.focus()},handleBeforeHideTooltip:function(){o("visible-change",!1)},onFocusAfterTrapped:e=>{var o,n;e.preventDefault(),null==(n=null==(o=c.value)?void 0:o.focus)||n.call(o,{preventScroll:!0})},popperRef:u,contentRef:c,triggeringElementRef:i,referenceElementRef:d}}}),[["render",function(e,o,n,t,l,s){var c;const p=I("el-dropdown-collection"),v=I("el-roving-focus-group"),f=I("el-scrollbar"),m=I("el-only-child"),g=I("el-tooltip"),b=I("el-button"),w=I("arrow-down"),h=I("el-icon"),y=I("el-button-group");return r(),a("div",{class:i([e.ns.b(),e.ns.is("disabled",e.disabled)])},[C(g,{ref:"popperRef",role:e.role,effect:e.effect,"fallback-placements":["bottom","top"],"popper-options":e.popperOptions,"gpu-acceleration":!1,"hide-after":"hover"===e.trigger?e.hideTimeout:0,"manual-mode":!0,placement:e.placement,"popper-class":[e.ns.e("popper"),e.popperClass],"reference-element":null==(c=e.referenceElementRef)?void 0:c.$el,trigger:e.trigger,"trigger-keys":e.triggerKeys,"trigger-target-el":e.contentRef,"show-after":"hover"===e.trigger?e.showTimeout:0,"stop-popper-mouse-event":!1,"virtual-ref":e.triggeringElementRef,"virtual-triggering":e.splitButton,disabled:e.disabled,transition:`${e.ns.namespace.value}-zoom-in-top`,teleported:e.teleported,pure:"",persistent:"",onBeforeShow:e.handleBeforeShowTooltip,onShow:e.handleShowTooltip,onBeforeHide:e.handleBeforeHideTooltip},L({content:F((()=>[C(f,{ref:"scrollbar","wrap-style":e.wrapStyle,tag:"div","view-class":e.ns.e("list")},{default:F((()=>[C(v,{loop:e.loop,"current-tab-id":e.currentTabId,orientation:"horizontal",onCurrentTabIdChange:e.handleCurrentTabIdChange,onEntryFocus:e.handleEntryFocus},{default:F((()=>[C(p,null,{default:F((()=>[d(e.$slots,"dropdown")])),_:3})])),_:3},8,["loop","current-tab-id","onCurrentTabIdChange","onEntryFocus"])])),_:3},8,["wrap-style","view-class"])])),_:2},[e.splitButton?void 0:{name:"default",fn:F((()=>[C(m,{id:e.triggerId,ref:"triggeringElementRef",role:"button",tabindex:e.tabindex},{default:F((()=>[d(e.$slots,"default")])),_:3},8,["id","tabindex"])]))}]),1032,["role","effect","popper-options","hide-after","placement","popper-class","reference-element","trigger","trigger-keys","trigger-target-el","show-after","virtual-ref","virtual-triggering","disabled","transition","teleported","onBeforeShow","onShow","onBeforeHide"]),e.splitButton?(r(),E(y,{key:0},{default:F((()=>[C(b,G({ref:"referenceElementRef"},e.buttonProps,{size:e.dropdownSize,type:e.type,disabled:e.disabled,tabindex:e.tabindex,onClick:e.handlerMainButtonClick}),{default:F((()=>[d(e.$slots,"default")])),_:3},16,["size","type","disabled","tabindex","onClick"]),C(b,G({id:e.triggerId,ref:"triggeringElementRef"},e.buttonProps,{role:"button",size:e.dropdownSize,type:e.type,class:e.ns.e("caret-button"),disabled:e.disabled,tabindex:e.tabindex,"aria-label":e.t("el.dropdown.toggleDropdown")}),{default:F((()=>[C(h,{class:i(e.ns.e("icon"))},{default:F((()=>[C(w)])),_:1},8,["class"])])),_:1},16,["id","size","type","class","disabled","tabindex","aria-label"])])),_:3})):u("v-if",!0)],2)}],["__file","dropdown.vue"]]);const Be=n({name:"DropdownItemImpl",components:{ElIcon:B},props:ee,emits:["pointermove","pointerleave","click","clickimpl"],setup(e,{emit:o}){const n=t("dropdown"),{role:r}=m(Se,void 0),{collectionItemRef:a}=m(oe,void 0),{collectionItemRef:i}=m(be,void 0),{rovingFocusGroupItemRef:s,tabIndex:d,handleFocus:u,handleKeydown:c,handleMousedown:p}=m(he,void 0),v=de(a,i,s),f=l((()=>"menu"===r.value?"menuitem":"navigation"===r.value?"link":"button")),g=U((e=>{const{code:n}=e;if(n===S.enter||n===S.space)return e.preventDefault(),e.stopImmediatePropagation(),o("clickimpl",e),!0}),c);return{ns:n,itemRef:v,dataset:{[ne]:""},role:f,tabIndex:d,handleFocus:u,handleKeydown:g,handleMousedown:p}}}),$e=["aria-disabled","tabindex","role"];const De=()=>{const e=m("elDropdown",{}),o=l((()=>null==e?void 0:e.dropdownSize));return{elDropdown:e,_elDropdownSize:o}};var Pe=p(n({name:"ElDropdownItem",components:{ElDropdownCollectionItem:te,ElRovingFocusItem:ke,ElDropdownItemImpl:p(Be,[["render",function(e,o,n,t,l,i){const s=I("el-icon");return r(),a(j,null,[e.divided?(r(),a("li",G({key:0,role:"separator",class:e.ns.bem("menu","item","divided")},e.$attrs),null,16)):u("v-if",!0),O("li",G({ref:e.itemRef},{...e.dataset,...e.$attrs},{"aria-disabled":e.disabled,class:[e.ns.be("menu","item"),e.ns.is("disabled",e.disabled)],tabindex:e.tabIndex,role:e.role,onClick:o[0]||(o[0]=o=>e.$emit("clickimpl",o)),onFocus:o[1]||(o[1]=(...o)=>e.handleFocus&&e.handleFocus(...o)),onKeydown:o[2]||(o[2]=H(((...o)=>e.handleKeydown&&e.handleKeydown(...o)),["self"])),onMousedown:o[3]||(o[3]=(...o)=>e.handleMousedown&&e.handleMousedown(...o)),onPointermove:o[4]||(o[4]=o=>e.$emit("pointermove",o)),onPointerleave:o[5]||(o[5]=o=>e.$emit("pointerleave",o))}),[e.icon?(r(),E(s,{key:0},{default:F((()=>[(r(),E(A(e.icon)))])),_:1})):u("v-if",!0),d(e.$slots,"default")],16,$e)],64)}],["__file","dropdown-item-impl.vue"]])},inheritAttrs:!1,props:ee,emits:["pointermove","pointerleave","click"],setup(e,{emit:o,attrs:n}){const{elDropdown:t}=De(),r=z(),a=f(null),i=l((()=>{var e,o;return null!=(o=null==(e=s(a))?void 0:e.textContent)?o:""})),{onItemEnter:d,onItemLeave:u}=m(Se,void 0),c=U((e=>(o("pointermove",e),e.defaultPrevented)),Y((o=>{if(e.disabled)return void u(o);const n=o.currentTarget;n===document.activeElement||n.contains(document.activeElement)||(d(o),o.defaultPrevented||null==n||n.focus())}))),p=U((e=>(o("pointerleave",e),e.defaultPrevented)),Y((e=>{u(e)})));return{handleClick:U((n=>{if(!e.disabled)return o("click",n),"keydown"!==n.type&&n.defaultPrevented}),(o=>{var n,l,a;e.disabled?o.stopImmediatePropagation():((null==(n=null==t?void 0:t.hideOnClick)?void 0:n.value)&&(null==(l=t.handleClick)||l.call(t)),null==(a=t.commandHandler)||a.call(t,e.command,r,o))})),handlePointerMove:c,handlePointerLeave:p,textContent:i,propsAndAttrs:l((()=>({...e,...n})))}}}),[["render",function(e,o,n,t,l,a){var i;const s=I("el-dropdown-item-impl"),u=I("el-roving-focus-item"),c=I("el-dropdown-collection-item");return r(),E(c,{disabled:e.disabled,"text-value":null!=(i=e.textValue)?i:e.textContent},{default:F((()=>[C(u,{focusable:!e.disabled},{default:F((()=>[C(s,G(e.propsAndAttrs,{onPointerleave:e.handlePointerLeave,onPointermove:e.handlePointerMove,onClickimpl:e.handleClick}),{default:F((()=>[d(e.$slots,"default")])),_:3},16,["onPointerleave","onPointermove","onClickimpl"])])),_:3},8,["focusable"])])),_:3},8,["disabled","text-value"])}],["__file","dropdown-item.vue"]]);const Ke=n({name:"ElDropdownMenu",props:le,setup(e){const o=t("dropdown"),{_elDropdownSize:n}=De(),r=n.value,{focusTrapRef:a,onKeydown:i}=m(N,void 0),{contentRef:d,role:u,triggerId:c}=m(Se,void 0),{collectionRef:p,getItems:v}=m(re,void 0),{rovingFocusGroupRef:f,rovingFocusGroupRootStyle:g,tabIndex:b,onBlur:w,onFocus:h,onMousedown:y}=m(we,void 0),{collectionRef:I}=m(ge,void 0),E=l((()=>[o.b("menu"),o.bm("menu",null==r?void 0:r.value)])),F=de(d,p,a,f,I),C=U((o=>{var n;null==(n=e.onKeydown)||n.call(e,o)}),(e=>{const{currentTarget:o,code:n,target:t}=e;if(o.contains(t),S.tab===n&&e.stopImmediatePropagation(),e.preventDefault(),t!==s(d))return;if(!ae.includes(n))return;const l=v().filter((e=>!e.disabled)).map((e=>e.ref));ie.includes(n)&&l.reverse(),Ie(l)}));return{size:r,rovingFocusGroupRootStyle:g,tabIndex:b,dropdownKls:E,role:u,triggerId:c,dropdownListWrapperRef:F,handleKeydown:e=>{C(e),i(e)},onBlur:w,onFocus:h,onMousedown:y}}}),Me=["role","aria-labelledby"];var Le=p(Ke,[["render",function(e,o,n,t,l,s){return r(),a("ul",{ref:e.dropdownListWrapperRef,class:i(e.dropdownKls),style:c(e.rovingFocusGroupRootStyle),tabindex:-1,role:e.role,"aria-labelledby":e.triggerId,onBlur:o[0]||(o[0]=(...o)=>e.onBlur&&e.onBlur(...o)),onFocus:o[1]||(o[1]=(...o)=>e.onFocus&&e.onFocus(...o)),onKeydown:o[2]||(o[2]=H(((...o)=>e.handleKeydown&&e.handleKeydown(...o)),["self"])),onMousedown:o[3]||(o[3]=H(((...o)=>e.onMousedown&&e.onMousedown(...o)),["self"]))},[d(e.$slots,"default")],46,Me)}],["__file","dropdown-menu.vue"]]);const Ge=v(xe,{DropdownItem:Pe,DropdownMenu:Le}),ze=J(Pe),Oe=J(Le);export{ze as E,Oe as a,Ge as b,pe as c}; diff --git a/resources/views/dist/js/el-drawer.CpqknkfB.js b/resources/views/dist/js/el-drawer.CpqknkfB.js new file mode 100644 index 0000000..cf92966 --- /dev/null +++ b/resources/views/dist/js/el-drawer.CpqknkfB.js @@ -0,0 +1 @@ +import{v as e,d as a,ae as s,a1 as t,c as l,r as o,b as r,y as d,K as i,e as n,f as c,l as f,w as u,a3 as p,g as v,cl as b,cj as y,C as h,a8 as m,j as k,i as A,h as C,k as w,F,p as E,E as L,ab as R,aa as g,T as _,c1 as $,_ as x,q as S}from"./index.DMBpWXpT.js";import{d as T,a as z,u as B}from"./use-dialog.CoOh9qjD.js";const j=e({...T,direction:{type:String,default:"rtl",values:["ltr","rtl","ttb","btt"]},size:{type:[String,Number],default:"30%"},withHeader:{type:Boolean,default:!0},modalFade:{type:Boolean,default:!0},headerAriaLevel:{type:String,default:"2"}}),q=z,I=["aria-label","aria-labelledby","aria-describedby"],P=["id","aria-level"],D=["aria-label"],H=["id"],O=a({name:"ElDrawer",inheritAttrs:!1});const K=S(x(a({...O,props:j,emits:q,setup(e,{expose:a}){const x=e,S=s();t({scope:"el-drawer",from:"the title slot",replacement:"the header slot",version:"3.0.0",ref:"https://element-plus.org/en-US/component/drawer.html#slots"},l((()=>!!S.title)));const T=o(),z=o(),j=r("drawer"),{t:q}=d(),{afterEnter:O,afterLeave:K,beforeLeave:M,visible:N,rendered:U,titleId:G,bodyId:J,zIndex:Q,onModalClick:V,onOpenAutoFocus:W,onCloseAutoFocus:X,onFocusoutPrevented:Y,onCloseRequested:Z,handleClose:ee}=B(x,T),ae=l((()=>"rtl"===x.direction||"ltr"===x.direction)),se=l((()=>i(x.size)));return a({handleClose:ee,afterEnter:O,afterLeave:K}),(e,a)=>(n(),c($,{to:"body",disabled:!e.appendToBody},[f(_,{name:v(j).b("fade"),onAfterEnter:v(O),onAfterLeave:v(K),onBeforeLeave:v(M),persisted:""},{default:u((()=>[p(f(v(b),{mask:e.modal,"overlay-class":e.modalClass,"z-index":v(Q),onClick:v(V)},{default:u((()=>[f(v(y),{loop:"",trapped:v(N),"focus-trap-el":T.value,"focus-start-el":z.value,onFocusAfterTrapped:v(W),onFocusAfterReleased:v(X),onFocusoutPrevented:v(Y),onReleaseRequested:v(Z)},{default:u((()=>[h("div",m({ref_key:"drawerRef",ref:T,"aria-modal":"true","aria-label":e.title||void 0,"aria-labelledby":e.title?void 0:v(G),"aria-describedby":v(J)},e.$attrs,{class:[v(j).b(),e.direction,v(N)&&"open"],style:v(ae)?"width: "+v(se):"height: "+v(se),role:"dialog",onClick:a[1]||(a[1]=k((()=>{}),["stop"]))}),[h("span",{ref_key:"focusStartRef",ref:z,class:A(v(j).e("sr-focus")),tabindex:"-1"},null,2),e.withHeader?(n(),C("header",{key:0,class:A(v(j).e("header"))},[e.$slots.title?w(e.$slots,"title",{key:1},(()=>[E(" DEPRECATED SLOT ")])):w(e.$slots,"header",{key:0,close:v(ee),titleId:v(G),titleClass:v(j).e("title")},(()=>[e.$slots.title?E("v-if",!0):(n(),C("span",{key:0,id:v(G),role:"heading","aria-level":e.headerAriaLevel,class:A(v(j).e("title"))},F(e.title),11,P))])),e.showClose?(n(),C("button",{key:2,"aria-label":v(q)("el.drawer.close"),class:A(v(j).e("close-btn")),type:"button",onClick:a[0]||(a[0]=(...e)=>v(ee)&&v(ee)(...e))},[f(v(L),{class:A(v(j).e("close"))},{default:u((()=>[f(v(R))])),_:1},8,["class"])],10,D)):E("v-if",!0)],2)):E("v-if",!0),v(U)?(n(),C("div",{key:1,id:v(J),class:A(v(j).e("body"))},[w(e.$slots,"default")],10,H)):E("v-if",!0),e.$slots.footer?(n(),C("div",{key:2,class:A(v(j).e("footer"))},[w(e.$slots,"footer")],2)):E("v-if",!0)],16,I)])),_:3},8,["trapped","focus-trap-el","focus-start-el","onFocusAfterTrapped","onFocusAfterReleased","onFocusoutPrevented","onReleaseRequested"])])),_:3},8,["mask","overlay-class","z-index","onClick"]),[[g,v(N)]])])),_:3},8,["name","onAfterEnter","onAfterLeave","onBeforeLeave"])],8,["disabled"]))}}),[["__file","drawer.vue"]]));export{K as E}; diff --git a/resources/views/dist/js/el-form-item.l0sNRNKZ.js b/resources/views/dist/js/el-form-item.l0sNRNKZ.js new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/resources/views/dist/js/el-form-item.l0sNRNKZ.js @@ -0,0 +1 @@ + diff --git a/resources/views/dist/js/el-form.DUR-mZNt.js b/resources/views/dist/js/el-form.DUR-mZNt.js new file mode 100644 index 0000000..533bac5 --- /dev/null +++ b/resources/views/dist/js/el-form.DUR-mZNt.js @@ -0,0 +1 @@ +import{bT as e,d5 as r,d6 as t,cQ as n,d3 as a,cS as i,cU as o,cG as s,v as u,bN as l,A as f,bl as c,N as d,c9 as p,r as v,c as y,d as g,X as h,b as m,J as b,ac as w,z as j,a0 as q,bd as F,d7 as O,e as A,h as x,k as E,i as P,g as S,_ as k,bm as R,B as I,ci as $,t as B,o as M,al as _,co as V,aq as W,l as D,S as N,a2 as z,ae as C,b8 as T,d8 as L,K as U,d9 as J,w as G,f as Z,D as H,n as K,a7 as Q,F as X,p as Y,C as ee,aR as re,q as te,H as ne}from"./index.DMBpWXpT.js";import{c as ae}from"./castArray.arHVDzqw.js";import{c as ie,d as oe,e as se,o as ue,k as le,f as fe,s as ce,h as de,U as pe,a as ve,n as ye,j as ge,i as he,S as me,g as be}from"./_Uint8Array.BEOPqGcx.js";var we=Object.create,je=function(){function r(){}return function(t){if(!e(t))return{};if(we)return we(t);r.prototype=t;var n=new r;return r.prototype=void 0,n}}();function qe(e,r){var t=-1,n=e.length;for(r||(r=Array(n));++t(c(e)||d(e))&&p(r)&&d(t)};function Ar(){const e=v([]),r=y((()=>{if(!e.value.length)return"0";const r=Math.max(...e.value);return r?`${r}px`:""}));function t(t){const n=e.value.indexOf(t);return-1===n&&r.value,n}return{autoLabelWidth:r,registerLabelWidth:function(r,n){if(r&&n){const a=t(n);e.value.splice(a,1,r)}else r&&e.value.push(r)},deregisterLabelWidth:function(r){const n=t(r);n>-1&&e.value.splice(n,1)}}}const xr=(e,r)=>{const t=ae(r);return t.length>0?e.filter((e=>e.prop&&t.includes(e.prop))):e},Er=g({name:"ElForm"});var Pr=k(g({...Er,props:Fr,emits:Or,setup(e,{expose:r,emit:t}){const n=e,a=[],i=h(),o=m("form"),s=y((()=>{const{labelPosition:e,inline:r}=n;return[o.b(),o.m(i.value||"default"),{[o.m(`label-${e}`)]:e,[o.m("inline")]:r}]})),u=(e=[])=>{n.model&&xr(a,e).forEach((e=>e.resetField()))},l=(e=[])=>{xr(a,e).forEach((e=>e.clearValidate()))},f=y((()=>!!n.model)),c=async e=>p(void 0,e),d=async(e=[])=>{if(!f.value)return!1;const r=(e=>{if(0===a.length)return[];const r=xr(a,e);return r.length?r:[]})(e);if(0===r.length)return!0;let t={};for(const a of r)try{await a.validate("")}catch(n){t={...t,...n}}return 0===Object.keys(t).length||Promise.reject(t)},p=async(e=[],r)=>{const t=!R(r);try{const t=await d(e);return!0===t&&await(null==r?void 0:r(t)),t}catch(a){if(a instanceof Error)throw a;const e=a;return n.scrollToError&&v(Object.keys(e)[0]),await(null==r?void 0:r(!1,e)),t&&Promise.reject(e)}},v=e=>{var r;const t=xr(a,e)[0];t&&(null==(r=t.$el)||r.scrollIntoView(n.scrollIntoViewOptions))};return b((()=>n.rules),(()=>{n.validateOnRuleChange&&c().catch((e=>w()))}),{deep:!0}),j(O,q({...F(n),emit:t,resetFields:u,clearValidate:l,validateField:p,getField:e=>a.find((r=>r.prop===e)),addField:e=>{a.push(e)},removeField:e=>{e.prop&&a.splice(a.indexOf(e),1)},...Ar()})),r({validate:c,validateField:p,resetFields:u,clearValidate:l,scrollToField:v,fields:a}),(e,r)=>(A(),x("form",{class:P(S(s))},[E(e.$slots,"default")],2))}}),[["__file","form.vue"]]);function Sr(){return Sr=Object.assign?Object.assign.bind():function(e){for(var r=1;r1?r-1:0),n=1;n=i)return e;switch(e){case"%s":return String(t[a++]);case"%d":return Number(t[a++]);case"%j":try{return JSON.stringify(t[a++])}catch(r){return"[Circular]"}break;default:return e}})):e}function Wr(e,r){return null==e||(!("array"!==r||!Array.isArray(e)||e.length)||!(!function(e){return"string"===e||"url"===e||"hex"===e||"email"===e||"date"===e||"pattern"===e}(r)||"string"!=typeof e||e))}function Dr(e,r,t){var n=0,a=e.length;!function i(o){if(o&&o.length)t(o);else{var s=n;n+=1,s()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,Gr=/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i,Zr={integer:function(e){return Zr.number(e)&&parseInt(e,10)===e},float:function(e){return Zr.number(e)&&!Zr.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch(r){return!1}},date:function(e){return"function"==typeof e.getTime&&"function"==typeof e.getMonth&&"function"==typeof e.getYear&&!isNaN(e.getTime())},number:function(e){return!isNaN(e)&&"number"==typeof e},object:function(e){return"object"==typeof e&&!Zr.array(e)},method:function(e){return"function"==typeof e},email:function(e){return"string"==typeof e&&e.length<=320&&!!e.match(Jr)},url:function(e){return"string"==typeof e&&e.length<=2048&&!!e.match(function(){if(Lr)return Lr;var e="[a-fA-F\\d:]",r=function(r){return r&&r.includeBoundaries?"(?:(?<=\\s|^)(?="+e+")|(?<="+e+")(?=\\s|$))":""},t="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",n="[a-fA-F\\d]{1,4}",a=("\n(?:\n(?:"+n+":){7}(?:"+n+"|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:"+n+":){6}(?:"+t+"|:"+n+"|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:"+n+":){5}(?::"+t+"|(?::"+n+"){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:"+n+":){4}(?:(?::"+n+"){0,1}:"+t+"|(?::"+n+"){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:"+n+":){3}(?:(?::"+n+"){0,2}:"+t+"|(?::"+n+"){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:"+n+":){2}(?:(?::"+n+"){0,3}:"+t+"|(?::"+n+"){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:"+n+":){1}(?:(?::"+n+"){0,4}:"+t+"|(?::"+n+"){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::"+n+"){0,5}:"+t+"|(?::"+n+"){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\n").replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),i=new RegExp("(?:^"+t+"$)|(?:^"+a+"$)"),o=new RegExp("^"+t+"$"),s=new RegExp("^"+a+"$"),u=function(e){return e&&e.exact?i:new RegExp("(?:"+r(e)+t+r(e)+")|(?:"+r(e)+a+r(e)+")","g")};u.v4=function(e){return e&&e.exact?o:new RegExp(""+r(e)+t+r(e),"g")},u.v6=function(e){return e&&e.exact?s:new RegExp(""+r(e)+a+r(e),"g")};var l=u.v4().source,f=u.v6().source;return Lr=new RegExp("(?:^(?:(?:(?:[a-z]+:)?//)|www\\.)(?:\\S+(?::\\S*)?@)?(?:localhost|"+l+"|"+f+'|(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:[/?#][^\\s"]*)?$)',"i")}())},hex:function(e){return"string"==typeof e&&!!e.match(Gr)}},Hr="enum",Kr={required:Ur,whitespace:function(e,r,t,n,a){(/^\s+$/.test(r)||""===r)&&n.push(Vr(a.messages.whitespace,e.fullField))},type:function(e,r,t,n,a){if(e.required&&void 0===r)Ur(e,r,t,n,a);else{var i=e.type;["integer","float","array","regexp","object","method","email","number","date","url","hex"].indexOf(i)>-1?Zr[i](r)||n.push(Vr(a.messages.types[i],e.fullField,e.type)):i&&typeof r!==e.type&&n.push(Vr(a.messages.types[i],e.fullField,e.type))}},range:function(e,r,t,n,a){var i="number"==typeof e.len,o="number"==typeof e.min,s="number"==typeof e.max,u=r,l=null,f="number"==typeof r,c="string"==typeof r,d=Array.isArray(r);if(f?l="number":c?l="string":d&&(l="array"),!l)return!1;d&&(u=r.length),c&&(u=r.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"_").length),i?u!==e.len&&n.push(Vr(a.messages[l].len,e.fullField,e.len)):o&&!s&&ue.max?n.push(Vr(a.messages[l].max,e.fullField,e.max)):o&&s&&(ue.max)&&n.push(Vr(a.messages[l].range,e.fullField,e.min,e.max))},enum:function(e,r,t,n,a){e[Hr]=Array.isArray(e[Hr])?e[Hr]:[],-1===e[Hr].indexOf(r)&&n.push(Vr(a.messages[Hr],e.fullField,e[Hr].join(", ")))},pattern:function(e,r,t,n,a){if(e.pattern)if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(r)||n.push(Vr(a.messages.pattern.mismatch,e.fullField,r,e.pattern));else if("string"==typeof e.pattern){new RegExp(e.pattern).test(r)||n.push(Vr(a.messages.pattern.mismatch,e.fullField,r,e.pattern))}}},Qr=function(e,r,t,n,a){var i=e.type,o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(Wr(r,i)&&!e.required)return t();Kr.required(e,r,n,o,a,i),Wr(r,i)||Kr.type(e,r,n,o,a)}t(o)},Xr={string:function(e,r,t,n,a){var i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(Wr(r,"string")&&!e.required)return t();Kr.required(e,r,n,i,a,"string"),Wr(r,"string")||(Kr.type(e,r,n,i,a),Kr.range(e,r,n,i,a),Kr.pattern(e,r,n,i,a),!0===e.whitespace&&Kr.whitespace(e,r,n,i,a))}t(i)},method:function(e,r,t,n,a){var i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(Wr(r)&&!e.required)return t();Kr.required(e,r,n,i,a),void 0!==r&&Kr.type(e,r,n,i,a)}t(i)},number:function(e,r,t,n,a){var i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(""===r&&(r=void 0),Wr(r)&&!e.required)return t();Kr.required(e,r,n,i,a),void 0!==r&&(Kr.type(e,r,n,i,a),Kr.range(e,r,n,i,a))}t(i)},boolean:function(e,r,t,n,a){var i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(Wr(r)&&!e.required)return t();Kr.required(e,r,n,i,a),void 0!==r&&Kr.type(e,r,n,i,a)}t(i)},regexp:function(e,r,t,n,a){var i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(Wr(r)&&!e.required)return t();Kr.required(e,r,n,i,a),Wr(r)||Kr.type(e,r,n,i,a)}t(i)},integer:function(e,r,t,n,a){var i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(Wr(r)&&!e.required)return t();Kr.required(e,r,n,i,a),void 0!==r&&(Kr.type(e,r,n,i,a),Kr.range(e,r,n,i,a))}t(i)},float:function(e,r,t,n,a){var i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(Wr(r)&&!e.required)return t();Kr.required(e,r,n,i,a),void 0!==r&&(Kr.type(e,r,n,i,a),Kr.range(e,r,n,i,a))}t(i)},array:function(e,r,t,n,a){var i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(null==r&&!e.required)return t();Kr.required(e,r,n,i,a,"array"),null!=r&&(Kr.type(e,r,n,i,a),Kr.range(e,r,n,i,a))}t(i)},object:function(e,r,t,n,a){var i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(Wr(r)&&!e.required)return t();Kr.required(e,r,n,i,a),void 0!==r&&Kr.type(e,r,n,i,a)}t(i)},enum:function(e,r,t,n,a){var i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(Wr(r)&&!e.required)return t();Kr.required(e,r,n,i,a),void 0!==r&&Kr.enum(e,r,n,i,a)}t(i)},pattern:function(e,r,t,n,a){var i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(Wr(r,"string")&&!e.required)return t();Kr.required(e,r,n,i,a),Wr(r,"string")||Kr.pattern(e,r,n,i,a)}t(i)},date:function(e,r,t,n,a){var i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(Wr(r,"date")&&!e.required)return t();var o;if(Kr.required(e,r,n,i,a),!Wr(r,"date"))o=r instanceof Date?r:new Date(r),Kr.type(e,o,n,i,a),o&&Kr.range(e,o.getTime(),n,i,a)}t(i)},url:Qr,hex:Qr,email:Qr,required:function(e,r,t,n,a){var i=[],o=Array.isArray(r)?"array":typeof r;Kr.required(e,r,n,i,a,o),t(i)},any:function(e,r,t,n,a){var i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(Wr(r)&&!e.required)return t();Kr.required(e,r,n,i,a)}t(i)}};function Yr(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}var et=Yr(),rt=function(){function e(e){this.rules=null,this._messages=et,this.define(e)}var r=e.prototype;return r.define=function(e){var r=this;if(!e)throw new Error("Cannot configure a schema with no rules");if("object"!=typeof e||Array.isArray(e))throw new Error("Rules must be an object");this.rules={},Object.keys(e).forEach((function(t){var n=e[t];r.rules[t]=Array.isArray(n)?n:[n]}))},r.messages=function(e){return e&&(this._messages=Tr(Yr(),e)),this._messages},r.validate=function(r,t,n){var a=this;void 0===t&&(t={}),void 0===n&&(n=function(){});var i=r,o=t,s=n;if("function"==typeof o&&(s=o,o={}),!this.rules||0===Object.keys(this.rules).length)return s&&s(null,i),Promise.resolve(i);if(o.messages){var u=this.messages();u===et&&(u=Yr()),Tr(u,o.messages),o.messages=u}else o.messages=this.messages();var l={};(o.keys||Object.keys(this.rules)).forEach((function(e){var t=a.rules[e],n=i[e];t.forEach((function(t){var o=t;"function"==typeof o.transform&&(i===r&&(i=Sr({},i)),n=i[e]=o.transform(n)),(o="function"==typeof o?{validator:o}:Sr({},o)).validator=a.getValidationMethod(o),o.validator&&(o.field=e,o.fullField=o.fullField||e,o.type=a.getType(o),l[e]=l[e]||[],l[e].push({rule:o,value:n,source:i,field:e}))}))}));var f={};return zr(l,o,(function(r,t){var n,a=r.rule,s=!("object"!==a.type&&"array"!==a.type||"object"!=typeof a.fields&&"object"!=typeof a.defaultField);function u(e,r){return Sr({},r,{fullField:a.fullField+"."+e,fullFields:a.fullFields?[].concat(a.fullFields,[e]):[e]})}function l(n){void 0===n&&(n=[]);var l=Array.isArray(n)?n:[n];!o.suppressWarning&&l.length&&e.warning("async-validator:",l),l.length&&void 0!==a.message&&(l=[].concat(a.message));var c=l.map(Cr(a,i));if(o.first&&c.length)return f[a.field]=1,t(c);if(s){if(a.required&&!r.value)return void 0!==a.message?c=[].concat(a.message).map(Cr(a,i)):o.error&&(c=[o.error(a,Vr(o.messages.required,a.field))]),t(c);var d={};a.defaultField&&Object.keys(r.value).map((function(e){d[e]=a.defaultField})),d=Sr({},d,r.rule.fields);var p={};Object.keys(d).forEach((function(e){var r=d[e],t=Array.isArray(r)?r:[r];p[e]=t.map(u.bind(null,e))}));var v=new e(p);v.messages(o.messages),r.rule.options&&(r.rule.options.messages=o.messages,r.rule.options.error=o.error),v.validate(r.value,r.rule.options||o,(function(e){var r=[];c&&c.length&&r.push.apply(r,c),e&&e.length&&r.push.apply(r,e),t(r.length?r:null)}))}else t(c)}if(s=s&&(a.required||!a.required&&r.value),a.field=r.field,a.asyncValidator)n=a.asyncValidator(a,r.value,l,r.source,o);else if(a.validator){try{n=a.validator(a,r.value,l,r.source,o)}catch(c){null==console.error||console.error(c),o.suppressValidatorError||setTimeout((function(){throw c}),0),l(c.message)}!0===n?l():!1===n?l("function"==typeof a.message?a.message(a.fullField||a.field):a.message||(a.fullField||a.field)+" fails"):n instanceof Array?l(n):n instanceof Error&&l(n.message)}n&&n.then&&n.then((function(){return l()}),(function(e){return l(e)}))}),(function(e){!function(e){for(var r,t,n=[],a={},o=0;o");const a=m("form"),i=v(),o=v(0),s=(n="update")=>{z((()=>{r.default&&e.isAutoWidth&&("update"===n?o.value=(()=>{var e;if(null==(e=i.value)?void 0:e.firstElementChild){const e=window.getComputedStyle(i.value.firstElementChild).width;return Math.ceil(Number.parseFloat(e))}return 0})():"remove"===n&&(null==t||t.deregisterLabelWidth(o.value)))}))},u=()=>s("update");return M((()=>{u()})),_((()=>{s("remove")})),V((()=>u())),b(o,((r,n)=>{e.updateAll&&(null==t||t.registerLabelWidth(r,n))})),W(y((()=>{var e,r;return null!=(r=null==(e=i.value)?void 0:e.firstElementChild)?r:null})),u),()=>{var s,u;if(!r)return null;const{isAutoWidth:l}=e;if(l){const e=null==t?void 0:t.autoLabelWidth,u={};if((null==n?void 0:n.hasLabel)&&e&&"auto"!==e){const r=Math.max(0,Number.parseInt(e,10)-o.value),a=n.labelPosition||t.labelPosition;r&&(u["left"===a?"marginRight":"marginLeft"]=`${r}px`)}return D("div",{ref:i,class:[a.be("item","label-wrap")],style:u},[null==(s=r.default)?void 0:s.call(r)])}return D(N,{ref:i},[null==(u=r.default)?void 0:u.call(r)])}}});const it=["role","aria-labelledby"],ot=g({name:"ElFormItem"});var st=k(g({...ot,props:tt,setup(e,{expose:r}){const t=e,n=C(),a=I(O,void 0),i=I($,void 0),o=h(void 0,{formItem:!1}),s=m("form-item"),u=T().value,l=v([]),f=v(""),c=L(f,100),g=v(""),w=v();let k,B=!1;const V=y((()=>t.labelPosition||(null==a?void 0:a.labelPosition))),W=y((()=>{if("top"===V.value)return{};const e=U(t.labelWidth||(null==a?void 0:a.labelWidth)||"");return e?{width:e}:{}})),N=y((()=>{if("top"===V.value||(null==a?void 0:a.inline))return{};if(!t.label&&!t.labelWidth&&fe)return{};const e=U(t.labelWidth||(null==a?void 0:a.labelWidth)||"");return t.label||n.label?{}:{marginLeft:e}})),te=y((()=>[s.b(),s.m(o.value),s.is("error","error"===f.value),s.is("validating","validating"===f.value),s.is("success","success"===f.value),s.is("required",ve.value||t.required),s.is("no-asterisk",null==a?void 0:a.hideRequiredAsterisk),"right"===(null==a?void 0:a.requireAsteriskPosition)?"asterisk-right":"asterisk-left",{[s.m("feedback")]:null==a?void 0:a.statusIcon,[s.m(`label-${V.value}`)]:V.value}])),ne=y((()=>p(t.inlineMessage)?t.inlineMessage:(null==a?void 0:a.inlineMessage)||!1)),ie=y((()=>[s.e("error"),{[s.em("error","inline")]:ne.value}])),oe=y((()=>t.prop?d(t.prop)?t.prop:t.prop.join("."):"")),se=y((()=>!(!t.label&&!n.label))),ue=y((()=>t.for||(1===l.value.length?l.value[0]:void 0))),le=y((()=>!ue.value&&se.value)),fe=!!i,ce=y((()=>{const e=null==a?void 0:a.model;if(e&&t.prop)return J(e,t.prop).value})),de=y((()=>{const{required:e}=t,r=[];t.rules&&r.push(...ae(t.rules));const n=null==a?void 0:a.rules;if(n&&t.prop){const e=J(n,t.prop).value;e&&r.push(...ae(e))}if(void 0!==e){const t=r.map(((e,r)=>[e,r])).filter((([e])=>Object.keys(e).includes("required")));if(t.length>0)for(const[n,a]of t)n.required!==e&&(r[a]={...n,required:e});else r.push({required:e})}return r})),pe=y((()=>de.value.length>0)),ve=y((()=>de.value.some((e=>e.required)))),ye=y((()=>{var e;return"error"===c.value&&t.showMessage&&(null==(e=null==a?void 0:a.showMessage)||e)})),ge=y((()=>`${t.label||""}${(null==a?void 0:a.labelSuffix)||""}`)),he=e=>{f.value=e},me=async e=>{const r=oe.value;return new rt({[r]:e}).validate({[r]:ce.value},{firstFields:!0}).then((()=>(he("success"),null==a||a.emit("validate",t.prop,!0,""),!0))).catch((e=>((e=>{var r,n;const{errors:i,fields:o}=e;i&&o||console.error(e),he("error"),g.value=i?null!=(n=null==(r=null==i?void 0:i[0])?void 0:r.message)?n:`${t.prop} is required`:"",null==a||a.emit("validate",t.prop,!1,g.value)})(e),Promise.reject(e))))},be=async(e,r)=>{if(B||!t.prop)return!1;const n=R(r);if(!pe.value)return null==r||r(!1),!1;const a=(e=>de.value.filter((r=>!r.trigger||!e||(Array.isArray(r.trigger)?r.trigger.includes(e):r.trigger===e))).map((({trigger:e,...r})=>r)))(e);return 0===a.length?(null==r||r(!0),!0):(he("validating"),me(a).then((()=>(null==r||r(!0),!0))).catch((e=>{const{fields:t}=e;return null==r||r(!1,t),!n&&Promise.reject(t)})))},we=()=>{he(""),g.value="",B=!1},je=async()=>{const e=null==a?void 0:a.model;if(!e||!t.prop)return;const r=J(e,t.prop);B=!0,r.value=jr(k),await z(),we(),B=!1};b((()=>t.error),(e=>{g.value=e||"",he(e?"error":"")}),{immediate:!0}),b((()=>t.validateStatus),(e=>he(e||"")));const qe=q({...F(t),$el:w,size:o,validateState:f,labelId:u,inputIds:l,isGroup:le,hasLabel:se,fieldValue:ce,addInputId:e=>{l.value.includes(e)||l.value.push(e)},removeInputId:e=>{l.value=l.value.filter((r=>r!==e))},resetField:je,clearValidate:we,validate:be});return j($,qe),M((()=>{t.prop&&(null==a||a.addField(qe),k=jr(ce.value))})),_((()=>{null==a||a.removeField(qe)})),r({size:o,validateMessage:g,validateState:f,validate:be,clearValidate:we,resetField:je}),(e,r)=>{var t;return A(),x("div",{ref_key:"formItemRef",ref:w,class:P(S(te)),role:S(le)?"group":void 0,"aria-labelledby":S(le)?S(u):void 0},[D(S(at),{"is-auto-width":"auto"===S(W).width,"update-all":"auto"===(null==(t=S(a))?void 0:t.labelWidth)},{default:G((()=>[S(se)?(A(),Z(H(S(ue)?"label":"div"),{key:0,id:S(u),for:S(ue),class:P(S(s).e("label")),style:K(S(W))},{default:G((()=>[E(e.$slots,"label",{label:S(ge)},(()=>[Q(X(S(ge)),1)]))])),_:3},8,["id","for","class","style"])):Y("v-if",!0)])),_:3},8,["is-auto-width","update-all"]),ee("div",{class:P(S(s).e("content")),style:K(S(N))},[E(e.$slots,"default"),D(re,{name:`${S(s).namespace.value}-zoom-in-top`},{default:G((()=>[S(ye)?E(e.$slots,"error",{key:0,error:g.value},(()=>[ee("div",{class:P(S(ie))},X(g.value),3)])):Y("v-if",!0)])),_:3},8,["name"])],6)],10,it)}}}),[["__file","form-item.vue"]]);const ut=te(Pr,{FormItem:st}),lt=ne(st);export{ut as E,lt as a,qe as b,Fe as c,Ie as d,Ne as e,wr as f,Ee as g,sr as i,xe as k}; diff --git a/resources/views/dist/js/el-image-viewer.CSeiPfXQ.js b/resources/views/dist/js/el-image-viewer.CSeiPfXQ.js new file mode 100644 index 0000000..fccc2da --- /dev/null +++ b/resources/views/dist/js/el-image-viewer.CSeiPfXQ.js @@ -0,0 +1 @@ +import{bT as e,v as a,A as s,ao as n,bK as t,d as l,bU as o,bV as i,bW as c,y as u,b as r,bX as d,r as f,bY as v,s as m,c as b,J as p,a2 as g,o as k,e as x,f as w,l as _,w as y,C as I,i as C,g as h,n as z,j as N,p as O,E as T,ab as A,h as X,S as E,bo as L,ak as R,bZ as S,b_ as Y,D as $,b$ as j,c0 as B,V as D,a3 as F,aa as V,k as W,T as M,c1 as P,_ as Z,a as q,ad as G,bP as H,q as J}from"./index.DMBpWXpT.js";import{d as K}from"./debounce.l44evi-0.js";function U(a,s,n){var t=!0,l=!0;if("function"!=typeof a)throw new TypeError("Expected a function");return e(n)&&(t="leading"in n?!!n.leading:t,l="trailing"in n?!!n.trailing:l),K(a,s,{leading:t,maxWait:s,trailing:l})}const Q=a({urlList:{type:s(Array),default:()=>n([])},zIndex:{type:Number},initialIndex:{type:Number,default:0},infinite:{type:Boolean,default:!0},hideOnClickModal:Boolean,teleported:Boolean,closeOnPressEscape:{type:Boolean,default:!0},zoomRate:{type:Number,default:1.2},minScale:{type:Number,default:.2},maxScale:{type:Number,default:7},crossorigin:{type:s(String)}}),ee={close:()=>!0,switch:e=>t(e),rotate:e=>t(e)},ae=["src","crossorigin"],se=l({name:"ElImageViewer"});const ne=J(Z(l({...se,props:Q,emits:ee,setup(e,{expose:a,emit:s}){var n;const t=e,l={CONTAIN:{name:"contain",icon:o(i)},ORIGINAL:{name:"original",icon:o(c)}},{t:Z}=u(),J=r("image-viewer"),{nextZIndex:K}=d(),Q=f(),ee=f([]),se=v(),ne=f(!0),te=f(t.initialIndex),le=m(l.CONTAIN),oe=f({scale:1,deg:0,offsetX:0,offsetY:0,enableTransition:!1}),ie=f(null!=(n=t.zIndex)?n:K()),ce=b((()=>{const{urlList:e}=t;return e.length<=1})),ue=b((()=>0===te.value)),re=b((()=>te.value===t.urlList.length-1)),de=b((()=>t.urlList[te.value])),fe=b((()=>[J.e("btn"),J.e("prev"),J.is("disabled",!t.infinite&&ue.value)])),ve=b((()=>[J.e("btn"),J.e("next"),J.is("disabled",!t.infinite&&re.value)])),me=b((()=>{const{scale:e,deg:a,offsetX:s,offsetY:n,enableTransition:t}=oe.value;let o=s/e,i=n/e;switch(a%360){case 90:case-270:[o,i]=[i,-o];break;case 180:case-180:[o,i]=[-o,-i];break;case 270:case-90:[o,i]=[-i,o]}const c={transform:`scale(${e}) rotate(${a}deg) translate(${o}px, ${i}px)`,transition:t?"transform .3s":""};return le.value.name===l.CONTAIN.name&&(c.maxWidth=c.maxHeight="100%"),c}));function be(){se.stop(),s("close")}function pe(){ne.value=!1}function ge(e){ne.value=!1,e.target.alt=Z("el.image.error")}function ke(e){if(ne.value||0!==e.button||!Q.value)return;oe.value.enableTransition=!1;const{offsetX:a,offsetY:s}=oe.value,n=e.pageX,t=e.pageY,l=U((e=>{oe.value={...oe.value,offsetX:a+e.pageX-n,offsetY:s+e.pageY-t}})),o=q(document,"mousemove",l);q(document,"mouseup",(()=>{o()})),e.preventDefault()}function xe(){oe.value={scale:1,deg:0,offsetX:0,offsetY:0,enableTransition:!1}}function we(){if(ne.value)return;const e=H(l),a=Object.values(l),s=le.value.name,n=(a.findIndex((e=>e.name===s))+1)%e.length;le.value=l[e[n]],xe()}function _e(e){const a=t.urlList.length;te.value=(e+a)%a}function ye(){ue.value&&!t.infinite||_e(te.value-1)}function Ie(){re.value&&!t.infinite||_e(te.value+1)}function Ce(e,a={}){if(ne.value)return;const{minScale:n,maxScale:l}=t,{zoomRate:o,rotateDeg:i,enableTransition:c}={zoomRate:t.zoomRate,rotateDeg:90,enableTransition:!0,...a};switch(e){case"zoomOut":oe.value.scale>n&&(oe.value.scale=Number.parseFloat((oe.value.scale/o).toFixed(3)));break;case"zoomIn":oe.value.scale{g((()=>{const e=ee.value[0];(null==e?void 0:e.complete)||(ne.value=!0)}))})),p(te,(e=>{xe(),s("switch",e)})),k((()=>{var e,a;!function(){const e=U((e=>{switch(e.code){case G.esc:t.closeOnPressEscape&&be();break;case G.space:we();break;case G.left:ye();break;case G.up:Ce("zoomIn");break;case G.right:Ie();break;case G.down:Ce("zoomOut")}})),a=U((e=>{Ce((e.deltaY||e.deltaX)<0?"zoomIn":"zoomOut",{zoomRate:t.zoomRate,enableTransition:!1})}));se.run((()=>{q(document,"keydown",e),q(document,"wheel",a)}))}(),null==(a=null==(e=Q.value)?void 0:e.focus)||a.call(e)})),a({setActiveItem:_e}),(e,a)=>(x(),w(P,{to:"body",disabled:!e.teleported},[_(M,{name:"viewer-fade",appear:""},{default:y((()=>[I("div",{ref_key:"wrapper",ref:Q,tabindex:-1,class:C(h(J).e("wrapper")),style:z({zIndex:ie.value})},[I("div",{class:C(h(J).e("mask")),onClick:a[0]||(a[0]=N((a=>e.hideOnClickModal&&be()),["self"]))},null,2),O(" CLOSE "),I("span",{class:C([h(J).e("btn"),h(J).e("close")]),onClick:be},[_(h(T),null,{default:y((()=>[_(h(A))])),_:1})],2),O(" ARROW "),h(ce)?O("v-if",!0):(x(),X(E,{key:0},[I("span",{class:C(h(fe)),onClick:ye},[_(h(T),null,{default:y((()=>[_(h(L))])),_:1})],2),I("span",{class:C(h(ve)),onClick:Ie},[_(h(T),null,{default:y((()=>[_(h(R))])),_:1})],2)],64)),O(" ACTIONS "),I("div",{class:C([h(J).e("btn"),h(J).e("actions")])},[I("div",{class:C(h(J).e("actions__inner"))},[_(h(T),{onClick:a[1]||(a[1]=e=>Ce("zoomOut"))},{default:y((()=>[_(h(S))])),_:1}),_(h(T),{onClick:a[2]||(a[2]=e=>Ce("zoomIn"))},{default:y((()=>[_(h(Y))])),_:1}),I("i",{class:C(h(J).e("actions__divider"))},null,2),_(h(T),{onClick:we},{default:y((()=>[(x(),w($(h(le).icon)))])),_:1}),I("i",{class:C(h(J).e("actions__divider"))},null,2),_(h(T),{onClick:a[3]||(a[3]=e=>Ce("anticlockwise"))},{default:y((()=>[_(h(j))])),_:1}),_(h(T),{onClick:a[4]||(a[4]=e=>Ce("clockwise"))},{default:y((()=>[_(h(B))])),_:1})],2)],2),O(" CANVAS "),I("div",{class:C(h(J).e("canvas"))},[(x(!0),X(E,null,D(e.urlList,((a,s)=>F((x(),X("img",{ref_for:!0,ref:e=>ee.value[s]=e,key:a,src:a,style:z(h(me)),class:C(h(J).e("img")),crossorigin:e.crossorigin,onLoad:pe,onError:ge,onMousedown:ke},null,46,ae)),[[V,s===te.value]]))),128))],2),W(e.$slots,"default")],6)])),_:3})],8,["disabled"]))}}),[["__file","image-viewer.vue"]]));export{ne as E}; diff --git a/resources/views/dist/js/el-image.DM0ttR5m.js b/resources/views/dist/js/el-image.DM0ttR5m.js new file mode 100644 index 0000000..e6e4b1c --- /dev/null +++ b/resources/views/dist/js/el-image.DM0ttR5m.js @@ -0,0 +1 @@ +import{v as e,A as a,ao as l,bK as i,d as s,y as o,b as t,bi as n,bh as r,r as c,c as u,I as v,u as d,J as p,o as f,e as y,h as m,k as g,C as w,F as b,g as h,i as S,S as k,a8 as x,p as z,f as E,w as C,n as I,_ as L,a2 as N,bL as j,N as A,bM as B,a as O,q as $}from"./index.DMBpWXpT.js";import{E as _}from"./el-image-viewer.CSeiPfXQ.js";import{i as M}from"./position.CIWFjaHr.js";const T=e({hideOnClickModal:Boolean,src:{type:String,default:""},fit:{type:String,values:["","contain","cover","fill","none","scale-down"],default:""},loading:{type:String,values:["eager","lazy"]},lazy:Boolean,scrollContainer:{type:a([String,Object])},previewSrcList:{type:a(Array),default:()=>l([])},previewTeleported:Boolean,zIndex:{type:Number},initialIndex:{type:Number,default:0},infinite:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},zoomRate:{type:Number,default:1.2},minScale:{type:Number,default:.2},maxScale:{type:Number,default:7},crossorigin:{type:a(String)}}),q={load:e=>e instanceof Event,error:e=>e instanceof Event,switch:e=>i(e),close:()=>!0,show:()=>!0},F=["src","loading","crossorigin"],K={key:0},P=s({name:"ElImage",inheritAttrs:!1});const R=$(L(s({...P,props:T,emits:q,setup(e,{emit:a}){const l=e;let i="";const{t:s}=o(),L=t("image"),$=n(),T=r(),q=c(),P=c(!1),R=c(!0),Y=c(!1),D=c(),H=c(),J=v&&"loading"in HTMLImageElement.prototype;let V,G;const Q=u((()=>[L.e("inner"),X.value&&L.e("preview"),R.value&&L.is("loading")])),U=u((()=>$.style)),W=u((()=>{const{fit:e}=l;return v&&e?{objectFit:e}:{}})),X=u((()=>{const{previewSrcList:e}=l;return Array.isArray(e)&&e.length>0})),Z=u((()=>{const{previewSrcList:e,initialIndex:a}=l;let i=a;return a>e.length-1&&(i=0),i})),ee=u((()=>"eager"!==l.loading&&(!J&&"lazy"===l.loading||l.lazy))),ae=()=>{v&&(R.value=!0,P.value=!1,q.value=l.src)};function le(e){R.value=!1,P.value=!1,a("load",e)}function ie(e){R.value=!1,P.value=!0,a("error",e)}function se(){M(D.value,H.value)&&(ae(),ne())}const oe=d(se,200,!0);async function te(){var e;if(!v)return;await N();const{scrollContainer:a}=l;j(a)?H.value=a:A(a)&&""!==a?H.value=null!=(e=document.querySelector(a))?e:void 0:D.value&&(H.value=B(D.value)),H.value&&(V=O(H,"scroll",oe),setTimeout((()=>se()),100))}function ne(){v&&H.value&&oe&&(null==V||V(),H.value=void 0)}function re(e){if(e.ctrlKey)return e.deltaY<0||e.deltaY>0?(e.preventDefault(),!1):void 0}function ce(){X.value&&(G=O("wheel",re,{passive:!1}),i=document.body.style.overflow,document.body.style.overflow="hidden",Y.value=!0,a("show"))}function ue(){null==G||G(),document.body.style.overflow=i,Y.value=!1,a("close")}function ve(e){a("switch",e)}return p((()=>l.src),(()=>{ee.value?(R.value=!0,P.value=!1,ne(),te()):ae()})),f((()=>{ee.value?te():ae()})),(e,a)=>(y(),m("div",{ref_key:"container",ref:D,class:S([h(L).b(),e.$attrs.class]),style:I(h(U))},[P.value?g(e.$slots,"error",{key:0},(()=>[w("div",{class:S(h(L).e("error"))},b(h(s)("el.image.error")),3)])):(y(),m(k,{key:1},[void 0!==q.value?(y(),m("img",x({key:0},h(T),{src:q.value,loading:e.loading,style:h(W),class:h(Q),crossorigin:e.crossorigin,onClick:ce,onLoad:le,onError:ie}),null,16,F)):z("v-if",!0),R.value?(y(),m("div",{key:1,class:S(h(L).e("wrapper"))},[g(e.$slots,"placeholder",{},(()=>[w("div",{class:S(h(L).e("placeholder"))},null,2)]))],2)):z("v-if",!0)],64)),h(X)?(y(),m(k,{key:2},[Y.value?(y(),E(h(_),{key:0,"z-index":e.zIndex,"initial-index":h(Z),infinite:e.infinite,"zoom-rate":e.zoomRate,"min-scale":e.minScale,"max-scale":e.maxScale,"url-list":e.previewSrcList,crossorigin:e.crossorigin,"hide-on-click-modal":e.hideOnClickModal,teleported:e.previewTeleported,"close-on-press-escape":e.closeOnPressEscape,onClose:ue,onSwitch:ve},{default:C((()=>[e.$slots.viewer?(y(),m("div",K,[g(e.$slots,"viewer")])):z("v-if",!0)])),_:3},8,["z-index","initial-index","infinite","zoom-rate","min-scale","max-scale","url-list","crossorigin","hide-on-click-modal","teleported","close-on-press-escape"])):z("v-if",!0)],64)):z("v-if",!0)],6))}}),[["__file","image.vue"]]));export{R as E}; diff --git a/resources/views/dist/js/el-input-number.zcrW3MHJ.js b/resources/views/dist/js/el-input-number.zcrW3MHJ.js new file mode 100644 index 0000000..047b4d3 --- /dev/null +++ b/resources/views/dist/js/el-input-number.zcrW3MHJ.js @@ -0,0 +1 @@ +import{v as e,L as a,bK as l,M as t,P as n,bg as r,O as u,U as s,d as i,y as o,b as m,r as d,a0 as c,W as p,c as b,bp as v,X as f,Y as N,J as y,o as V,co as g,a1 as h,e as x,h as I,a3 as S,g as E,i as w,a4 as A,k as F,l as k,w as _,f as K,a9 as B,ds as O,E as M,p as $,di as L,dt as P,j as T,a5 as j,_ as z,t as C,N as Y,ac as D,q as U}from"./index.DMBpWXpT.js";import{v as q}from"./index.tvUbLRs9.js";const G=e({id:{type:String,default:void 0},step:{type:Number,default:1},stepStrictly:Boolean,max:{type:Number,default:Number.POSITIVE_INFINITY},min:{type:Number,default:Number.NEGATIVE_INFINITY},modelValue:Number,readonly:Boolean,disabled:Boolean,size:a,controls:{type:Boolean,default:!0},controlsPosition:{type:String,default:"",values:["","right"]},valueOnClear:{type:[String,Number,null],validator:e=>null===e||l(e)||["min","max"].includes(e),default:null},name:String,label:String,placeholder:String,precision:{type:Number,validator:e=>e>=0&&e===Number.parseInt(`${e}`,10)},validateEvent:{type:Boolean,default:!0},...t(["ariaLabel"])}),J={[n]:(e,a)=>a!==e,blur:e=>e instanceof FocusEvent,focus:e=>e instanceof FocusEvent,[r]:e=>l(e)||u(e),[s]:e=>l(e)||u(e)},W=["aria-label","onKeydown"],X=["aria-label","onKeydown"],H=i({name:"ElInputNumber"});const Q=U(z(i({...H,props:G,emits:J,setup(e,{expose:a,emit:t}){const i=e,{t:z}=o(),U=m("input-number"),G=d(),J=c({currentValue:i.modelValue,userInput:null}),{formItem:H}=p(),Q=b((()=>l(i.modelValue)&&i.modelValue<=i.min)),R=b((()=>l(i.modelValue)&&i.modelValue>=i.max)),Z=b((()=>{const e=re(i.step);return v(i.precision)?Math.max(re(i.modelValue),e):(i.precision,i.precision)})),ee=b((()=>i.controls&&"right"===i.controlsPosition)),ae=f(),le=N(),te=b((()=>{if(null!==J.userInput)return J.userInput;let e=J.currentValue;if(u(e))return"";if(l(e)){if(Number.isNaN(e))return"";v(i.precision)||(e=e.toFixed(i.precision))}return e})),ne=(e,a)=>{if(v(a)&&(a=Z.value),0===a)return Math.round(e);let l=String(e);const t=l.indexOf(".");if(-1===t)return e;if(!l.replace(".","").split("")[t+a])return e;const n=l.length;return"5"===l.charAt(n-1)&&(l=`${l.slice(0,Math.max(0,n-1))}6`),Number.parseFloat(Number(l).toFixed(a))},re=e=>{if(u(e))return 0;const a=e.toString(),l=a.indexOf(".");let t=0;return-1!==l&&(t=a.length-l-1),t},ue=(e,a=1)=>l(e)?ne(e+i.step*a):J.currentValue,se=()=>{if(i.readonly||le.value||R.value)return;const e=Number(te.value)||0,a=ue(e);me(a),t(r,J.currentValue),ve()},ie=()=>{if(i.readonly||le.value||Q.value)return;const e=Number(te.value)||0,a=ue(e,-1);me(a),t(r,J.currentValue),ve()},oe=(e,a)=>{const{max:l,min:n,step:r,precision:o,stepStrictly:m,valueOnClear:d}=i;ll||cl?l:n,a&&t(s,c)),c},me=(e,a=!0)=>{var l;const r=J.currentValue,u=oe(e);a?r===u&&e||(J.userInput=null,t(s,u),r!==u&&t(n,u,r),i.validateEvent&&(null==(l=null==H?void 0:H.validate)||l.call(H,"change").catch((e=>D()))),J.currentValue=u):t(s,u)},de=e=>{J.userInput=e;const a=""===e?null:Number(e);t(r,a),me(a,!1)},ce=e=>{const a=""!==e?Number(e):"";(l(a)&&!Number.isNaN(a)||""===e)&&me(a),ve(),J.userInput=null},pe=e=>{t("focus",e)},be=e=>{var a;J.userInput=null,t("blur",e),i.validateEvent&&(null==(a=null==H?void 0:H.validate)||a.call(H,"blur").catch((e=>D())))},ve=()=>{J.currentValue!==i.modelValue&&(J.currentValue=i.modelValue)},fe=e=>{document.activeElement===e.target&&e.preventDefault()};return y((()=>i.modelValue),((e,a)=>{const l=oe(e,!0);null===J.userInput&&l!==a&&(J.currentValue=l)}),{immediate:!0}),V((()=>{var e;const{min:a,max:n,modelValue:r}=i,u=null==(e=G.value)?void 0:e.input;if(u.setAttribute("role","spinbutton"),Number.isFinite(n)?u.setAttribute("aria-valuemax",String(n)):u.removeAttribute("aria-valuemax"),Number.isFinite(a)?u.setAttribute("aria-valuemin",String(a)):u.removeAttribute("aria-valuemin"),u.setAttribute("aria-valuenow",J.currentValue||0===J.currentValue?String(J.currentValue):""),u.setAttribute("aria-disabled",String(le.value)),!l(r)&&null!=r){let e=Number(r);Number.isNaN(e)&&(e=null),t(s,e)}u.addEventListener("wheel",fe,{passive:!1})})),g((()=>{var e,a;const l=null==(e=G.value)?void 0:e.input;null==l||l.setAttribute("aria-valuenow",`${null!=(a=J.currentValue)?a:""}`)})),h({from:"label",replacement:"aria-label",version:"2.8.0",scope:"el-input-number",ref:"https://element-plus.org/en-US/component/input-number.html"},b((()=>!!i.label))),a({focus:()=>{var e,a;null==(a=null==(e=G.value)?void 0:e.focus)||a.call(e)},blur:()=>{var e,a;null==(a=null==(e=G.value)?void 0:e.blur)||a.call(e)}}),(e,a)=>(x(),I("div",{class:w([E(U).b(),E(U).m(E(ae)),E(U).is("disabled",E(le)),E(U).is("without-controls",!e.controls),E(U).is("controls-right",E(ee))]),onDragstart:a[0]||(a[0]=T((()=>{}),["prevent"]))},[e.controls?S((x(),I("span",{key:0,role:"button","aria-label":E(z)("el.inputNumber.decrease"),class:w([E(U).e("decrease"),E(U).is("disabled",E(Q))]),onKeydown:A(ie,["enter"])},[F(e.$slots,"decrease-icon",{},(()=>[k(E(M),null,{default:_((()=>[E(ee)?(x(),K(E(B),{key:0})):(x(),K(E(O),{key:1}))])),_:1})]))],42,W)),[[E(q),ie]]):$("v-if",!0),e.controls?S((x(),I("span",{key:1,role:"button","aria-label":E(z)("el.inputNumber.increase"),class:w([E(U).e("increase"),E(U).is("disabled",E(R))]),onKeydown:A(se,["enter"])},[F(e.$slots,"increase-icon",{},(()=>[k(E(M),null,{default:_((()=>[E(ee)?(x(),K(E(L),{key:0})):(x(),K(E(P),{key:1}))])),_:1})]))],42,X)),[[E(q),se]]):$("v-if",!0),k(E(j),{id:e.id,ref_key:"input",ref:G,type:"number",step:e.step,"model-value":E(te),placeholder:e.placeholder,readonly:e.readonly,disabled:E(le),size:E(ae),max:e.max,min:e.min,name:e.name,"aria-label":e.label||e.ariaLabel,"validate-event":!1,onKeydown:[A(T(se,["prevent"]),["up"]),A(T(ie,["prevent"]),["down"])],onBlur:be,onFocus:pe,onInput:de,onChange:ce},null,8,["id","step","model-value","placeholder","readonly","disabled","size","max","min","name","aria-label","onKeydown"])],34))}}),[["__file","input-number.vue"]]));export{Q as E}; diff --git a/resources/views/dist/js/el-link.7KZopgR8.js b/resources/views/dist/js/el-link.7KZopgR8.js new file mode 100644 index 0000000..654e8a8 --- /dev/null +++ b/resources/views/dist/js/el-link.7KZopgR8.js @@ -0,0 +1 @@ +import{v as e,x as s,d as a,b as i,c as t,e as n,h as l,f as d,w as o,D as r,g as f,E as c,p as u,i as p,k as y,_ as g,q as k}from"./index.DMBpWXpT.js";const b=e({type:{type:String,values:["primary","success","warning","info","danger","default"],default:"default"},underline:{type:Boolean,default:!0},disabled:Boolean,href:{type:String,default:""},target:{type:String,default:"_self"},icon:{type:s}}),v={click:e=>e instanceof MouseEvent},h=["href","target"],m=a({name:"ElLink"});const _=k(g(a({...m,props:b,emits:v,setup(e,{emit:s}){const a=e,g=i("link"),k=t((()=>[g.b(),g.m(a.type),g.is("disabled",a.disabled),g.is("underline",a.underline&&!a.disabled)]));function b(e){a.disabled||s("click",e)}return(e,s)=>(n(),l("a",{class:p(f(k)),href:e.disabled||!e.href?void 0:e.href,target:e.disabled||!e.href?void 0:e.target,onClick:b},[e.icon?(n(),d(f(c),{key:0},{default:o((()=>[(n(),d(r(e.icon)))])),_:1})):u("v-if",!0),e.$slots.default?(n(),l("span",{key:1,class:p(f(g).e("inner"))},[y(e.$slots,"default")],2)):u("v-if",!0),e.$slots.icon?y(e.$slots,"icon",{key:2}):u("v-if",!0)],10,h))}}),[["__file","link.vue"]]));export{_ as E}; diff --git a/resources/views/dist/js/el-pagination.CQTA1hq1.js b/resources/views/dist/js/el-pagination.CQTA1hq1.js new file mode 100644 index 0000000..bc2b692 --- /dev/null +++ b/resources/views/dist/js/el-pagination.CQTA1hq1.js @@ -0,0 +1 @@ +import{v as e,x as a,d as t,y as n,c as l,e as i,h as r,F as s,f as u,w as o,D as p,g as d,E as g,_ as c,B as v,A as b,ao as m,bN as f,b as C,r as y,J as x,l as z,S as P,V as h,i as S,C as k,a5 as N,R as E,p as _,dq as T,dD as B,dr as I,a4 as M,bK as j,bo as q,ak as A,L,G as w,dE as U,a1 as K,z as F,ac as O,am as D,q as J}from"./index.DMBpWXpT.js";import{E as V,a as $}from"./el-select.C9ddzdnq.js";import{i as G}from"./isEqual.B61-3bNT.js";const R=Symbol("elPaginationKey"),W=e({disabled:Boolean,currentPage:{type:Number,default:1},prevText:{type:String},prevIcon:{type:a}}),H={click:e=>e instanceof MouseEvent},Q=["disabled","aria-label","aria-disabled"],X={key:0},Y=t({name:"ElPaginationPrev"});var Z=c(t({...Y,props:W,emits:H,setup(e){const a=e,{t:t}=n(),c=l((()=>a.disabled||a.currentPage<=1));return(e,a)=>(i(),r("button",{type:"button",class:"btn-prev",disabled:d(c),"aria-label":e.prevText||d(t)("el.pagination.prev"),"aria-disabled":d(c),onClick:a[0]||(a[0]=a=>e.$emit("click",a))},[e.prevText?(i(),r("span",X,s(e.prevText),1)):(i(),u(d(g),{key:1},{default:o((()=>[(i(),u(p(e.prevIcon)))])),_:1}))],8,Q))}}),[["__file","prev.vue"]]);const ee=e({disabled:Boolean,currentPage:{type:Number,default:1},pageCount:{type:Number,default:50},nextText:{type:String},nextIcon:{type:a}}),ae=["disabled","aria-label","aria-disabled"],te={key:0},ne=t({name:"ElPaginationNext"});var le=c(t({...ne,props:ee,emits:["click"],setup(e){const a=e,{t:t}=n(),c=l((()=>a.disabled||a.currentPage===a.pageCount||0===a.pageCount));return(e,a)=>(i(),r("button",{type:"button",class:"btn-next",disabled:d(c),"aria-label":e.nextText||d(t)("el.pagination.next"),"aria-disabled":d(c),onClick:a[0]||(a[0]=a=>e.$emit("click",a))},[e.nextText?(i(),r("span",te,s(e.nextText),1)):(i(),u(d(g),{key:1},{default:o((()=>[(i(),u(p(e.nextIcon)))])),_:1}))],8,ae))}}),[["__file","next.vue"]]);const ie=()=>v(R,{}),re=e({pageSize:{type:Number,required:!0},pageSizes:{type:b(Array),default:()=>m([10,20,30,40,50,100])},popperClass:{type:String},disabled:Boolean,teleported:Boolean,size:{type:String,values:f}}),se=t({name:"ElPaginationSizes"});var ue=c(t({...se,props:re,emits:["page-size-change"],setup(e,{emit:a}){const t=e,{t:s}=n(),p=C("pagination"),g=ie(),c=y(t.pageSize);x((()=>t.pageSizes),((e,n)=>{if(!G(e,n)&&Array.isArray(e)){const n=e.includes(t.pageSize)?t.pageSize:t.pageSizes[0];a("page-size-change",n)}})),x((()=>t.pageSize),(e=>{c.value=e}));const v=l((()=>t.pageSizes));function b(e){var a;e!==c.value&&(c.value=e,null==(a=g.handleSizeChange)||a.call(g,Number(e)))}return(e,a)=>(i(),r("span",{class:S(d(p).e("sizes"))},[z(d($),{"model-value":c.value,disabled:e.disabled,"popper-class":e.popperClass,size:e.size,teleported:e.teleported,"validate-event":!1,onChange:b},{default:o((()=>[(i(!0),r(P,null,h(d(v),(e=>(i(),u(d(V),{key:e,value:e,label:e+d(s)("el.pagination.pagesize")},null,8,["value","label"])))),128))])),_:1},8,["model-value","disabled","popper-class","size","teleported"])],2))}}),[["__file","sizes.vue"]]);const oe=e({size:{type:String,values:f}}),pe=["disabled"],de=t({name:"ElPaginationJumper"});var ge=c(t({...de,props:oe,setup(e){const{t:a}=n(),t=C("pagination"),{pageCount:u,disabled:o,currentPage:p,changeEvent:g}=ie(),c=y(),v=l((()=>{var e;return null!=(e=c.value)?e:null==p?void 0:p.value}));function b(e){c.value=e?+e:""}function m(e){e=Math.trunc(+e),null==g||g(e),c.value=void 0}return(e,n)=>(i(),r("span",{class:S(d(t).e("jump")),disabled:d(o)},[k("span",{class:S([d(t).e("goto")])},s(d(a)("el.pagination.goto")),3),z(d(N),{size:e.size,class:S([d(t).e("editor"),d(t).is("in-pagination")]),min:1,max:d(u),disabled:d(o),"model-value":d(v),"validate-event":!1,"aria-label":d(a)("el.pagination.page"),type:"number","onUpdate:modelValue":b,onChange:m},null,8,["size","class","max","disabled","model-value","aria-label"]),k("span",{class:S([d(t).e("classifier")])},s(d(a)("el.pagination.pageClassifier")),3)],10,pe))}}),[["__file","jumper.vue"]]);const ce=e({total:{type:Number,default:1e3}}),ve=["disabled"],be=t({name:"ElPaginationTotal"});var me=c(t({...be,props:ce,setup(e){const{t:a}=n(),t=C("pagination"),{disabled:l}=ie();return(e,n)=>(i(),r("span",{class:S(d(t).e("total")),disabled:d(l)},s(d(a)("el.pagination.total",{total:e.total})),11,ve))}}),[["__file","total.vue"]]);const fe=e({currentPage:{type:Number,default:1},pageCount:{type:Number,required:!0},pagerCount:{type:Number,default:7},disabled:Boolean}),Ce=["onKeyup"],ye=["aria-current","aria-label","tabindex"],xe=["tabindex","aria-label"],ze=["aria-current","aria-label","tabindex"],Pe=["tabindex","aria-label"],he=["aria-current","aria-label","tabindex"],Se=t({name:"ElPaginationPager"});var ke=c(t({...Se,props:fe,emits:["change"],setup(e,{emit:a}){const t=e,o=C("pager"),p=C("icon"),{t:g}=n(),c=y(!1),v=y(!1),b=y(!1),m=y(!1),f=y(!1),x=y(!1),z=l((()=>{const e=t.pagerCount,a=(e-1)/2,n=Number(t.currentPage),l=Number(t.pageCount);let i=!1,r=!1;l>e&&(n>e-a&&(i=!0),n["more","btn-quickprev",p.b(),o.is("disabled",t.disabled)])),N=l((()=>["more","btn-quicknext",p.b(),o.is("disabled",t.disabled)])),j=l((()=>t.disabled?-1:0));function q(e=!1){t.disabled||(e?b.value=!0:m.value=!0)}function A(e=!1){e?f.value=!0:x.value=!0}function L(e){const n=e.target;if("li"===n.tagName.toLowerCase()&&Array.from(n.classList).includes("number")){const e=Number(n.textContent);e!==t.currentPage&&a("change",e)}else"li"===n.tagName.toLowerCase()&&Array.from(n.classList).includes("more")&&w(e)}function w(e){const n=e.target;if("ul"===n.tagName.toLowerCase()||t.disabled)return;let l=Number(n.textContent);const i=t.pageCount,r=t.currentPage,s=t.pagerCount-2;n.className.includes("more")&&(n.className.includes("quickprev")?l=r-s:n.className.includes("quicknext")&&(l=r+s)),Number.isNaN(+l)||(l<1&&(l=1),l>i&&(l=i)),l!==r&&a("change",l)}return E((()=>{const e=(t.pagerCount-1)/2;c.value=!1,v.value=!1,t.pageCount>t.pagerCount&&(t.currentPage>t.pagerCount-e&&(c.value=!0),t.currentPage(i(),r("ul",{class:S(d(o).b()),onClick:w,onKeyup:M(L,["enter"])},[e.pageCount>0?(i(),r("li",{key:0,class:S([[d(o).is("active",1===e.currentPage),d(o).is("disabled",e.disabled)],"number"]),"aria-current":1===e.currentPage,"aria-label":d(g)("el.pagination.currentPage",{pager:1}),tabindex:d(j)}," 1 ",10,ye)):_("v-if",!0),c.value?(i(),r("li",{key:1,class:S(d(k)),tabindex:d(j),"aria-label":d(g)("el.pagination.prevPages",{pager:e.pagerCount-2}),onMouseenter:a[0]||(a[0]=e=>q(!0)),onMouseleave:a[1]||(a[1]=e=>b.value=!1),onFocus:a[2]||(a[2]=e=>A(!0)),onBlur:a[3]||(a[3]=e=>f.value=!1)},[!b.value&&!f.value||e.disabled?(i(),u(d(B),{key:1})):(i(),u(d(T),{key:0}))],42,xe)):_("v-if",!0),(i(!0),r(P,null,h(d(z),(a=>(i(),r("li",{key:a,class:S([[d(o).is("active",e.currentPage===a),d(o).is("disabled",e.disabled)],"number"]),"aria-current":e.currentPage===a,"aria-label":d(g)("el.pagination.currentPage",{pager:a}),tabindex:d(j)},s(a),11,ze)))),128)),v.value?(i(),r("li",{key:2,class:S(d(N)),tabindex:d(j),"aria-label":d(g)("el.pagination.nextPages",{pager:e.pagerCount-2}),onMouseenter:a[4]||(a[4]=e=>q()),onMouseleave:a[5]||(a[5]=e=>m.value=!1),onFocus:a[6]||(a[6]=e=>A()),onBlur:a[7]||(a[7]=e=>x.value=!1)},[!m.value&&!x.value||e.disabled?(i(),u(d(B),{key:1})):(i(),u(d(I),{key:0}))],42,Pe)):_("v-if",!0),e.pageCount>1?(i(),r("li",{key:3,class:S([[d(o).is("active",e.currentPage===e.pageCount),d(o).is("disabled",e.disabled)],"number"]),"aria-current":e.currentPage===e.pageCount,"aria-label":d(g)("el.pagination.currentPage",{pager:e.pageCount}),tabindex:d(j)},s(e.pageCount),11,he)):_("v-if",!0)],42,Ce))}}),[["__file","pager.vue"]]);const Ne=e=>"number"!=typeof e,Ee=e({pageSize:Number,defaultPageSize:Number,total:Number,pageCount:Number,pagerCount:{type:Number,validator:e=>j(e)&&Math.trunc(e)===e&&e>4&&e<22&&e%2==1,default:7},currentPage:Number,defaultCurrentPage:Number,layout:{type:String,default:["prev","pager","next","jumper","->","total"].join(", ")},pageSizes:{type:b(Array),default:()=>m([10,20,30,40,50,100])},popperClass:{type:String,default:""},prevText:{type:String,default:""},prevIcon:{type:a,default:()=>q},nextText:{type:String,default:""},nextIcon:{type:a,default:()=>A},teleported:{type:Boolean,default:!0},small:Boolean,size:L,background:Boolean,disabled:Boolean,hideOnSinglePage:Boolean}),_e="ElPagination";const Te=J(t({name:_e,props:Ee,emits:{"update:current-page":e=>j(e),"update:page-size":e=>j(e),"size-change":e=>j(e),change:(e,a)=>j(e)&&j(a),"current-change":e=>j(e),"prev-click":e=>j(e),"next-click":e=>j(e)},setup(e,{emit:a,slots:t}){const{t:i}=n(),r=C("pagination"),s=w().vnode.props||{},u=l((()=>{var a;return e.small?"small":null!=(a=e.size)?a:U().value}));K({from:"small",replacement:"size",version:"3.0.0",scope:"el-pagination",ref:"https://element-plus.org/zh-CN/component/pagination.html"},l((()=>!!e.small)));const o="onUpdate:currentPage"in s||"onUpdate:current-page"in s||"onCurrentChange"in s,p="onUpdate:pageSize"in s||"onUpdate:page-size"in s||"onSizeChange"in s,d=l((()=>{if(Ne(e.total)&&Ne(e.pageCount))return!1;if(!Ne(e.currentPage)&&!o)return!1;if(e.layout.includes("sizes"))if(Ne(e.pageCount)){if(!Ne(e.total)&&!Ne(e.pageSize)&&!p)return!1}else if(!p)return!1;return!0})),g=y(Ne(e.defaultPageSize)?10:e.defaultPageSize),c=y(Ne(e.defaultCurrentPage)?1:e.defaultCurrentPage),v=l({get:()=>Ne(e.pageSize)?g.value:e.pageSize,set(t){Ne(e.pageSize)&&(g.value=t),p&&(a("update:page-size",t),a("size-change",t))}}),b=l((()=>{let a=0;return Ne(e.pageCount)?Ne(e.total)||(a=Math.max(1,Math.ceil(e.total/v.value))):a=e.pageCount,a})),m=l({get:()=>Ne(e.currentPage)?c.value:e.currentPage,set(t){let n=t;t<1?n=1:t>b.value&&(n=b.value),Ne(e.currentPage)&&(c.value=n),o&&(a("update:current-page",n),a("current-change",n))}});function f(e){m.value=e}function z(){e.disabled||(m.value-=1,a("prev-click",m.value))}function P(){e.disabled||(m.value+=1,a("next-click",m.value))}function h(e,a){e&&(e.props||(e.props={}),e.props.class=[e.props.class,a].join(" "))}return x(b,(e=>{m.value>e&&(m.value=e)})),x([m,v],(e=>{a("change",...e)}),{flush:"post"}),F(R,{pageCount:b,disabled:l((()=>e.disabled)),currentPage:m,changeEvent:f,handleSizeChange:function(e){v.value=e;const a=b.value;m.value>a&&(m.value=a)}}),()=>{var a,n;if(!d.value)return O(_e,i("el.pagination.deprecationWarning")),null;if(!e.layout)return null;if(e.hideOnSinglePage&&b.value<=1)return null;const l=[],s=[],o=D("div",{class:r.e("rightwrapper")},s),p={prev:D(Z,{disabled:e.disabled,currentPage:m.value,prevText:e.prevText,prevIcon:e.prevIcon,onClick:z}),jumper:D(ge,{size:u.value}),pager:D(ke,{currentPage:m.value,pageCount:b.value,pagerCount:e.pagerCount,onChange:f,disabled:e.disabled}),next:D(le,{disabled:e.disabled,currentPage:m.value,pageCount:b.value,nextText:e.nextText,nextIcon:e.nextIcon,onClick:P}),sizes:D(ue,{pageSize:v.value,pageSizes:e.pageSizes,popperClass:e.popperClass,disabled:e.disabled,teleported:e.teleported,size:u.value}),slot:null!=(n=null==(a=null==t?void 0:t.default)?void 0:a.call(t))?n:null,total:D(me,{total:Ne(e.total)?0:e.total})},g=e.layout.split(",").map((e=>e.trim()));let c=!1;return g.forEach((e=>{"->"!==e?c?s.push(p[e]):l.push(p[e]):c=!0})),h(l[0],r.is("first")),h(l[l.length-1],r.is("last")),c&&s.length>0&&(h(s[0],r.is("first")),h(s[s.length-1],r.is("last")),l.push(o)),D("div",{class:[r.b(),r.is("background",e.background),r.m(u.value)]},l)}}}));export{Te as E}; diff --git a/resources/views/dist/js/el-popover.OX4vypnS.js b/resources/views/dist/js/el-popover.OX4vypnS.js new file mode 100644 index 0000000..ffbef95 --- /dev/null +++ b/resources/views/dist/js/el-popover.OX4vypnS.js @@ -0,0 +1 @@ +import{b as e,u as t,E as o}from"./el-popper.Cb3Eus9m.js";import{v as r,c9 as a,d as p,c as s,b as i,r as l,g as n,K as f,e as d,f as b,w as c,h as u,i as v,F as m,p as h,k as g,a7 as w,a8 as y,_ as x,dF as S,q as A}from"./index.DMBpWXpT.js";import{d as _}from"./dropdown.Dka1h-m0.js";const C=r({trigger:e.trigger,placement:_.placement,disabled:e.disabled,visible:t.visible,transition:t.transition,popperOptions:_.popperOptions,tabindex:_.tabindex,content:t.content,popperStyle:t.popperStyle,popperClass:t.popperClass,enterable:{...t.enterable,default:!0},effect:{...t.effect,default:"light"},teleported:t.teleported,title:String,width:{type:[String,Number],default:150},offset:{type:Number,default:void 0},showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0},showArrow:{type:Boolean,default:!0},persistent:{type:Boolean,default:!0},"onUpdate:visible":{type:Function}}),N={"update:visible":e=>a(e),"before-enter":()=>!0,"before-leave":()=>!0,"after-enter":()=>!0,"after-leave":()=>!0},R=p({name:"ElPopover"}),$=p({...R,props:C,emits:N,setup(e,{expose:t,emit:r}){const a=e,p=s((()=>a["onUpdate:visible"])),x=i("popover"),S=l(),A=s((()=>{var e;return null==(e=n(S))?void 0:e.popperRef})),_=s((()=>[{width:f(a.width)},a.popperStyle])),C=s((()=>[x.b(),a.popperClass,{[x.m("plain")]:!!a.content}])),N=s((()=>a.transition===`${x.namespace.value}-fade-in-linear`)),R=()=>{r("before-enter")},$=()=>{r("before-leave")},k=()=>{r("after-enter")},B=()=>{r("update:visible",!1),r("after-leave")};return t({popperRef:A,hide:()=>{var e;null==(e=S.value)||e.hide()}}),(e,t)=>(d(),b(n(o),y({ref_key:"tooltipRef",ref:S},e.$attrs,{trigger:e.trigger,placement:e.placement,disabled:e.disabled,visible:e.visible,transition:e.transition,"popper-options":e.popperOptions,tabindex:e.tabindex,content:e.content,offset:e.offset,"show-after":e.showAfter,"hide-after":e.hideAfter,"auto-close":e.autoClose,"show-arrow":e.showArrow,"aria-label":e.title,effect:e.effect,enterable:e.enterable,"popper-class":n(C),"popper-style":n(_),teleported:e.teleported,persistent:e.persistent,"gpu-acceleration":n(N),"onUpdate:visible":n(p),onBeforeShow:R,onBeforeHide:$,onShow:k,onHide:B}),{content:c((()=>[e.title?(d(),u("div",{key:0,class:v(n(x).e("title")),role:"title"},m(e.title),3)):h("v-if",!0),g(e.$slots,"default",{},(()=>[w(m(e.content),1)]))])),default:c((()=>[e.$slots.reference?g(e.$slots,"reference",{key:0}):h("v-if",!0)])),_:3},16,["trigger","placement","disabled","visible","transition","popper-options","tabindex","content","offset","show-after","hide-after","auto-close","show-arrow","aria-label","effect","enterable","popper-class","popper-style","teleported","persistent","gpu-acceleration","onUpdate:visible"]))}});const k=(e,t)=>{const o=t.arg||t.value,r=null==o?void 0:o.popperRef;r&&(r.triggerRef=e)};const B=A(x($,[["__file","popover.vue"]]),{directive:S({mounted(e,t){k(e,t)},updated(e,t){k(e,t)}},"popover")});export{B as E}; diff --git a/resources/views/dist/js/el-popper.Cb3Eus9m.js b/resources/views/dist/js/el-popper.Cb3Eus9m.js new file mode 100644 index 0000000..79af0f7 --- /dev/null +++ b/resources/views/dist/js/el-popper.Cb3Eus9m.js @@ -0,0 +1 @@ +import{c8 as e,A as t,c as n,bm as r,J as o,o as a,G as i,I as s,c9 as l,g as u,s as p,r as f,al as c,ca as d,cb as v,aQ as g,cc as m,cd as h,v as y,bK as b,z as w,d as x,k as O,_ as R,b as A,B as E,e as T,h as S,i as k,n as C,bf as j,a3 as B,ce as M,as as P,S as F,cf as L,cg as D,l as _,ch as I,bL as H,O as $,f as W,w as q,a8 as z,p as N,M as U,bX as V,ci as K,cj as Z,q as X,ad as Y,bl as G,at as J,aa as Q,T as ee,c1 as te,bj as ne,b8 as re,b7 as oe,ck as ae,F as ie}from"./index.DMBpWXpT.js";import{i as se}from"./isUndefined.DgmxjSXK.js";const le=(e,t,{checkForDefaultPrevented:n=!0}={})=>r=>{const o=null==e?void 0:e(r);if(!1===n||!o)return null==t?void 0:t(r)},ue=e=>t=>"mouse"===t.pointerType?e(t):void 0,pe=e({type:t(Boolean),default:null}),fe=e({type:t(Function)}),ce=e=>{const t=`update:${e}`,u=`onUpdate:${e}`,p=[t];return{useModelToggle:({indicator:p,toggleReason:f,shouldHideWhenRouteChanges:c,shouldProceed:d,onShow:v,onHide:g})=>{const m=i(),{emit:h}=m,y=m.props,b=n((()=>r(y[u]))),w=n((()=>null===y[e])),x=e=>{!0!==p.value&&(p.value=!0,f&&(f.value=e),r(v)&&v(e))},O=e=>{!1!==p.value&&(p.value=!1,f&&(f.value=e),r(g)&&g(e))},R=e=>{if(!0===y.disabled||r(d)&&!d())return;const n=b.value&&s;n&&h(t,!0),!w.value&&n||x(e)},A=e=>{if(!0===y.disabled||!s)return;const n=b.value&&s;n&&h(t,!1),!w.value&&n||O(e)},E=e=>{l(e)&&(y.disabled&&e?b.value&&h(t,!1):p.value!==e&&(e?x():O()))};return o((()=>y[e]),E),c&&void 0!==m.appContext.config.globalProperties.$route&&o((()=>({...m.proxy.$route})),(()=>{c.value&&p.value&&A()})),a((()=>{E(y[e])})),{hide:A,show:R,toggle:()=>{p.value?A():R()},hasUpdateHandler:b}},useModelToggleProps:{[e]:pe,[u]:fe},useModelToggleEmits:p}};ce("modelValue");var de="top",ve="bottom",ge="right",me="left",he="auto",ye=[de,ve,ge,me],be="start",we="end",xe="clippingParents",Oe="viewport",Re="popper",Ae="reference",Ee=ye.reduce((function(e,t){return e.concat([t+"-"+be,t+"-"+we])}),[]),Te=[].concat(ye,[he]).reduce((function(e,t){return e.concat([t,t+"-"+be,t+"-"+we])}),[]),Se=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function ke(e){return e?(e.nodeName||"").toLowerCase():null}function Ce(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function je(e){return e instanceof Ce(e).Element||e instanceof Element}function Be(e){return e instanceof Ce(e).HTMLElement||e instanceof HTMLElement}function Me(e){return"undefined"!=typeof ShadowRoot&&(e instanceof Ce(e).ShadowRoot||e instanceof ShadowRoot)}var Pe={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},r=t.attributes[e]||{},o=t.elements[e];!Be(o)||!ke(o)||(Object.assign(o.style,n),Object.keys(r).forEach((function(e){var t=r[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var r=t.elements[e],o=t.attributes[e]||{},a=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});!Be(r)||!ke(r)||(Object.assign(r.style,a),Object.keys(o).forEach((function(e){r.removeAttribute(e)})))}))}},requires:["computeStyles"]};function Fe(e){return e.split("-")[0]}var Le=Math.max,De=Math.min,_e=Math.round;function Ie(e,t){void 0===t&&(t=!1);var n=e.getBoundingClientRect(),r=1,o=1;if(Be(e)&&t){var a=e.offsetHeight,i=e.offsetWidth;i>0&&(r=_e(n.width)/i||1),a>0&&(o=_e(n.height)/a||1)}return{width:n.width/r,height:n.height/o,top:n.top/o,right:n.right/r,bottom:n.bottom/o,left:n.left/r,x:n.left/r,y:n.top/o}}function He(e){var t=Ie(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function $e(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Me(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function We(e){return Ce(e).getComputedStyle(e)}function qe(e){return["table","td","th"].indexOf(ke(e))>=0}function ze(e){return((je(e)?e.ownerDocument:e.document)||window.document).documentElement}function Ne(e){return"html"===ke(e)?e:e.assignedSlot||e.parentNode||(Me(e)?e.host:null)||ze(e)}function Ue(e){return Be(e)&&"fixed"!==We(e).position?e.offsetParent:null}function Ve(e){for(var t=Ce(e),n=Ue(e);n&&qe(n)&&"static"===We(n).position;)n=Ue(n);return n&&("html"===ke(n)||"body"===ke(n)&&"static"===We(n).position)?t:n||function(e){var t=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&Be(e)&&"fixed"===We(e).position)return null;var n=Ne(e);for(Me(n)&&(n=n.host);Be(n)&&["html","body"].indexOf(ke(n))<0;){var r=We(n);if("none"!==r.transform||"none"!==r.perspective||"paint"===r.contain||-1!==["transform","perspective"].indexOf(r.willChange)||t&&"filter"===r.willChange||t&&r.filter&&"none"!==r.filter)return n;n=n.parentNode}return null}(e)||t}function Ke(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Ze(e,t,n){return Le(e,De(t,n))}function Xe(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function Ye(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}var Ge={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=e.options,a=n.elements.arrow,i=n.modifiersData.popperOffsets,s=Fe(n.placement),l=Ke(s),u=[me,ge].indexOf(s)>=0?"height":"width";if(a&&i){var p=function(e,t){return Xe("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:Ye(e,ye))}(o.padding,n),f=He(a),c="y"===l?de:me,d="y"===l?ve:ge,v=n.rects.reference[u]+n.rects.reference[l]-i[l]-n.rects.popper[u],g=i[l]-n.rects.reference[l],m=Ve(a),h=m?"y"===l?m.clientHeight||0:m.clientWidth||0:0,y=v/2-g/2,b=p[c],w=h-f[u]-p[d],x=h/2-f[u]/2+y,O=Ze(b,x,w),R=l;n.modifiersData[r]=((t={})[R]=O,t.centerOffset=O-x,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"==typeof r&&!(r=t.elements.popper.querySelector(r))||!$e(t.elements.popper,r)||(t.elements.arrow=r))},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Je(e){return e.split("-")[1]}var Qe={top:"auto",right:"auto",bottom:"auto",left:"auto"};function et(e){var t,n=e.popper,r=e.popperRect,o=e.placement,a=e.variation,i=e.offsets,s=e.position,l=e.gpuAcceleration,u=e.adaptive,p=e.roundOffsets,f=e.isFixed,c=i.x,d=void 0===c?0:c,v=i.y,g=void 0===v?0:v,m="function"==typeof p?p({x:d,y:g}):{x:d,y:g};d=m.x,g=m.y;var h=i.hasOwnProperty("x"),y=i.hasOwnProperty("y"),b=me,w=de,x=window;if(u){var O=Ve(n),R="clientHeight",A="clientWidth";if(O===Ce(n)&&("static"!==We(O=ze(n)).position&&"absolute"===s&&(R="scrollHeight",A="scrollWidth")),o===de||(o===me||o===ge)&&a===we)w=ve,g-=(f&&O===x&&x.visualViewport?x.visualViewport.height:O[R])-r.height,g*=l?1:-1;if(o===me||(o===de||o===ve)&&a===we)b=ge,d-=(f&&O===x&&x.visualViewport?x.visualViewport.width:O[A])-r.width,d*=l?1:-1}var E,T=Object.assign({position:s},u&&Qe),S=!0===p?function(e){var t=e.x,n=e.y,r=window.devicePixelRatio||1;return{x:_e(t*r)/r||0,y:_e(n*r)/r||0}}({x:d,y:g}):{x:d,y:g};return d=S.x,g=S.y,l?Object.assign({},T,((E={})[w]=y?"0":"",E[b]=h?"0":"",E.transform=(x.devicePixelRatio||1)<=1?"translate("+d+"px, "+g+"px)":"translate3d("+d+"px, "+g+"px, 0)",E)):Object.assign({},T,((t={})[w]=y?g+"px":"",t[b]=h?d+"px":"",t.transform="",t))}var tt={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=void 0===r||r,a=n.adaptive,i=void 0===a||a,s=n.roundOffsets,l=void 0===s||s,u={placement:Fe(t.placement),variation:Je(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,et(Object.assign({},u,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:i,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,et(Object.assign({},u,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},nt={passive:!0};var rt={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,r=e.options,o=r.scroll,a=void 0===o||o,i=r.resize,s=void 0===i||i,l=Ce(t.elements.popper),u=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&u.forEach((function(e){e.addEventListener("scroll",n.update,nt)})),s&&l.addEventListener("resize",n.update,nt),function(){a&&u.forEach((function(e){e.removeEventListener("scroll",n.update,nt)})),s&&l.removeEventListener("resize",n.update,nt)}},data:{}},ot={left:"right",right:"left",bottom:"top",top:"bottom"};function at(e){return e.replace(/left|right|bottom|top/g,(function(e){return ot[e]}))}var it={start:"end",end:"start"};function st(e){return e.replace(/start|end/g,(function(e){return it[e]}))}function lt(e){var t=Ce(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function ut(e){return Ie(ze(e)).left+lt(e).scrollLeft}function pt(e){var t=We(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function ft(e){return["html","body","#document"].indexOf(ke(e))>=0?e.ownerDocument.body:Be(e)&&pt(e)?e:ft(Ne(e))}function ct(e,t){var n;void 0===t&&(t=[]);var r=ft(e),o=r===(null==(n=e.ownerDocument)?void 0:n.body),a=Ce(r),i=o?[a].concat(a.visualViewport||[],pt(r)?r:[]):r,s=t.concat(i);return o?s:s.concat(ct(Ne(i)))}function dt(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function vt(e,t){return t===Oe?dt(function(e){var t=Ce(e),n=ze(e),r=t.visualViewport,o=n.clientWidth,a=n.clientHeight,i=0,s=0;return r&&(o=r.width,a=r.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(i=r.offsetLeft,s=r.offsetTop)),{width:o,height:a,x:i+ut(e),y:s}}(e)):je(t)?function(e){var t=Ie(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}(t):dt(function(e){var t,n=ze(e),r=lt(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=Le(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),i=Le(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),s=-r.scrollLeft+ut(e),l=-r.scrollTop;return"rtl"===We(o||n).direction&&(s+=Le(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:i,x:s,y:l}}(ze(e)))}function gt(e,t,n){var r="clippingParents"===t?function(e){var t=ct(Ne(e)),n=["absolute","fixed"].indexOf(We(e).position)>=0&&Be(e)?Ve(e):e;return je(n)?t.filter((function(e){return je(e)&&$e(e,n)&&"body"!==ke(e)})):[]}(e):[].concat(t),o=[].concat(r,[n]),a=o[0],i=o.reduce((function(t,n){var r=vt(e,n);return t.top=Le(r.top,t.top),t.right=De(r.right,t.right),t.bottom=De(r.bottom,t.bottom),t.left=Le(r.left,t.left),t}),vt(e,a));return i.width=i.right-i.left,i.height=i.bottom-i.top,i.x=i.left,i.y=i.top,i}function mt(e){var t,n=e.reference,r=e.element,o=e.placement,a=o?Fe(o):null,i=o?Je(o):null,s=n.x+n.width/2-r.width/2,l=n.y+n.height/2-r.height/2;switch(a){case de:t={x:s,y:n.y-r.height};break;case ve:t={x:s,y:n.y+n.height};break;case ge:t={x:n.x+n.width,y:l};break;case me:t={x:n.x-r.width,y:l};break;default:t={x:n.x,y:n.y}}var u=a?Ke(a):null;if(null!=u){var p="y"===u?"height":"width";switch(i){case be:t[u]=t[u]-(n[p]/2-r[p]/2);break;case we:t[u]=t[u]+(n[p]/2-r[p]/2)}}return t}function ht(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=void 0===r?e.placement:r,a=n.boundary,i=void 0===a?xe:a,s=n.rootBoundary,l=void 0===s?Oe:s,u=n.elementContext,p=void 0===u?Re:u,f=n.altBoundary,c=void 0!==f&&f,d=n.padding,v=void 0===d?0:d,g=Xe("number"!=typeof v?v:Ye(v,ye)),m=p===Re?Ae:Re,h=e.rects.popper,y=e.elements[c?m:p],b=gt(je(y)?y:y.contextElement||ze(e.elements.popper),i,l),w=Ie(e.elements.reference),x=mt({reference:w,element:h,strategy:"absolute",placement:o}),O=dt(Object.assign({},h,x)),R=p===Re?O:w,A={top:b.top-R.top+g.top,bottom:R.bottom-b.bottom+g.bottom,left:b.left-R.left+g.left,right:R.right-b.right+g.right},E=e.modifiersData.offset;if(p===Re&&E){var T=E[o];Object.keys(A).forEach((function(e){var t=[ge,ve].indexOf(e)>=0?1:-1,n=[de,ve].indexOf(e)>=0?"y":"x";A[e]+=T[n]*t}))}return A}var yt={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,a=void 0===o||o,i=n.altAxis,s=void 0===i||i,l=n.fallbackPlacements,u=n.padding,p=n.boundary,f=n.rootBoundary,c=n.altBoundary,d=n.flipVariations,v=void 0===d||d,g=n.allowedAutoPlacements,m=t.options.placement,h=Fe(m),y=l||(h===m||!v?[at(m)]:function(e){if(Fe(e)===he)return[];var t=at(e);return[st(e),t,st(t)]}(m)),b=[m].concat(y).reduce((function(e,n){return e.concat(Fe(n)===he?function(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,a=n.rootBoundary,i=n.padding,s=n.flipVariations,l=n.allowedAutoPlacements,u=void 0===l?Te:l,p=Je(r),f=p?s?Ee:Ee.filter((function(e){return Je(e)===p})):ye,c=f.filter((function(e){return u.indexOf(e)>=0}));0===c.length&&(c=f);var d=c.reduce((function(t,n){return t[n]=ht(e,{placement:n,boundary:o,rootBoundary:a,padding:i})[Fe(n)],t}),{});return Object.keys(d).sort((function(e,t){return d[e]-d[t]}))}(t,{placement:n,boundary:p,rootBoundary:f,padding:u,flipVariations:v,allowedAutoPlacements:g}):n)}),[]),w=t.rects.reference,x=t.rects.popper,O=new Map,R=!0,A=b[0],E=0;E=0,j=C?"width":"height",B=ht(t,{placement:T,boundary:p,rootBoundary:f,altBoundary:c,padding:u}),M=C?k?ge:me:k?ve:de;w[j]>x[j]&&(M=at(M));var P=at(M),F=[];if(a&&F.push(B[S]<=0),s&&F.push(B[M]<=0,B[P]<=0),F.every((function(e){return e}))){A=T,R=!1;break}O.set(T,F)}if(R)for(var L=function(e){var t=b.find((function(t){var n=O.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return A=t,"break"},D=v?3:1;D>0;D--){if("break"===L(D))break}t.placement!==A&&(t.modifiersData[r]._skip=!0,t.placement=A,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function bt(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function wt(e){return[de,ge,ve,me].some((function(t){return e[t]>=0}))}var xt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,a=t.modifiersData.preventOverflow,i=ht(t,{elementContext:"reference"}),s=ht(t,{altBoundary:!0}),l=bt(i,r),u=bt(s,o,a),p=wt(l),f=wt(u);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:u,isReferenceHidden:p,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":f})}};var Ot={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.offset,a=void 0===o?[0,0]:o,i=Te.reduce((function(e,n){return e[n]=function(e,t,n){var r=Fe(e),o=[me,de].indexOf(r)>=0?-1:1,a="function"==typeof n?n(Object.assign({},t,{placement:e})):n,i=a[0],s=a[1];return i=i||0,s=(s||0)*o,[me,ge].indexOf(r)>=0?{x:s,y:i}:{x:i,y:s}}(n,t.rects,a),e}),{}),s=i[t.placement],l=s.x,u=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=u),t.modifiersData[r]=i}};var Rt={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=mt({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}};var At={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,a=void 0===o||o,i=n.altAxis,s=void 0!==i&&i,l=n.boundary,u=n.rootBoundary,p=n.altBoundary,f=n.padding,c=n.tether,d=void 0===c||c,v=n.tetherOffset,g=void 0===v?0:v,m=ht(t,{boundary:l,rootBoundary:u,padding:f,altBoundary:p}),h=Fe(t.placement),y=Je(t.placement),b=!y,w=Ke(h),x=function(e){return"x"===e?"y":"x"}(w),O=t.modifiersData.popperOffsets,R=t.rects.reference,A=t.rects.popper,E="function"==typeof g?g(Object.assign({},t.rects,{placement:t.placement})):g,T="number"==typeof E?{mainAxis:E,altAxis:E}:Object.assign({mainAxis:0,altAxis:0},E),S=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,k={x:0,y:0};if(O){if(a){var C,j="y"===w?de:me,B="y"===w?ve:ge,M="y"===w?"height":"width",P=O[w],F=P+m[j],L=P-m[B],D=d?-A[M]/2:0,_=y===be?R[M]:A[M],I=y===be?-A[M]:-R[M],H=t.elements.arrow,$=d&&H?He(H):{width:0,height:0},W=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},q=W[j],z=W[B],N=Ze(0,R[M],$[M]),U=b?R[M]/2-D-N-q-T.mainAxis:_-N-q-T.mainAxis,V=b?-R[M]/2+D+N+z+T.mainAxis:I+N+z+T.mainAxis,K=t.elements.arrow&&Ve(t.elements.arrow),Z=K?"y"===w?K.clientTop||0:K.clientLeft||0:0,X=null!=(C=null==S?void 0:S[w])?C:0,Y=P+V-X,G=Ze(d?De(F,P+U-X-Z):F,P,d?Le(L,Y):L);O[w]=G,k[w]=G-P}if(s){var J,Q="x"===w?de:me,ee="x"===w?ve:ge,te=O[x],ne="y"===x?"height":"width",re=te+m[Q],oe=te-m[ee],ae=-1!==[de,me].indexOf(h),ie=null!=(J=null==S?void 0:S[x])?J:0,se=ae?re:te-R[ne]-A[ne]-ie+T.altAxis,le=ae?te+R[ne]+A[ne]-ie-T.altAxis:oe,ue=d&&ae?function(e,t,n){var r=Ze(e,t,n);return r>n?n:r}(se,te,le):Ze(d?se:re,te,d?le:oe);O[x]=ue,k[x]=ue-te}t.modifiersData[r]=k}},requiresIfExists:["offset"]};function Et(e,t,n){void 0===n&&(n=!1);var r=Be(t),o=Be(t)&&function(e){var t=e.getBoundingClientRect(),n=_e(t.width)/e.offsetWidth||1,r=_e(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(t),a=ze(t),i=Ie(e,o),s={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(r||!r&&!n)&&(("body"!==ke(t)||pt(a))&&(s=function(e){return e!==Ce(e)&&Be(e)?function(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}(e):lt(e)}(t)),Be(t)?((l=Ie(t,!0)).x+=t.clientLeft,l.y+=t.clientTop):a&&(l.x=ut(a))),{x:i.left+s.scrollLeft-l.x,y:i.top+s.scrollTop-l.y,width:i.width,height:i.height}}function Tt(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}function St(e){var t;return function(){return t||(t=new Promise((function(n){Promise.resolve().then((function(){t=void 0,n(e())}))}))),t}}var kt={placement:"bottom",modifiers:[],strategy:"absolute"};function Ct(){for(var e=arguments.length,t=new Array(e),n=0;n{const a={name:"updateState",enabled:!0,phase:"write",fn:({state:e})=>{const t=function(e){const t=Object.keys(e.elements),n=d(t.map((t=>[t,e.styles[t]||{}]))),r=d(t.map((t=>[t,e.attributes[t]])));return{styles:n,attributes:r}}(e);Object.assign(l.value,t)},requires:["computeStyles"]},i=n((()=>{const{onFirstUpdate:e,placement:t,strategy:n,modifiers:o}=u(r);return{onFirstUpdate:e,placement:t||"bottom",strategy:n||"absolute",modifiers:[...o||[],a,{name:"applyStyles",enabled:!1}]}})),s=p(),l=f({styles:{popper:{position:u(i).strategy,left:"0",top:"0"},arrow:{position:"absolute"}},attributes:{}}),v=()=>{s.value&&(s.value.destroy(),s.value=void 0)};return o(i,(e=>{const t=u(s);t&&t.setOptions(e)}),{deep:!0}),o([e,t],(([e,t])=>{v(),e&&t&&(s.value=Bt(e,t,u(i)))})),c((()=>{v()})),{state:n((()=>{var e;return{...(null==(e=u(s))?void 0:e.state)||{}}})),styles:n((()=>u(l).styles)),attributes:n((()=>u(l).attributes)),update:()=>{var e;return null==(e=u(s))?void 0:e.update()},forceUpdate:()=>{var e;return null==(e=u(s))?void 0:e.forceUpdate()},instanceRef:n((()=>u(s)))}};function Pt(){let e;const t=()=>window.clearTimeout(e);return v((()=>t())),{registerTimeout:(n,r)=>{t(),e=window.setTimeout(n,r)},cancelTimeout:t}}let Ft;const Lt=()=>{const e=m(),t=h(),r=n((()=>`${e.value}-popper-container-${t.prefix}`)),o=n((()=>`#${r.value}`));return{id:r,selector:o}},Dt=()=>{const{id:e,selector:t}=Lt();return g((()=>{s&&(Ft||document.body.querySelector(t.value)||(Ft=(e=>{const t=document.createElement("div");return t.id=e,document.body.appendChild(t),t})(e.value)))})),{id:e,selector:t}},_t=y({showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0}}),It=Symbol("elForwardRef"),Ht=Symbol("popper"),$t=Symbol("popperContent"),Wt=y({role:{type:String,values:["dialog","grid","group","listbox","menu","navigation","tooltip","tree"],default:"tooltip"}}),qt=x({name:"ElPopper",inheritAttrs:!1});var zt=R(x({...qt,props:Wt,setup(e,{expose:t}){const r=e,o={triggerRef:f(),popperInstanceRef:f(),contentRef:f(),referenceRef:f(),role:n((()=>r.role))};return t(o),w(Ht,o),(e,t)=>O(e.$slots,"default")}}),[["__file","popper.vue"]]);const Nt=y({arrowOffset:{type:Number,default:5}}),Ut=x({name:"ElPopperArrow",inheritAttrs:!1});var Vt=R(x({...Ut,props:Nt,setup(e,{expose:t}){const n=e,r=A("popper"),{arrowOffset:a,arrowRef:i,arrowStyle:s}=E($t,void 0);return o((()=>n.arrowOffset),(e=>{a.value=e})),c((()=>{i.value=void 0})),t({arrowRef:i}),(e,t)=>(T(),S("span",{ref_key:"arrowRef",ref:i,class:k(u(r).e("arrow")),style:C(u(s)),"data-popper-arrow":""},null,6))}}),[["__file","arrow.vue"]]);const Kt=x({name:"ElOnlyChild",setup(e,{slots:t,attrs:n}){var r;const o=E(It),a=(i=null!=(r=null==o?void 0:o.setForwardRef)?r:j,{mounted(e){i(e)},updated(e){i(e)},unmounted(){i(null)}});var i;return()=>{var e;const r=null==(e=t.default)?void 0:e.call(t,n);if(!r)return null;if(r.length>1)return null;const o=Zt(r);return o?B(M(o,n),[[a]]):null}}});function Zt(e){if(!e)return null;const t=e;for(const n of t){if(P(n))switch(n.type){case D:continue;case L:case"svg":return Xt(n);case F:return Zt(n.children);default:return n}return Xt(n)}return null}function Xt(e){const t=A("only-child");return _("span",{class:t.e("content")},[e])}const Yt=y({virtualRef:{type:t(Object)},virtualTriggering:Boolean,onMouseenter:{type:t(Function)},onMouseleave:{type:t(Function)},onClick:{type:t(Function)},onKeydown:{type:t(Function)},onFocus:{type:t(Function)},onBlur:{type:t(Function)},onContextmenu:{type:t(Function)},id:String,open:Boolean}),Gt=x({name:"ElPopperTrigger",inheritAttrs:!1});var Jt=R(x({...Gt,props:Yt,setup(e,{expose:t}){const r=e,{role:i,triggerRef:s}=E(Ht,void 0);var l;l=s,w(It,{setForwardRef:e=>{l.value=e}});const p=n((()=>d.value?r.id:void 0)),f=n((()=>{if(i&&"tooltip"===i.value)return r.open&&r.id?r.id:void 0})),d=n((()=>{if(i&&"tooltip"!==i.value)return i.value})),v=n((()=>d.value?`${r.open}`:void 0));let g;return a((()=>{o((()=>r.virtualRef),(e=>{e&&(s.value=I(e))}),{immediate:!0}),o(s,((e,t)=>{null==g||g(),g=void 0,H(e)&&(["onMouseenter","onMouseleave","onClick","onKeydown","onFocus","onBlur","onContextmenu"].forEach((n=>{var o;const a=r[n];a&&(e.addEventListener(n.slice(2).toLowerCase(),a),null==(o=null==t?void 0:t.removeEventListener)||o.call(t,n.slice(2).toLowerCase(),a))})),g=o([p,f,d,v],(t=>{["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach(((n,r)=>{$(t[r])?e.removeAttribute(n):e.setAttribute(n,t[r])}))}),{immediate:!0})),H(t)&&["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach((e=>t.removeAttribute(e)))}),{immediate:!0})})),c((()=>{null==g||g(),g=void 0})),t({triggerRef:s}),(e,t)=>e.virtualTriggering?N("v-if",!0):(T(),W(u(Kt),z({key:0},e.$attrs,{"aria-controls":u(p),"aria-describedby":u(f),"aria-expanded":u(v),"aria-haspopup":u(d)}),{default:q((()=>[O(e.$slots,"default")])),_:3},16,["aria-controls","aria-describedby","aria-expanded","aria-haspopup"]))}}),[["__file","trigger.vue"]]);const Qt=y({boundariesPadding:{type:Number,default:0},fallbackPlacements:{type:t(Array),default:void 0},gpuAcceleration:{type:Boolean,default:!0},offset:{type:Number,default:12},placement:{type:String,values:Te,default:"bottom"},popperOptions:{type:t(Object),default:()=>({})},strategy:{type:String,values:["fixed","absolute"],default:"absolute"}}),en=y({...Qt,id:String,style:{type:t([String,Array,Object])},className:{type:t([String,Array,Object])},effect:{type:t(String),default:"dark"},visible:Boolean,enterable:{type:Boolean,default:!0},pure:Boolean,focusOnShow:{type:Boolean,default:!1},trapping:{type:Boolean,default:!1},popperClass:{type:t([String,Array,Object])},popperStyle:{type:t([String,Array,Object])},referenceEl:{type:t(Object)},triggerTargetEl:{type:t(Object)},stopPopperMouseEvent:{type:Boolean,default:!0},virtualTriggering:Boolean,zIndex:Number,...U(["ariaLabel"])}),tn={mouseenter:e=>e instanceof MouseEvent,mouseleave:e=>e instanceof MouseEvent,focus:()=>!0,blur:()=>!0,close:()=>!0},nn=(e,t=[])=>{const{placement:n,strategy:r,popperOptions:o}=e,a={placement:n,strategy:r,...o,modifiers:[...rn(e),...t]};return function(e,t){t&&(e.modifiers=[...e.modifiers,...null!=t?t:[]])}(a,null==o?void 0:o.modifiers),a};function rn(e){const{offset:t,gpuAcceleration:n,fallbackPlacements:r}=e;return[{name:"offset",options:{offset:[0,null!=t?t:12]}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5,fallbackPlacements:r}},{name:"computeStyles",options:{gpuAcceleration:n}}]}const on=e=>{const{popperInstanceRef:t,contentRef:r,triggerRef:i,role:l}=E(Ht,void 0),p=f(),c=f(),d=n((()=>({name:"eventListeners",enabled:!!e.visible}))),v=n((()=>{var e;const t=u(p),n=null!=(e=u(c))?e:0;return{name:"arrow",enabled:!se(t),options:{element:t,padding:n}}})),g=n((()=>({onFirstUpdate:()=>{w()},...nn(e,[u(v),u(d)])}))),m=n((()=>(e=>{if(s)return I(e)})(e.referenceEl)||u(i))),{attributes:h,state:y,styles:b,update:w,forceUpdate:x,instanceRef:O}=Mt(m,r,g);return o(O,(e=>t.value=e)),a((()=>{o((()=>{var e;return null==(e=u(m))?void 0:e.getBoundingClientRect()}),(()=>{w()}))})),{attributes:h,arrowRef:p,contentRef:r,instanceRef:O,state:y,styles:b,role:l,forceUpdate:x,update:w}},an=x({name:"ElPopperContent"});var sn=R(x({...an,props:en,emits:tn,setup(e,{expose:t,emit:r}){const i=e,{focusStartRef:s,trapped:l,onFocusAfterReleased:p,onFocusAfterTrapped:d,onFocusInTrap:v,onFocusoutPrevented:g,onReleaseRequested:m}=((e,t)=>{const n=f(!1),r=f();return{focusStartRef:r,trapped:n,onFocusAfterReleased:e=>{var n;"pointer"!==(null==(n=e.detail)?void 0:n.focusReason)&&(r.value="first",t("blur"))},onFocusAfterTrapped:()=>{t("focus")},onFocusInTrap:t=>{e.visible&&!n.value&&(t.target&&(r.value=t.target),n.value=!0)},onFocusoutPrevented:t=>{e.trapping||("pointer"===t.detail.focusReason&&t.preventDefault(),n.value=!1)},onReleaseRequested:()=>{n.value=!1,t("close")}}})(i,r),{attributes:h,arrowRef:y,contentRef:x,styles:R,instanceRef:k,role:C,update:B}=on(i),{ariaModal:M,arrowStyle:P,contentAttrs:F,contentClass:L,contentStyle:D,updateZIndex:I}=((e,{attributes:t,styles:r,role:o})=>{const{nextZIndex:a}=V(),i=A("popper"),s=n((()=>u(t).popper)),l=f(b(e.zIndex)?e.zIndex:a()),p=n((()=>[i.b(),i.is("pure",e.pure),i.is(e.effect),e.popperClass])),c=n((()=>[{zIndex:u(l)},u(r).popper,e.popperStyle||{}]));return{ariaModal:n((()=>"dialog"===o.value?"false":void 0)),arrowStyle:n((()=>u(r).arrow||{})),contentAttrs:s,contentClass:p,contentStyle:c,contentZIndex:l,updateZIndex:()=>{l.value=b(e.zIndex)?e.zIndex:a()}}})(i,{styles:R,attributes:h,role:C}),W=E(K,void 0),N=f();let U;w($t,{arrowStyle:P,arrowRef:y,arrowOffset:N}),W&&w(K,{...W,addInputId:j,removeInputId:j});const X=(e=!0)=>{B(),e&&I()},Y=()=>{X(!1),i.visible&&i.focusOnShow?l.value=!0:!1===i.visible&&(l.value=!1)};return a((()=>{o((()=>i.triggerTargetEl),((e,t)=>{null==U||U(),U=void 0;const n=u(e||x.value),r=u(t||x.value);H(n)&&(U=o([C,()=>i.ariaLabel,M,()=>i.id],(e=>{["role","aria-label","aria-modal","id"].forEach(((t,r)=>{$(e[r])?n.removeAttribute(t):n.setAttribute(t,e[r])}))}),{immediate:!0})),r!==n&&H(r)&&["role","aria-label","aria-modal","id"].forEach((e=>{r.removeAttribute(e)}))}),{immediate:!0}),o((()=>i.visible),Y,{immediate:!0})})),c((()=>{null==U||U(),U=void 0})),t({popperContentRef:x,popperInstanceRef:k,updatePopper:X,contentStyle:D}),(e,t)=>(T(),S("div",z({ref_key:"contentRef",ref:x},u(F),{style:u(D),class:u(L),tabindex:"-1",onMouseenter:t[0]||(t[0]=t=>e.$emit("mouseenter",t)),onMouseleave:t[1]||(t[1]=t=>e.$emit("mouseleave",t))}),[_(u(Z),{trapped:u(l),"trap-on-focus-in":!0,"focus-trap-el":u(x),"focus-start-el":u(s),onFocusAfterTrapped:u(d),onFocusAfterReleased:u(p),onFocusin:u(v),onFocusoutPrevented:u(g),onReleaseRequested:u(m)},{default:q((()=>[O(e.$slots,"default")])),_:3},8,["trapped","focus-trap-el","focus-start-el","onFocusAfterTrapped","onFocusAfterReleased","onFocusin","onFocusoutPrevented","onReleaseRequested"])],16))}}),[["__file","content.vue"]]);const ln=X(zt),un=Symbol("elTooltip"),pn=y({..._t,...en,appendTo:{type:t([String,Object])},content:{type:String,default:""},rawContent:Boolean,persistent:Boolean,visible:{type:t(Boolean),default:null},transition:String,teleported:{type:Boolean,default:!0},disabled:Boolean,...U(["ariaLabel"])}),fn=y({...Yt,disabled:Boolean,trigger:{type:t([String,Array]),default:"hover"},triggerKeys:{type:t(Array),default:()=>[Y.enter,Y.space]}}),{useModelToggleProps:cn,useModelToggleEmits:dn,useModelToggle:vn}=ce("visible"),gn=y({...Wt,...cn,...pn,...fn,...Nt,showArrow:{type:Boolean,default:!0}}),mn=[...dn,"before-show","before-hide","show","hide","open","close"],hn=(e,t,n)=>r=>{((e,t)=>G(e)?e.includes(t):e===t)(u(e),t)&&n(r)},yn=x({name:"ElTooltipTrigger"});var bn=R(x({...yn,props:fn,setup(e,{expose:t}){const n=e,r=A("tooltip"),{controlled:o,id:a,open:i,onOpen:s,onClose:l,onToggle:p}=E(un,void 0),c=f(null),d=()=>{if(u(o)||n.disabled)return!0},v=J(n,"trigger"),g=le(d,hn(v,"hover",s)),m=le(d,hn(v,"hover",l)),h=le(d,hn(v,"click",(e=>{0===e.button&&p(e)}))),y=le(d,hn(v,"focus",s)),b=le(d,hn(v,"focus",l)),w=le(d,hn(v,"contextmenu",(e=>{e.preventDefault(),p(e)}))),x=le(d,(e=>{const{code:t}=e;n.triggerKeys.includes(t)&&(e.preventDefault(),p(e))}));return t({triggerRef:c}),(e,t)=>(T(),W(u(Jt),{id:u(a),"virtual-ref":e.virtualRef,open:u(i),"virtual-triggering":e.virtualTriggering,class:k(u(r).e("trigger")),onBlur:u(b),onClick:u(h),onContextmenu:u(w),onFocus:u(y),onMouseenter:u(g),onMouseleave:u(m),onKeydown:u(x)},{default:q((()=>[O(e.$slots,"default")])),_:3},8,["id","virtual-ref","open","virtual-triggering","class","onBlur","onClick","onContextmenu","onFocus","onMouseenter","onMouseleave","onKeydown"]))}}),[["__file","trigger.vue"]]);const wn=x({name:"ElTooltipContent",inheritAttrs:!1});var xn=R(x({...wn,props:pn,setup(e,{expose:t}){const r=e,{selector:a}=Lt(),i=A("tooltip"),s=f(null),l=f(!1),{controlled:p,id:d,open:v,trigger:g,onClose:m,onOpen:h,onShow:y,onHide:b,onBeforeShow:w,onBeforeHide:x}=E(un,void 0),R=n((()=>r.transition||`${i.namespace.value}-fade-in-linear`)),S=n((()=>r.persistent));c((()=>{l.value=!0}));const k=n((()=>!!u(S)||u(v))),C=n((()=>!r.disabled&&u(v))),j=n((()=>r.appendTo||a.value)),M=n((()=>{var e;return null!=(e=r.style)?e:{}})),P=n((()=>!u(v))),F=()=>{b()},L=()=>{if(u(p))return!0},D=le(L,(()=>{r.enterable&&"hover"===u(g)&&h()})),I=le(L,(()=>{"hover"===u(g)&&m()})),H=()=>{var e,t;null==(t=null==(e=s.value)?void 0:e.updatePopper)||t.call(e),null==w||w()},$=()=>{null==x||x()},U=()=>{y(),K=ne(n((()=>{var e;return null==(e=s.value)?void 0:e.popperContentRef})),(()=>{if(u(p))return;"hover"!==u(g)&&m()}))},V=()=>{r.virtualTriggering||m()};let K;return o((()=>u(v)),(e=>{e||null==K||K()}),{flush:"post"}),o((()=>r.content),(()=>{var e,t;null==(t=null==(e=s.value)?void 0:e.updatePopper)||t.call(e)})),t({contentRef:s}),(e,t)=>(T(),W(te,{disabled:!e.teleported,to:u(j)},[_(ee,{name:u(R),onAfterLeave:F,onBeforeEnter:H,onAfterEnter:U,onBeforeLeave:$},{default:q((()=>[u(k)?B((T(),W(u(sn),z({key:0,id:u(d),ref_key:"contentRef",ref:s},e.$attrs,{"aria-label":e.ariaLabel,"aria-hidden":u(P),"boundaries-padding":e.boundariesPadding,"fallback-placements":e.fallbackPlacements,"gpu-acceleration":e.gpuAcceleration,offset:e.offset,placement:e.placement,"popper-options":e.popperOptions,strategy:e.strategy,effect:e.effect,enterable:e.enterable,pure:e.pure,"popper-class":e.popperClass,"popper-style":[e.popperStyle,u(M)],"reference-el":e.referenceEl,"trigger-target-el":e.triggerTargetEl,visible:u(C),"z-index":e.zIndex,onMouseenter:u(D),onMouseleave:u(I),onBlur:V,onClose:u(m)}),{default:q((()=>[l.value?N("v-if",!0):O(e.$slots,"default",{key:0})])),_:3},16,["id","aria-label","aria-hidden","boundaries-padding","fallback-placements","gpu-acceleration","offset","placement","popper-options","strategy","effect","enterable","pure","popper-class","popper-style","reference-el","trigger-target-el","visible","z-index","onMouseenter","onMouseleave","onClose"])),[[Q,u(C)]]):N("v-if",!0)])),_:3},8,["name"])],8,["disabled","to"]))}}),[["__file","content.vue"]]);const On=["innerHTML"],Rn={key:1},An=x({name:"ElTooltip"});const En=X(R(x({...An,props:gn,emits:mn,setup(e,{expose:t,emit:r}){const a=e;Dt();const i=re(),s=f(),p=f(),c=()=>{var e;const t=u(s);t&&(null==(e=t.popperInstanceRef)||e.update())},d=f(!1),v=f(),{show:g,hide:m,hasUpdateHandler:h}=vn({indicator:d,toggleReason:v}),{onOpen:y,onClose:x}=(({showAfter:e,hideAfter:t,autoClose:n,open:r,close:o})=>{const{registerTimeout:a}=Pt(),{registerTimeout:i,cancelTimeout:s}=Pt();return{onOpen:t=>{a((()=>{r(t);const e=u(n);b(e)&&e>0&&i((()=>{o(t)}),e)}),u(e))},onClose:e=>{s(),a((()=>{o(e)}),u(t))}}})({showAfter:J(a,"showAfter"),hideAfter:J(a,"hideAfter"),autoClose:J(a,"autoClose"),open:g,close:m}),R=n((()=>l(a.visible)&&!h.value));w(un,{controlled:R,id:i,open:oe(d),trigger:J(a,"trigger"),onOpen:e=>{y(e)},onClose:e=>{x(e)},onToggle:e=>{u(d)?x(e):y(e)},onShow:()=>{r("show",v.value)},onHide:()=>{r("hide",v.value)},onBeforeShow:()=>{r("before-show",v.value)},onBeforeHide:()=>{r("before-hide",v.value)},updatePopper:c}),o((()=>a.disabled),(e=>{e&&d.value&&(d.value=!1)}));return ae((()=>d.value&&m())),t({popperRef:s,contentRef:p,isFocusInsideContent:e=>{var t,n;const r=null==(n=null==(t=p.value)?void 0:t.contentRef)?void 0:n.popperContentRef,o=(null==e?void 0:e.relatedTarget)||document.activeElement;return r&&r.contains(o)},updatePopper:c,onOpen:y,onClose:x,hide:m}),(e,t)=>(T(),W(u(ln),{ref_key:"popperRef",ref:s,role:e.role},{default:q((()=>[_(bn,{disabled:e.disabled,trigger:e.trigger,"trigger-keys":e.triggerKeys,"virtual-ref":e.virtualRef,"virtual-triggering":e.virtualTriggering},{default:q((()=>[e.$slots.default?O(e.$slots,"default",{key:0}):N("v-if",!0)])),_:3},8,["disabled","trigger","trigger-keys","virtual-ref","virtual-triggering"]),_(xn,{ref_key:"contentRef",ref:p,"aria-label":e.ariaLabel,"boundaries-padding":e.boundariesPadding,content:e.content,disabled:e.disabled,effect:e.effect,enterable:e.enterable,"fallback-placements":e.fallbackPlacements,"hide-after":e.hideAfter,"gpu-acceleration":e.gpuAcceleration,offset:e.offset,persistent:e.persistent,"popper-class":e.popperClass,"popper-style":e.popperStyle,placement:e.placement,"popper-options":e.popperOptions,pure:e.pure,"raw-content":e.rawContent,"reference-el":e.referenceEl,"trigger-target-el":e.triggerTargetEl,"show-after":e.showAfter,strategy:e.strategy,teleported:e.teleported,transition:e.transition,"virtual-triggering":e.virtualTriggering,"z-index":e.zIndex,"append-to":e.appendTo},{default:q((()=>[O(e.$slots,"content",{},(()=>[e.rawContent?(T(),S("span",{key:0,innerHTML:e.content},null,8,On)):(T(),S("span",Rn,ie(e.content),1))])),e.showArrow?(T(),W(u(Vt),{key:0,"arrow-offset":e.arrowOffset},null,8,["arrow-offset"])):N("v-if",!0)])),_:3},8,["aria-label","boundaries-padding","content","disabled","effect","enterable","fallback-placements","hide-after","gpu-acceleration","offset","persistent","popper-class","popper-style","placement","popper-options","pure","raw-content","reference-el","trigger-target-el","show-after","strategy","teleported","transition","virtual-triggering","z-index","append-to"])])),_:3},8,["role"]))}}),[["__file","tooltip.vue"]]));export{En as E,Kt as O,un as T,Te as a,fn as b,le as c,pn as u,ue as w}; diff --git a/resources/views/dist/js/el-progress.BF08Xthz.js b/resources/views/dist/js/el-progress.BF08Xthz.js new file mode 100644 index 0000000..3e4a1ea --- /dev/null +++ b/resources/views/dist/js/el-progress.BF08Xthz.js @@ -0,0 +1 @@ +import{v as e,A as t,d as a,b as s,c as l,dv as o,dw as r,cw as n,dx as i,ab as u,bm as c,N as d,e as p,h as f,i as v,g as y,C as m,n as g,k as h,F as b,p as k,f as w,w as $,D as x,E as F,_ as R,q as E,t as S,bl as T,O as _,ao as C,bf as L,y as U,Y as P,r as B,S as D,V as O,a4 as j,j as N,l as q,dy as A,b_ as H,dz as M,aR as z,B as I,s as K,dA as W,dB as X,dC as J,J as V,ac as Y,al as G,z as Q,at as Z,b9 as ee,a8 as te}from"./index.DMBpWXpT.js";import{f as ae}from"./el-form.DUR-mZNt.js";import{i as se}from"./isEqual.B61-3bNT.js";function le(e){return ae(e,5)}const oe=e({type:{type:String,default:"line",values:["line","circle","dashboard"]},percentage:{type:Number,default:0,validator:e=>e>=0&&e<=100},status:{type:String,default:"",values:["","success","exception","warning"]},indeterminate:Boolean,duration:{type:Number,default:3},strokeWidth:{type:Number,default:6},strokeLinecap:{type:t(String),default:"round"},textInside:Boolean,width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:t([String,Array,Function]),default:""},striped:Boolean,stripedFlow:Boolean,format:{type:t(Function),default:e=>`${e}%`}}),re=["aria-valuenow"],ne={viewBox:"0 0 100 100"},ie=["d","stroke","stroke-linecap","stroke-width"],ue=["d","stroke","opacity","stroke-linecap","stroke-width"],ce={key:0},de=a({name:"ElProgress"});const pe=E(R(a({...de,props:oe,setup(e){const t=e,a={success:"#13ce66",exception:"#ff4949",warning:"#e6a23c",default:"#20a0ff"},R=s("progress"),E=l((()=>{const e={width:`${t.percentage}%`,animationDuration:`${t.duration}s`},a=q(t.percentage);return a.includes("gradient")?e.background=a:e.backgroundColor=a,e})),S=l((()=>(t.strokeWidth/t.width*100).toFixed(1))),T=l((()=>["circle","dashboard"].includes(t.type)?Number.parseInt(""+(50-Number.parseFloat(S.value)/2),10):0)),_=l((()=>{const e=T.value,a="dashboard"===t.type;return`\n M 50 50\n m 0 ${a?"":"-"}${e}\n a ${e} ${e} 0 1 1 0 ${a?"-":""}${2*e}\n a ${e} ${e} 0 1 1 0 ${a?"":"-"}${2*e}\n `})),C=l((()=>2*Math.PI*T.value)),L=l((()=>"dashboard"===t.type?.75:1)),U=l((()=>`${-1*C.value*(1-L.value)/2}px`)),P=l((()=>({strokeDasharray:`${C.value*L.value}px, ${C.value}px`,strokeDashoffset:U.value}))),B=l((()=>({strokeDasharray:`${C.value*L.value*(t.percentage/100)}px, ${C.value}px`,strokeDashoffset:U.value,transition:"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease, opacity ease 0.6s"}))),D=l((()=>{let e;return e=t.color?q(t.percentage):a[t.status]||a.default,e})),O=l((()=>"warning"===t.status?o:"line"===t.type?"success"===t.status?r:n:"success"===t.status?i:u)),j=l((()=>"line"===t.type?12+.4*t.strokeWidth:.111111*t.width+2)),N=l((()=>t.format(t.percentage)));const q=e=>{var a;const{color:s}=t;if(c(s))return s(e);if(d(s))return s;{const t=function(e){const t=100/e.length;return e.map(((e,a)=>d(e)?{color:e,percentage:(a+1)*t}:e)).sort(((e,t)=>e.percentage-t.percentage))}(s);for(const a of t)if(a.percentage>e)return a.color;return null==(a=t[t.length-1])?void 0:a.color}};return(e,t)=>(p(),f("div",{class:v([y(R).b(),y(R).m(e.type),y(R).is(e.status),{[y(R).m("without-text")]:!e.showText,[y(R).m("text-inside")]:e.textInside}]),role:"progressbar","aria-valuenow":e.percentage,"aria-valuemin":"0","aria-valuemax":"100"},["line"===e.type?(p(),f("div",{key:0,class:v(y(R).b("bar"))},[m("div",{class:v(y(R).be("bar","outer")),style:g({height:`${e.strokeWidth}px`})},[m("div",{class:v([y(R).be("bar","inner"),{[y(R).bem("bar","inner","indeterminate")]:e.indeterminate},{[y(R).bem("bar","inner","striped")]:e.striped},{[y(R).bem("bar","inner","striped-flow")]:e.stripedFlow}]),style:g(y(E))},[(e.showText||e.$slots.default)&&e.textInside?(p(),f("div",{key:0,class:v(y(R).be("bar","innerText"))},[h(e.$slots,"default",{percentage:e.percentage},(()=>[m("span",null,b(y(N)),1)]))],2)):k("v-if",!0)],6)],6)],2)):(p(),f("div",{key:1,class:v(y(R).b("circle")),style:g({height:`${e.width}px`,width:`${e.width}px`})},[(p(),f("svg",ne,[m("path",{class:v(y(R).be("circle","track")),d:y(_),stroke:`var(${y(R).cssVarName("fill-color-light")}, #e5e9f2)`,"stroke-linecap":e.strokeLinecap,"stroke-width":y(S),fill:"none",style:g(y(P))},null,14,ie),m("path",{class:v(y(R).be("circle","path")),d:y(_),stroke:y(D),fill:"none",opacity:e.percentage?1:0,"stroke-linecap":e.strokeLinecap,"stroke-width":y(S),style:g(y(B))},null,14,ue)]))],6)),!e.showText&&!e.$slots.default||e.textInside?k("v-if",!0):(p(),f("div",{key:2,class:v(y(R).e("text")),style:g({fontSize:`${y(j)}px`})},[h(e.$slots,"default",{percentage:e.percentage},(()=>[e.status?(p(),w(y(F),{key:1},{default:$((()=>[(p(),w(x(y(O))))])),_:1})):(p(),f("span",ce,b(y(N)),1))]))],6))],10,re))}}),[["__file","progress.vue"]])),fe=Symbol("uploadContextKey");class ve extends Error{constructor(e,t,a,s){super(e),this.name="UploadAjaxError",this.status=t,this.method=a,this.url=s}}function ye(e,t,a){let s;return s=a.response?`${a.response.error||a.response}`:a.responseText?`${a.responseText}`:`fail to ${t.method} ${e} ${a.status}`,new ve(s,a.status,t.method,e)}const me=["text","picture","picture-card"];let ge=1;const he=()=>Date.now()+ge++,be=e({action:{type:String,default:"#"},headers:{type:t(Object)},method:{type:String,default:"post"},data:{type:t([Object,Function,Promise]),default:()=>C({})},multiple:Boolean,name:{type:String,default:"file"},drag:Boolean,withCredentials:Boolean,showFileList:{type:Boolean,default:!0},accept:{type:String,default:""},fileList:{type:t(Array),default:()=>C([])},autoUpload:{type:Boolean,default:!0},listType:{type:String,values:me,default:"text"},httpRequest:{type:t(Function),default:e=>{"undefined"==typeof XMLHttpRequest&&S("ElUpload","XMLHttpRequest is undefined");const t=new XMLHttpRequest,a=e.action;t.upload&&t.upload.addEventListener("progress",(t=>{const a=t;a.percent=t.total>0?t.loaded/t.total*100:0,e.onProgress(a)}));const s=new FormData;if(e.data)for(const[o,r]of Object.entries(e.data))T(r)&&r.length?s.append(o,...r):s.append(o,r);s.append(e.filename,e.file,e.file.name),t.addEventListener("error",(()=>{e.onError(ye(a,e,t))})),t.addEventListener("load",(()=>{if(t.status<200||t.status>=300)return e.onError(ye(a,e,t));e.onSuccess(function(e){const t=e.responseText||e.response;if(!t)return t;try{return JSON.parse(t)}catch(a){return t}}(t))})),t.open(e.method,a,!0),e.withCredentials&&"withCredentials"in t&&(t.withCredentials=!0);const l=e.headers||{};if(l instanceof Headers)l.forEach(((e,a)=>t.setRequestHeader(a,e)));else for(const[o,r]of Object.entries(l))_(r)||t.setRequestHeader(o,String(r));return t.send(s),t}},disabled:Boolean,limit:Number}),ke=e({...be,beforeUpload:{type:t(Function),default:L},beforeRemove:{type:t(Function)},onRemove:{type:t(Function),default:L},onChange:{type:t(Function),default:L},onPreview:{type:t(Function),default:L},onSuccess:{type:t(Function),default:L},onProgress:{type:t(Function),default:L},onError:{type:t(Function),default:L},onExceed:{type:t(Function),default:L},crossorigin:{type:t(String)}}),we=e({files:{type:t(Array),default:()=>C([])},disabled:{type:Boolean,default:!1},handlePreview:{type:t(Function),default:L},listType:{type:String,values:me,default:"text"},crossorigin:{type:t(String)}}),$e=["onKeydown"],xe=["src","crossorigin"],Fe=["onClick"],Re=["title"],Ee=["onClick"],Se=["onClick"],Te=a({name:"ElUploadList"});var _e=R(a({...Te,props:we,emits:{remove:e=>!!e},setup(e,{emit:t}){const a=e,{t:o}=U(),n=s("upload"),c=s("icon"),d=s("list"),x=P(),R=B(!1),E=l((()=>[n.b("list"),n.bm("list",a.listType),n.is("disabled",a.disabled)])),S=e=>{t("remove",e)};return(e,t)=>(p(),w(z,{tag:"ul",class:v(y(E)),name:y(d).b()},{default:$((()=>[(p(!0),f(D,null,O(e.files,(a=>(p(),f("li",{key:a.uid||a.name,class:v([y(n).be("list","item"),y(n).is(a.status),{focusing:R.value}]),tabindex:"0",onKeydown:j((e=>!y(x)&&S(a)),["delete"]),onFocus:t[0]||(t[0]=e=>R.value=!0),onBlur:t[1]||(t[1]=e=>R.value=!1),onClick:t[2]||(t[2]=e=>R.value=!1)},[h(e.$slots,"default",{file:a},(()=>["picture"===e.listType||"uploading"!==a.status&&"picture-card"===e.listType?(p(),f("img",{key:0,class:v(y(n).be("list","item-thumbnail")),src:a.url,crossorigin:e.crossorigin,alt:""},null,10,xe)):k("v-if",!0),"uploading"===a.status||"picture-card"!==e.listType?(p(),f("div",{key:1,class:v(y(n).be("list","item-info"))},[m("a",{class:v(y(n).be("list","item-name")),onClick:N((t=>e.handlePreview(a)),["prevent"])},[q(y(F),{class:v(y(c).m("document"))},{default:$((()=>[q(y(A))])),_:1},8,["class"]),m("span",{class:v(y(n).be("list","item-file-name")),title:a.name},b(a.name),11,Re)],10,Fe),"uploading"===a.status?(p(),w(y(pe),{key:0,type:"picture-card"===e.listType?"circle":"line","stroke-width":"picture-card"===e.listType?6:2,percentage:Number(a.percentage),style:g("picture-card"===e.listType?"":"margin-top: 0.5rem")},null,8,["type","stroke-width","percentage","style"])):k("v-if",!0)],2)):k("v-if",!0),m("label",{class:v(y(n).be("list","item-status-label"))},["text"===e.listType?(p(),w(y(F),{key:0,class:v([y(c).m("upload-success"),y(c).m("circle-check")])},{default:$((()=>[q(y(r))])),_:1},8,["class"])):["picture-card","picture"].includes(e.listType)?(p(),w(y(F),{key:1,class:v([y(c).m("upload-success"),y(c).m("check")])},{default:$((()=>[q(y(i))])),_:1},8,["class"])):k("v-if",!0)],2),y(x)?k("v-if",!0):(p(),w(y(F),{key:2,class:v(y(c).m("close")),onClick:e=>S(a)},{default:$((()=>[q(y(u))])),_:2},1032,["class","onClick"])),k(" Due to close btn only appears when li gets focused disappears after li gets blurred, thus keyboard navigation can never reach close btn"),k(" This is a bug which needs to be fixed "),k(" TODO: Fix the incorrect navigation interaction "),y(x)?k("v-if",!0):(p(),f("i",{key:3,class:v(y(c).m("close-tip"))},b(y(o)("el.upload.deleteTip")),3)),"picture-card"===e.listType?(p(),f("span",{key:4,class:v(y(n).be("list","item-actions"))},[m("span",{class:v(y(n).be("list","item-preview")),onClick:t=>e.handlePreview(a)},[q(y(F),{class:v(y(c).m("zoom-in"))},{default:$((()=>[q(y(H))])),_:1},8,["class"])],10,Ee),y(x)?k("v-if",!0):(p(),f("span",{key:0,class:v(y(n).be("list","item-delete")),onClick:e=>S(a)},[q(y(F),{class:v(y(c).m("delete"))},{default:$((()=>[q(y(M))])),_:1},8,["class"])],10,Se))],2)):k("v-if",!0)]))],42,$e)))),128)),h(e.$slots,"append")])),_:3},8,["class","name"]))}}),[["__file","upload-list.vue"]]);const Ce=e({disabled:{type:Boolean,default:!1}}),Le={file:e=>T(e)},Ue=["onDrop","onDragover"],Pe="ElUploadDrag",Be=a({name:Pe});var De=R(a({...Be,props:Ce,emits:Le,setup(e,{emit:t}){I(fe)||S(Pe,"usage: ");const a=s("upload"),l=B(!1),o=P(),r=e=>{if(o.value)return;l.value=!1,e.stopPropagation();const a=Array.from(e.dataTransfer.files);t("file",a)},n=()=>{o.value||(l.value=!0)};return(e,t)=>(p(),f("div",{class:v([y(a).b("dragger"),y(a).is("dragover",l.value)]),onDrop:N(r,["prevent"]),onDragover:N(n,["prevent"]),onDragleave:t[0]||(t[0]=N((e=>l.value=!1),["prevent"]))},[h(e.$slots,"default")],42,Ue))}}),[["__file","upload-dragger.vue"]]);const Oe=e({...be,beforeUpload:{type:t(Function),default:L},onRemove:{type:t(Function),default:L},onStart:{type:t(Function),default:L},onSuccess:{type:t(Function),default:L},onProgress:{type:t(Function),default:L},onError:{type:t(Function),default:L},onExceed:{type:t(Function),default:L}}),je=["onKeydown"],Ne=["name","multiple","accept"],qe=a({name:"ElUploadContent",inheritAttrs:!1});var Ae=R(a({...qe,props:Oe,setup(e,{expose:t}){const a=e,l=s("upload"),o=P(),r=K({}),n=K(),i=e=>{if(0===e.length)return;const{autoUpload:t,limit:s,fileList:l,multiple:o,onStart:r,onExceed:n}=a;if(s&&l.length+e.length>s)n(e,l);else{o||(e=e.slice(0,1));for(const a of e){const e=a;e.uid=he(),r(e),t&&u(e)}}},u=async e=>{if(n.value.value="",!a.beforeUpload)return d(e);let t,s={};try{const l=a.data,o=a.beforeUpload(e);s=W(a.data)?le(a.data):a.data,t=await o,W(a.data)&&se(l,s)&&(s=le(a.data))}catch(o){t=!1}if(!1===t)return void a.onRemove(e);let l=e;t instanceof Blob&&(l=t instanceof File?t:new File([t],e.name,{type:e.type})),d(Object.assign(l,{uid:e.uid}),s)},d=async(e,t)=>{const{headers:s,data:l,method:o,withCredentials:n,name:i,action:u,onProgress:d,onSuccess:p,onError:f,httpRequest:v}=a;try{t=await(async(e,t)=>c(e)?e(t):e)(null!=t?t:l,e)}catch(h){return void a.onRemove(e)}const{uid:y}=e,m={headers:s||{},withCredentials:n,file:e,data:t,method:o,filename:i,action:u,onProgress:t=>{d(t,e)},onSuccess:t=>{p(t,e),delete r.value[y]},onError:t=>{f(t,e),delete r.value[y]}},g=v(m);r.value[y]=g,g instanceof Promise&&g.then(m.onSuccess,m.onError)},g=e=>{const t=e.target.files;t&&i(Array.from(t))},b=()=>{o.value||(n.value.value="",n.value.click())},k=()=>{b()};return t({abort:e=>{X(r.value).filter(e?([t])=>String(e.uid)===t:()=>!0).forEach((([e,t])=>{t instanceof XMLHttpRequest&&t.abort(),delete r.value[e]}))},upload:u}),(e,t)=>(p(),f("div",{class:v([y(l).b(),y(l).m(e.listType),y(l).is("drag",e.drag)]),tabindex:"0",onClick:b,onKeydown:j(N(k,["self"]),["enter","space"])},[e.drag?(p(),w(De,{key:0,disabled:y(o),onFile:i},{default:$((()=>[h(e.$slots,"default")])),_:3},8,["disabled"])):h(e.$slots,"default",{key:1}),m("input",{ref_key:"inputRef",ref:n,class:v(y(l).e("input")),name:e.name,multiple:e.multiple,accept:e.accept,type:"file",onChange:g,onClick:t[0]||(t[0]=N((()=>{}),["stop"]))},null,42,Ne)],42,je))}}),[["__file","upload-content.vue"]]);const He="ElUpload",Me=e=>{var t;(null==(t=e.url)?void 0:t.startsWith("blob:"))&&URL.revokeObjectURL(e.url)},ze=a({name:"ElUpload"});const Ie=E(R(a({...ze,props:ke,setup(e,{expose:t}){const a=e,s=P(),o=K(),{abort:r,submit:n,clearFiles:i,uploadFiles:u,handleStart:c,handleError:d,handleRemove:v,handleSuccess:m,handleProgress:g,revokeFileObjectURL:b}=((e,t)=>{const a=J(e,"fileList",void 0,{passive:!0}),s=e=>a.value.find((t=>t.uid===e.uid));function l(e){var a;null==(a=t.value)||a.abort(e)}return V((()=>e.listType),(t=>{"picture-card"!==t&&"picture"!==t||(a.value=a.value.map((t=>{const{raw:s,url:l}=t;if(!l&&s)try{t.url=URL.createObjectURL(s)}catch(o){e.onError(o,t,a.value)}return t})))})),V(a,(e=>{for(const t of e)t.uid||(t.uid=he()),t.status||(t.status="success")}),{immediate:!0,deep:!0}),{uploadFiles:a,abort:l,clearFiles:function(e=["ready","uploading","success","fail"]){a.value=a.value.filter((t=>!e.includes(t.status)))},handleError:(t,l)=>{const o=s(l);o&&(console.error(t),o.status="fail",a.value.splice(a.value.indexOf(o),1),e.onError(t,o,a.value),e.onChange(o,a.value))},handleProgress:(t,l)=>{const o=s(l);o&&(e.onProgress(t,o,a.value),o.status="uploading",o.percentage=Math.round(t.percent))},handleStart:t=>{_(t.uid)&&(t.uid=he());const s={name:t.name,percentage:0,status:"ready",size:t.size,raw:t,uid:t.uid};if("picture-card"===e.listType||"picture"===e.listType)try{s.url=URL.createObjectURL(t)}catch(l){Y(He,l.message),e.onError(l,s,a.value)}a.value=[...a.value,s],e.onChange(s,a.value)},handleSuccess:(t,l)=>{const o=s(l);o&&(o.status="success",o.response=t,e.onSuccess(t,o,a.value),e.onChange(o,a.value))},handleRemove:async t=>{const o=t instanceof File?s(t):t;o||S(He,"file to be removed not found");const r=t=>{l(t);const s=a.value;s.splice(s.indexOf(t),1),e.onRemove(t,s),Me(t)};e.beforeRemove?!1!==await e.beforeRemove(o,a.value)&&r(o):r(o)},submit:function(){a.value.filter((({status:e})=>"ready"===e)).forEach((({raw:e})=>{var a;return e&&(null==(a=t.value)?void 0:a.upload(e))}))},revokeFileObjectURL:Me}})(a,o),x=l((()=>"picture-card"===a.listType)),F=l((()=>({...a,fileList:u.value,onStart:c,onProgress:g,onSuccess:m,onError:d,onRemove:v})));return G((()=>{u.value.forEach(b)})),Q(fe,{accept:Z(a,"accept")}),t({abort:r,submit:n,clearFiles:i,handleStart:c,handleRemove:v}),(e,t)=>(p(),f("div",null,[y(x)&&e.showFileList?(p(),w(_e,{key:0,disabled:y(s),"list-type":e.listType,files:y(u),crossorigin:e.crossorigin,"handle-preview":e.onPreview,onRemove:y(v)},ee({append:$((()=>[q(Ae,te({ref_key:"uploadRef",ref:o},y(F)),{default:$((()=>[e.$slots.trigger?h(e.$slots,"trigger",{key:0}):k("v-if",!0),!e.$slots.trigger&&e.$slots.default?h(e.$slots,"default",{key:1}):k("v-if",!0)])),_:3},16)])),_:2},[e.$slots.file?{name:"default",fn:$((({file:t})=>[h(e.$slots,"file",{file:t})]))}:void 0]),1032,["disabled","list-type","files","crossorigin","handle-preview","onRemove"])):k("v-if",!0),!y(x)||y(x)&&!e.showFileList?(p(),w(Ae,te({key:1,ref_key:"uploadRef",ref:o},y(F)),{default:$((()=>[e.$slots.trigger?h(e.$slots,"trigger",{key:0}):k("v-if",!0),!e.$slots.trigger&&e.$slots.default?h(e.$slots,"default",{key:1}):k("v-if",!0)])),_:3},16)):k("v-if",!0),e.$slots.trigger?h(e.$slots,"default",{key:2}):k("v-if",!0),h(e.$slots,"tip"),!y(x)&&e.showFileList?(p(),w(_e,{key:3,disabled:y(s),"list-type":e.listType,files:y(u),crossorigin:e.crossorigin,"handle-preview":e.onPreview,onRemove:y(v)},ee({_:2},[e.$slots.file?{name:"default",fn:$((({file:t})=>[h(e.$slots,"file",{file:t})]))}:void 0]),1032,["disabled","list-type","files","crossorigin","handle-preview","onRemove"])):k("v-if",!0)]))}}),[["__file","upload.vue"]]));export{Ie as E,he as g}; diff --git a/resources/views/dist/js/el-radio.B-TDguQR.js b/resources/views/dist/js/el-radio.B-TDguQR.js new file mode 100644 index 0000000..9883757 --- /dev/null +++ b/resources/views/dist/js/el-radio.B-TDguQR.js @@ -0,0 +1 @@ +import{v as e,L as a,U as l,N as o,bK as s,c9 as i,P as d,r as t,B as r,c as u,cI as n,X as v,Y as b,a1 as p,d as c,b as m,e as f,h as g,C as y,a3 as h,du as B,g as S,aB as V,i as k,j as R,k as _,a7 as x,F as C,_ as E,a2 as G,n as I,M as z,b8 as N,W as U,Z as F,o as K,z as L,a0 as $,bd as w,J as j,ac as q,q as A,H}from"./index.DMBpWXpT.js";const J=e({modelValue:{type:[String,Number,Boolean],default:void 0},size:a,disabled:Boolean,label:{type:[String,Number,Boolean],default:void 0},value:{type:[String,Number,Boolean],default:void 0},name:{type:String,default:void 0}}),M=e({...J,border:Boolean}),P={[l]:e=>o(e)||s(e)||i(e),[d]:e=>o(e)||s(e)||i(e)},W=Symbol("radioGroupKey"),X=(e,a)=>{const o=t(),s=r(W,void 0),i=u((()=>!!s)),d=u((()=>n(e.value)?e.label:e.value)),c=u({get:()=>i.value?s.modelValue:e.modelValue,set(t){i.value?s.changeEvent(t):a&&a(l,t),o.value.checked=e.modelValue===d.value}}),m=v(u((()=>null==s?void 0:s.size))),f=b(u((()=>null==s?void 0:s.disabled))),g=t(!1),y=u((()=>f.value||i.value&&c.value!==d.value?-1:0));return p({from:"label act as value",replacement:"value",version:"3.0.0",scope:"el-radio",ref:"https://element-plus.org/en-US/component/radio.html"},u((()=>i.value&&n(e.value)))),{radioRef:o,isGroup:i,radioGroup:s,focus:g,size:m,disabled:f,tabIndex:y,modelValue:c,actualValue:d}},Y=["value","name","disabled"],Z=c({name:"ElRadio"});var D=E(c({...Z,props:M,emits:P,setup(e,{emit:a}){const l=e,o=m("radio"),{radioRef:s,radioGroup:i,focus:d,size:t,disabled:r,modelValue:u,actualValue:n}=X(l,a);function v(){G((()=>a("change",u.value)))}return(e,a)=>{var l;return f(),g("label",{class:k([S(o).b(),S(o).is("disabled",S(r)),S(o).is("focus",S(d)),S(o).is("bordered",e.border),S(o).is("checked",S(u)===S(n)),S(o).m(S(t))])},[y("span",{class:k([S(o).e("input"),S(o).is("disabled",S(r)),S(o).is("checked",S(u)===S(n))])},[h(y("input",{ref_key:"radioRef",ref:s,"onUpdate:modelValue":a[0]||(a[0]=e=>V(u)?u.value=e:null),class:k(S(o).e("original")),value:S(n),name:e.name||(null==(l=S(i))?void 0:l.name),disabled:S(r),type:"radio",onFocus:a[1]||(a[1]=e=>d.value=!0),onBlur:a[2]||(a[2]=e=>d.value=!1),onChange:v,onClick:a[3]||(a[3]=R((()=>{}),["stop"]))},null,42,Y),[[B,S(u)]]),y("span",{class:k(S(o).e("inner"))},null,2)],2),y("span",{class:k(S(o).e("label")),onKeydown:a[4]||(a[4]=R((()=>{}),["stop"]))},[_(e.$slots,"default",{},(()=>[x(C(e.label),1)]))],34)],2)}}}),[["__file","radio.vue"]]);const O=e({...J}),Q=["value","name","disabled"],T=c({name:"ElRadioButton"});var ee=E(c({...T,props:O,setup(e){const a=e,l=m("radio"),{radioRef:o,focus:s,size:i,disabled:d,modelValue:t,radioGroup:r,actualValue:n}=X(a),v=u((()=>({backgroundColor:(null==r?void 0:r.fill)||"",borderColor:(null==r?void 0:r.fill)||"",boxShadow:(null==r?void 0:r.fill)?`-1px 0 0 0 ${r.fill}`:"",color:(null==r?void 0:r.textColor)||""})));return(e,a)=>{var u;return f(),g("label",{class:k([S(l).b("button"),S(l).is("active",S(t)===S(n)),S(l).is("disabled",S(d)),S(l).is("focus",S(s)),S(l).bm("button",S(i))])},[h(y("input",{ref_key:"radioRef",ref:o,"onUpdate:modelValue":a[0]||(a[0]=e=>V(t)?t.value=e:null),class:k(S(l).be("button","original-radio")),value:S(n),type:"radio",name:e.name||(null==(u=S(r))?void 0:u.name),disabled:S(d),onFocus:a[1]||(a[1]=e=>s.value=!0),onBlur:a[2]||(a[2]=e=>s.value=!1),onClick:a[3]||(a[3]=R((()=>{}),["stop"]))},null,42,Q),[[B,S(t)]]),y("span",{class:k(S(l).be("button","inner")),style:I(S(t)===S(n)?S(v):{}),onKeydown:a[4]||(a[4]=R((()=>{}),["stop"]))},[_(e.$slots,"default",{},(()=>[x(C(e.label),1)]))],38)],2)}}}),[["__file","radio-button.vue"]]);const ae=e({id:{type:String,default:void 0},size:a,disabled:Boolean,modelValue:{type:[String,Number,Boolean],default:void 0},fill:{type:String,default:""},label:{type:String,default:void 0},textColor:{type:String,default:""},name:{type:String,default:void 0},validateEvent:{type:Boolean,default:!0},...z(["ariaLabel"])}),le=P,oe=["id","aria-label","aria-labelledby"],se=c({name:"ElRadioGroup"});var ie=E(c({...se,props:ae,emits:le,setup(e,{emit:a}){const o=e,s=m("radio"),i=N(),d=t(),{formItem:r}=U(),{inputId:n,isLabeledByFormItem:v}=F(o,{formItemContext:r});K((()=>{const e=d.value.querySelectorAll("[type=radio]"),a=e[0];!Array.from(e).some((e=>e.checked))&&a&&(a.tabIndex=0)}));const b=u((()=>o.name||i.value));return L(W,$({...w(o),changeEvent:e=>{a(l,e),G((()=>a("change",e)))},name:b})),j((()=>o.modelValue),(()=>{o.validateEvent&&(null==r||r.validate("change").catch((e=>q())))})),p({from:"label",replacement:"aria-label",version:"2.8.0",scope:"el-radio-group",ref:"https://element-plus.org/en-US/component/radio.html"},u((()=>!!o.label))),(e,a)=>(f(),g("div",{id:S(n),ref_key:"radioGroupRef",ref:d,class:k(S(s).b("group")),role:"radiogroup","aria-label":S(v)?void 0:e.label||e.ariaLabel||"radio-group","aria-labelledby":S(v)?S(r).labelId:void 0},[_(e.$slots,"default")],10,oe))}}),[["__file","radio-group.vue"]]);const de=A(D,{RadioButton:ee,RadioGroup:ie}),te=H(ie);H(ee);export{de as E,te as a}; diff --git a/resources/views/dist/js/el-scrollbar.BJ_tYB1D.js b/resources/views/dist/js/el-scrollbar.BJ_tYB1D.js new file mode 100644 index 0000000..5f6b2fd --- /dev/null +++ b/resources/views/dist/js/el-scrollbar.BJ_tYB1D.js @@ -0,0 +1 @@ +import{v as e,_ as a,d as l,B as t,b as s,t as r,r as o,c as i,al as n,a as u,at as v,e as c,f,w as m,a3 as d,C as p,i as y,g as h,n as g,aa as b,T as w,I as S,h as z,l as x,S as _,A as E,M as L,bK as T,K as k,J as B,aq as H,a2 as C,z as R,a0 as A,o as M,co as N,k as W,D as $,p as j,as as q,q as K}from"./index.DMBpWXpT.js";const O={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}},I=Symbol("scrollbarContextKey"),P=e({vertical:Boolean,size:String,move:Number,ratio:{type:Number,required:!0},always:Boolean});var X=a(l({__name:"thumb",props:P,setup(e){const a=e,l=t(I),z=s("scrollbar");l||r("Thumb","can not inject scrollbar context");const x=o(),_=o(),E=o({}),L=o(!1);let T=!1,k=!1,B=S?document.onselectstart:null;const H=i((()=>O[a.vertical?"vertical":"horizontal"])),C=i((()=>(({move:e,size:a,bar:l})=>({[l.size]:a,transform:`translate${l.axis}(${e}%)`}))({size:a.size,move:a.move,bar:H.value}))),R=i((()=>x.value[H.value.offset]**2/l.wrapElement[H.value.scrollSize]/a.ratio/_.value[H.value.offset])),A=e=>{var a;if(e.stopPropagation(),e.ctrlKey||[1,2].includes(e.button))return;null==(a=window.getSelection())||a.removeAllRanges(),N(e);const l=e.currentTarget;l&&(E.value[H.value.axis]=l[H.value.offset]-(e[H.value.client]-l.getBoundingClientRect()[H.value.direction]))},M=e=>{if(!_.value||!x.value||!l.wrapElement)return;const a=100*(Math.abs(e.target.getBoundingClientRect()[H.value.direction]-e[H.value.client])-_.value[H.value.offset]/2)*R.value/x.value[H.value.offset];l.wrapElement[H.value.scroll]=a*l.wrapElement[H.value.scrollSize]/100},N=e=>{e.stopImmediatePropagation(),T=!0,document.addEventListener("mousemove",W),document.addEventListener("mouseup",$),B=document.onselectstart,document.onselectstart=()=>!1},W=e=>{if(!x.value||!_.value)return;if(!1===T)return;const a=E.value[H.value.axis];if(!a)return;const t=100*(-1*(x.value.getBoundingClientRect()[H.value.direction]-e[H.value.client])-(_.value[H.value.offset]-a))*R.value/x.value[H.value.offset];l.wrapElement[H.value.scroll]=t*l.wrapElement[H.value.scrollSize]/100},$=()=>{T=!1,E.value[H.value.axis]=0,document.removeEventListener("mousemove",W),document.removeEventListener("mouseup",$),j(),k&&(L.value=!1)};n((()=>{j(),document.removeEventListener("mouseup",$)}));const j=()=>{document.onselectstart!==B&&(document.onselectstart=B)};return u(v(l,"scrollbarElement"),"mousemove",(()=>{k=!1,L.value=!!a.size})),u(v(l,"scrollbarElement"),"mouseleave",(()=>{k=!0,L.value=T})),(e,a)=>(c(),f(w,{name:h(z).b("fade"),persisted:""},{default:m((()=>[d(p("div",{ref_key:"instance",ref:x,class:y([h(z).e("bar"),h(z).is(h(H).key)]),onMousedown:M},[p("div",{ref_key:"thumb",ref:_,class:y(h(z).e("thumb")),style:g(h(C)),onMousedown:A},null,38)],34),[[b,e.always||L.value]])])),_:1},8,["name"]))}}),[["__file","thumb.vue"]]);var Y=a(l({__name:"bar",props:e({always:{type:Boolean,default:!0},minSize:{type:Number,required:!0}}),setup(e,{expose:a}){const l=e,s=t(I),r=o(0),i=o(0),n=o(""),u=o(""),v=o(1),f=o(1);return a({handleScroll:e=>{if(e){const a=e.offsetHeight-4,l=e.offsetWidth-4;i.value=100*e.scrollTop/a*v.value,r.value=100*e.scrollLeft/l*f.value}},update:()=>{const e=null==s?void 0:s.wrapElement;if(!e)return;const a=e.offsetHeight-4,t=e.offsetWidth-4,r=a**2/e.scrollHeight,o=t**2/e.scrollWidth,i=Math.max(r,l.minSize),c=Math.max(o,l.minSize);v.value=r/(a-r)/(i/(a-i)),f.value=o/(t-o)/(c/(t-c)),u.value=i+4(c(),z(_,null,[x(X,{move:r.value,ratio:f.value,size:n.value,always:e.always},null,8,["move","ratio","size","always"]),x(X,{move:i.value,ratio:v.value,size:u.value,vertical:"",always:e.always},null,8,["move","ratio","size","always"])],64))}}),[["__file","bar.vue"]]);const D=e({height:{type:[String,Number],default:""},maxHeight:{type:[String,Number],default:""},native:{type:Boolean,default:!1},wrapStyle:{type:E([String,Object,Array]),default:""},wrapClass:{type:[String,Array],default:""},viewClass:{type:[String,Array],default:""},viewStyle:{type:[String,Array,Object],default:""},noresize:Boolean,tag:{type:String,default:"div"},always:Boolean,minSize:{type:Number,default:20},id:String,role:String,...L(["ariaLabel","ariaOrientation"])}),J={scroll:({scrollTop:e,scrollLeft:a})=>[e,a].every(T)},F=l({name:"ElScrollbar"});const G=K(a(l({...F,props:D,emits:J,setup(e,{expose:a,emit:l}){const t=e,r=s("scrollbar");let n,v;const d=o(),b=o(),w=o(),S=o(),x=i((()=>{const e={};return t.height&&(e.height=k(t.height)),t.maxHeight&&(e.maxHeight=k(t.maxHeight)),[t.wrapStyle,e]})),_=i((()=>[t.wrapClass,r.e("wrap"),{[r.em("wrap","hidden-default")]:!t.native}])),E=i((()=>[r.e("view"),t.viewClass])),L=()=>{var e;b.value&&(null==(e=S.value)||e.handleScroll(b.value),l("scroll",{scrollTop:b.value.scrollTop,scrollLeft:b.value.scrollLeft}))};const K=()=>{var e;null==(e=S.value)||e.update()};return B((()=>t.noresize),(e=>{e?(null==n||n(),null==v||v()):(({stop:n}=H(w,K)),v=u("resize",K))}),{immediate:!0}),B((()=>[t.maxHeight,t.height]),(()=>{t.native||C((()=>{var e;K(),b.value&&(null==(e=S.value)||e.handleScroll(b.value))}))})),R(I,A({scrollbarElement:d,wrapElement:b})),M((()=>{t.native||C((()=>{K()}))})),N((()=>K())),a({wrapRef:b,update:K,scrollTo:function(e,a){q(e)?b.value.scrollTo(e):T(e)&&T(a)&&b.value.scrollTo(e,a)},setScrollTop:e=>{T(e)&&(b.value.scrollTop=e)},setScrollLeft:e=>{T(e)&&(b.value.scrollLeft=e)},handleScroll:L}),(e,a)=>(c(),z("div",{ref_key:"scrollbarRef",ref:d,class:y(h(r).b())},[p("div",{ref_key:"wrapRef",ref:b,class:y(h(_)),style:g(h(x)),onScroll:L},[(c(),f($(e.tag),{id:e.id,ref_key:"resizeRef",ref:w,class:y(h(E)),style:g(e.viewStyle),role:e.role,"aria-label":e.ariaLabel,"aria-orientation":e.ariaOrientation},{default:m((()=>[W(e.$slots,"default")])),_:3},8,["id","class","style","role","aria-label","aria-orientation"]))],38),e.native?j("v-if",!0):(c(),f(Y,{key:0,ref_key:"barRef",ref:S,always:e.always,"min-size":e.minSize},null,8,["always","min-size"]))],2))}}),[["__file","scrollbar.vue"]]));export{G as E}; diff --git a/resources/views/dist/js/el-select.C9ddzdnq.js b/resources/views/dist/js/el-select.C9ddzdnq.js new file mode 100644 index 0000000..762f995 --- /dev/null +++ b/resources/views/dist/js/el-select.C9ddzdnq.js @@ -0,0 +1 @@ +import{B as e,c as l,as as t,c2 as a,cp as o,J as s,G as n,_ as i,d as r,b as u,b8 as p,g as d,a0 as c,bd as v,al as f,a2 as m,a3 as h,aa as b,e as g,h as y,k as S,C as x,F as C,i as O,j as w,r as V,o as I,aq as E,p as T,n as k,cq as R,bm as B,y as M,$ as L,W as D,Z as $,cr as F,bl as z,cs as W,X as _,ct as K,ac as P,I as j,bp as N,bK as A,R as H,cu as q,U,ad as G,cv as Q,P as X,N as J,v as Z,L as Y,A as ee,x as le,cw as te,a9 as ae,cx as oe,M as se,a5 as ne,E as ie,z as re,au as ue,bG as pe,l as de,w as ce,S as ve,V as fe,a7 as me,f as he,a4 as be,cy as ge,D as ye,cz as Se,cA as xe,q as Ce,H as Oe}from"./index.DMBpWXpT.js";import{u as we,a as Ve,E as Ie}from"./el-popper.Cb3Eus9m.js";import{E as Ee}from"./el-scrollbar.BJ_tYB1D.js";import{t as Te,E as ke}from"./index.qeCV5ckY.js";import{s as Re,a as Be}from"./token.DWNpOE8r.js";import{e as Me}from"./strings.DeQ3Zoz4.js";import{i as Le}from"./isEqual.B61-3bNT.js";import{d as De}from"./debounce.l44evi-0.js";import{b as $e,C as Fe}from"./index.CP01f_MK.js";import{c as ze}from"./castArray.arHVDzqw.js";const We=r({name:"ElOption",componentName:"ElOption",props:{value:{required:!0,type:[String,Number,Boolean,Object]},label:[String,Number],created:Boolean,disabled:Boolean},setup(i){const r=u("select"),h=p(),b=l((()=>[r.be("dropdown","item"),r.is("disabled",d(x)),r.is("selected",d(S)),r.is("hovering",d(I))])),g=c({index:-1,groupDisabled:!1,visible:!0,hover:!1}),{currentLabel:y,itemSelected:S,isDisabled:x,select:C,hoverItem:O,updateOption:w}=function(i,r){const u=e(Re),p=e(Be,{disabled:!1}),d=l((()=>u.props.multiple?b(u.props.modelValue,i.value):b([u.props.modelValue],i.value))),c=l((()=>{if(u.props.multiple){const e=u.props.modelValue||[];return!d.value&&e.length>=u.props.multipleLimit&&u.props.multipleLimit>0}return!1})),v=l((()=>i.label||(t(i.value)?"":i.value))),f=l((()=>i.value||i.label||"")),m=l((()=>i.disabled||r.groupDisabled||c.value)),h=n(),b=(e=[],l)=>{if(t(i.value)){const t=u.props.valueKey;return e&&e.some((e=>a(o(e,t))===o(l,t)))}return e&&e.includes(l)};return s((()=>v.value),(()=>{i.created||u.props.remote||u.setSelected()})),s((()=>i.value),((e,l)=>{const{remote:a,valueKey:o}=u.props;if(Le(e,l)||(u.onOptionDestroy(l,h.proxy),u.onOptionCreate(h.proxy)),!i.created&&!a){if(o&&t(e)&&t(l)&&e[o]===l[o])return;u.setSelected()}})),s((()=>p.disabled),(()=>{r.groupDisabled=p.disabled}),{immediate:!0}),{select:u,currentLabel:v,currentValue:f,itemSelected:d,isDisabled:m,hoverItem:()=>{i.disabled||p.disabled||(u.states.hoveringIndex=u.optionsArray.indexOf(h.proxy))},updateOption:e=>{const l=new RegExp(Me(e),"i");r.visible=l.test(v.value)||i.created}}}(i,g),{visible:V,hover:I}=v(g),E=n().proxy;return C.onOptionCreate(E),f((()=>{const e=E.value,{selected:l}=C.states,t=(C.props.multiple?l:[l]).some((e=>e.value===E.value));m((()=>{C.states.cachedOptions.get(e)!==E||t||C.states.cachedOptions.delete(e)})),C.onOptionDestroy(e,E)})),{ns:r,id:h,containerKls:b,currentLabel:y,itemSelected:S,isDisabled:x,select:C,hoverItem:O,updateOption:w,visible:V,hover:I,selectOptionClick:function(){!0!==i.disabled&&!0!==g.groupDisabled&&C.handleOptionSelect(E)},states:g}}}),_e=["id","aria-disabled","aria-selected"];var Ke=i(We,[["render",function(e,l,t,a,o,s){return h((g(),y("li",{id:e.id,class:O(e.containerKls),role:"option","aria-disabled":e.isDisabled||void 0,"aria-selected":e.itemSelected,onMouseenter:l[0]||(l[0]=(...l)=>e.hoverItem&&e.hoverItem(...l)),onClick:l[1]||(l[1]=w(((...l)=>e.selectOptionClick&&e.selectOptionClick(...l)),["stop"]))},[S(e.$slots,"default",{},(()=>[x("span",null,C(e.currentLabel),1)]))],42,_e)),[[b,e.visible]])}],["__file","option.vue"]]);var Pe=i(r({name:"ElSelectDropdown",componentName:"ElSelectDropdown",setup(){const t=e(Re),a=u("select"),o=l((()=>t.props.popperClass)),s=l((()=>t.props.multiple)),n=l((()=>t.props.fitInputWidth)),i=V("");function r(){var e;i.value=`${null==(e=t.selectRef)?void 0:e.offsetWidth}px`}return I((()=>{r(),E(t.selectRef,r)})),{ns:a,minWidth:i,popperClass:o,isMultiple:s,isFitInputWidth:n}}}),[["render",function(e,l,t,a,o,s){return g(),y("div",{class:O([e.ns.b("dropdown"),e.ns.is("multiple",e.isMultiple),e.popperClass]),style:k({[e.isFitInputWidth?"width":"minWidth"]:e.minWidth})},[e.$slots.header?(g(),y("div",{key:0,class:O(e.ns.be("dropdown","header"))},[S(e.$slots,"header")],2)):T("v-if",!0),S(e.$slots,"default"),e.$slots.footer?(g(),y("div",{key:1,class:O(e.ns.be("dropdown","footer"))},[S(e.$slots,"footer")],2)):T("v-if",!0)],6)}],["__file","select-dropdown.vue"]]);const je=(e,n)=>{const{t:i}=M(),r=p(),d=u("select"),v=u("input"),f=c({inputValue:"",options:new Map,cachedOptions:new Map,disabledOptions:new Map,optionValues:[],selected:e.multiple?[]:{},selectionWidth:0,calculatorWidth:0,collapseItemWidth:0,selectedLabel:"",hoveringIndex:-1,previousQuery:null,inputHovering:!1,menuVisibleOnFocus:!1,isBeforeHide:!1}),h=V(null),b=V(null),g=V(null),y=V(null),S=V(null),x=V(null),C=V(null),O=V(null),w=V(null),T=V(null),k=V(null),J=V(null),{wrapperRef:Z,isFocused:Y,handleFocus:ee,handleBlur:le}=L(S,{afterFocus(){e.automaticDropdown&&!te.value&&(te.value=!0,f.menuVisibleOnFocus=!0)},beforeBlur(e){var l,t;return(null==(l=g.value)?void 0:l.isFocusInsideContent(e))||(null==(t=y.value)?void 0:t.isFocusInsideContent(e))},afterBlur(){te.value=!1,f.menuVisibleOnFocus=!1}}),te=V(!1),ae=V(),{form:oe,formItem:se}=D(),{inputId:ne}=$(e,{formItemContext:se}),{valueOnClear:ie,isEmptyValue:re}=F(e),ue=l((()=>e.disabled||(null==oe?void 0:oe.disabled))),pe=l((()=>e.multiple?z(e.modelValue)&&e.modelValue.length>0:!re(e.modelValue))),de=l((()=>e.clearable&&!ue.value&&f.inputHovering&&pe.value)),ce=l((()=>e.remote&&e.filterable&&!e.remoteShowSuffix?"":e.suffixIcon)),ve=l((()=>d.is("reverse",ce.value&&te.value))),fe=l((()=>(null==se?void 0:se.validateState)||"")),me=l((()=>W[fe.value])),he=l((()=>e.remote?300:0)),be=l((()=>e.loading?e.loadingText||i("el.select.loading"):!(e.remote&&!f.inputValue&&0===f.options.size)&&(e.filterable&&f.inputValue&&f.options.size>0&&0===ge.value?e.noMatchText||i("el.select.noMatch"):0===f.options.size?e.noDataText||i("el.select.noData"):null))),ge=l((()=>ye.value.filter((e=>e.visible)).length)),ye=l((()=>{const e=Array.from(f.options.values()),l=[];return f.optionValues.forEach((t=>{const a=e.findIndex((e=>e.value===t));a>-1&&l.push(e[a])})),l.length>=e.length?l:e})),Se=l((()=>Array.from(f.cachedOptions.values()))),xe=l((()=>{const l=ye.value.filter((e=>!e.created)).some((e=>e.currentLabel===f.inputValue));return e.filterable&&e.allowCreate&&""!==f.inputValue&&!l})),Ce=()=>{e.filterable&&B(e.filterMethod)||e.filterable&&e.remote&&B(e.remoteMethod)||ye.value.forEach((e=>{var l;null==(l=e.updateOption)||l.call(e,f.inputValue)}))},Oe=_(),we=l((()=>["small"].includes(Oe.value)?"small":"default")),Ve=l({get:()=>te.value&&!1!==be.value,set(e){te.value=e}}),Ie=l((()=>z(e.modelValue)?0===e.modelValue.length&&!f.inputValue:!e.filterable||!f.inputValue)),Ee=l((()=>{var l;const t=null!=(l=e.placeholder)?l:i("el.select.placeholder");return e.multiple||!pe.value?t:f.selectedLabel})),Te=l((()=>K?null:"mouseenter"));s((()=>e.modelValue),((l,t)=>{e.multiple&&e.filterable&&!e.reserveKeyword&&(f.inputValue="",ke("")),Be(),!Le(l,t)&&e.validateEvent&&(null==se||se.validate("change").catch((e=>P())))}),{flush:"post",deep:!0}),s((()=>te.value),(e=>{e?ke(f.inputValue):(f.inputValue="",f.previousQuery=null,f.isBeforeHide=!0),n("visible-change",e)})),s((()=>f.options.entries()),(()=>{var l;if(!j)return;const t=(null==(l=h.value)?void 0:l.querySelectorAll("input"))||[];(e.filterable||e.defaultFirstOption||N(e.modelValue))&&Array.from(t).includes(document.activeElement)||Be(),e.defaultFirstOption&&(e.filterable||e.remote)&&ge.value&&Re()}),{flush:"post"}),s((()=>f.hoveringIndex),(e=>{A(e)&&e>-1?ae.value=ye.value[e]||{}:ae.value={},ye.value.forEach((e=>{e.hover=ae.value===e}))})),H((()=>{f.isBeforeHide||Ce()}));const ke=l=>{f.previousQuery!==l&&(f.previousQuery=l,e.filterable&&B(e.filterMethod)?e.filterMethod(l):e.filterable&&e.remote&&B(e.remoteMethod)&&e.remoteMethod(l),e.defaultFirstOption&&(e.filterable||e.remote)&&ge.value?m(Re):m(Fe))},Re=()=>{const e=ye.value.filter((e=>e.visible&&!e.disabled&&!e.states.groupDisabled)),l=e.find((e=>e.created)),t=e[0];f.hoveringIndex=Ue(ye.value,l||t)},Be=()=>{if(!e.multiple){const l=Me(e.modelValue);return f.selectedLabel=l.currentLabel,void(f.selected=l)}f.selectedLabel="";const l=[];z(e.modelValue)&&e.modelValue.forEach((e=>{l.push(Me(e))})),f.selected=l},Me=l=>{let t;const a="object"===q(l).toLowerCase(),s="null"===q(l).toLowerCase(),n="undefined"===q(l).toLowerCase();for(let i=f.cachedOptions.size-1;i>=0;i--){const s=Se.value[i];if(a?o(s.value,e.valueKey)===o(l,e.valueKey):s.value===l){t={value:l,currentLabel:s.currentLabel,get isDisabled(){return s.isDisabled}};break}}if(t)return t;return{value:l,currentLabel:a?l.label:s||n?"":l}},Fe=()=>{e.multiple?f.hoveringIndex=ye.value.findIndex((e=>f.selected.some((l=>tl(l)===tl(e))))):f.hoveringIndex=ye.value.findIndex((e=>tl(e)===tl(f.selected)))},ze=()=>{f.calculatorWidth=x.value.getBoundingClientRect().width},We=()=>{var e,l;null==(l=null==(e=g.value)?void 0:e.updatePopper)||l.call(e)},_e=()=>{var e,l;null==(l=null==(e=y.value)?void 0:e.updatePopper)||l.call(e)},Ke=()=>{f.inputValue.length>0&&!te.value&&(te.value=!0),ke(f.inputValue)},Pe=l=>{if(f.inputValue=l.target.value,!e.remote)return Ke();je()},je=De((()=>{Ke()}),he.value),Ne=l=>{Le(e.modelValue,l)||n(X,l)},Ae=e=>function(e,l){var t=null==e?0:e.length;if(!t)return-1;var a=t-1;return function(e,l,t){e.length;for(var a=t+1;a--;)if(l(e[a],a,e))return a;return-1}(e,$e(l),a)}(e,(e=>!f.disabledOptions.has(e))),He=l=>{l.stopPropagation();const t=e.multiple?[]:ie.value;if(e.multiple)for(const e of f.selected)e.isDisabled&&t.push(e.value);n(U,t),Ne(t),f.hoveringIndex=-1,te.value=!1,n("clear"),Ye()},qe=l=>{if(e.multiple){const t=(e.modelValue||[]).slice(),a=Ue(t,l.value);a>-1?t.splice(a,1):(e.multipleLimit<=0||t.length{Ge(l)}))},Ue=(l=[],s)=>{if(!t(s))return l.indexOf(s);const n=e.valueKey;let i=-1;return l.some(((e,l)=>a(o(e,n))===o(s,n)&&(i=l,!0))),i},Ge=e=>{var l,t,a,o,s;const n=z(e)?e[0]:e;let i=null;if(null==n?void 0:n.value){const e=ye.value.filter((e=>e.value===n.value));e.length>0&&(i=e[0].$el)}if(g.value&&i){const e=null==(o=null==(a=null==(t=null==(l=g.value)?void 0:l.popperRef)?void 0:t.contentRef)?void 0:a.querySelector)?void 0:o.call(a,`.${d.be("dropdown","wrap")}`);e&&Q(e,i)}null==(s=J.value)||s.handleScroll()},{handleCompositionStart:Qe,handleCompositionUpdate:Xe,handleCompositionEnd:Je}=function(e){const l=V(!1);return{handleCompositionStart:()=>{l.value=!0},handleCompositionUpdate:e=>{const t=e.target.value,a=t[t.length-1]||"";l.value=!R(a)},handleCompositionEnd:t=>{l.value&&(l.value=!1,B(e)&&e(t))}}}((e=>Pe(e))),Ze=l((()=>{var e,l;return null==(l=null==(e=g.value)?void 0:e.popperRef)?void 0:l.contentRef})),Ye=()=>{var e;null==(e=S.value)||e.focus()},el=e=>{if(te.value=!1,Y.value){const l=new FocusEvent("focus",e);m((()=>le(l)))}},ll=()=>{ue.value||(K&&(f.inputHovering=!0),f.menuVisibleOnFocus?f.menuVisibleOnFocus=!1:te.value=!te.value)},tl=l=>t(l.value)?o(l.value,e.valueKey):l.value,al=l((()=>ye.value.filter((e=>e.visible)).every((e=>e.disabled)))),ol=l((()=>e.multiple?e.collapseTags?f.selected.slice(0,e.maxCollapseTags):f.selected:[])),sl=l((()=>e.multiple&&e.collapseTags?f.selected.slice(e.maxCollapseTags):[])),nl=e=>{if(te.value){if(0!==f.options.size&&0!==ge.value&&!al.value){"next"===e?(f.hoveringIndex++,f.hoveringIndex===f.options.size&&(f.hoveringIndex=0)):"prev"===e&&(f.hoveringIndex--,f.hoveringIndex<0&&(f.hoveringIndex=f.options.size-1));const l=ye.value[f.hoveringIndex];!0!==l.disabled&&!0!==l.states.groupDisabled&&l.visible||nl(e),m((()=>Ge(ae.value)))}}else te.value=!0},il=l((()=>{const l=(()=>{if(!b.value)return 0;const e=window.getComputedStyle(b.value);return Number.parseFloat(e.gap||"6px")})();return{maxWidth:`${k.value&&1===e.maxCollapseTags?f.selectionWidth-f.collapseItemWidth-l:f.selectionWidth}px`}})),rl=l((()=>({maxWidth:`${f.selectionWidth}px`}))),ul=l((()=>({width:`${Math.max(f.calculatorWidth,11)}px`})));return e.multiple&&!z(e.modelValue)&&n(U,[]),!e.multiple&&z(e.modelValue)&&n(U,""),E(b,(()=>{f.selectionWidth=b.value.getBoundingClientRect().width})),E(x,ze),E(w,We),E(Z,We),E(T,_e),E(k,(()=>{f.collapseItemWidth=k.value.getBoundingClientRect().width})),I((()=>{Be()})),{inputId:ne,contentId:r,nsSelect:d,nsInput:v,states:f,isFocused:Y,expanded:te,optionsArray:ye,hoverOption:ae,selectSize:Oe,filteredOptionsCount:ge,resetCalculatorWidth:ze,updateTooltip:We,updateTagTooltip:_e,debouncedOnInputChange:je,onInput:Pe,deletePrevTag:l=>{if(e.multiple&&l.code!==G.delete&&l.target.value.length<=0){const l=e.modelValue.slice(),t=Ae(l);if(t<0)return;const a=l[t];l.splice(t,1),n(U,l),Ne(l),n("remove-tag",a)}},deleteTag:(l,t)=>{const a=f.selected.indexOf(t);if(a>-1&&!ue.value){const l=e.modelValue.slice();l.splice(a,1),n(U,l),Ne(l),n("remove-tag",t.value)}l.stopPropagation(),Ye()},deleteSelected:He,handleOptionSelect:qe,scrollToOption:Ge,hasModelValue:pe,shouldShowPlaceholder:Ie,currentPlaceholder:Ee,mouseEnterEventName:Te,showClose:de,iconComponent:ce,iconReverse:ve,validateState:fe,validateIcon:me,showNewOption:xe,updateOptions:Ce,collapseTagSize:we,setSelected:Be,selectDisabled:ue,emptyText:be,handleCompositionStart:Qe,handleCompositionUpdate:Xe,handleCompositionEnd:Je,onOptionCreate:e=>{f.options.set(e.value,e),f.cachedOptions.set(e.value,e),e.disabled&&f.disabledOptions.set(e.value,e)},onOptionDestroy:(e,l)=>{f.options.get(e)===l&&f.options.delete(e)},handleMenuEnter:()=>{f.isBeforeHide=!1,m((()=>Ge(f.selected)))},handleFocus:ee,focus:Ye,blur:()=>{el()},handleBlur:le,handleClearClick:e=>{He(e)},handleClickOutside:el,handleEsc:()=>{f.inputValue.length>0?f.inputValue="":te.value=!1},toggleMenu:ll,selectOption:()=>{te.value?ye.value[f.hoveringIndex]&&qe(ye.value[f.hoveringIndex]):ll()},getValueKey:tl,navigateOptions:nl,dropdownMenuVisible:Ve,showTagList:ol,collapseTagList:sl,tagStyle:il,collapseTagStyle:rl,inputStyle:ul,popperRef:Ze,inputRef:S,tooltipRef:g,tagTooltipRef:y,calculatorRef:x,prefixRef:C,suffixRef:O,selectRef:h,wrapperRef:Z,selectionRef:b,scrollbarRef:J,menuRef:w,tagMenuRef:T,collapseItemRef:k}};var Ne=r({name:"ElOptions",setup(l,{slots:t}){const a=e(Re);let o=[];return()=>{var e,l;const s=null==(e=t.default)?void 0:e.call(t),n=[];return s.length&&function e(l){z(l)&&l.forEach((l=>{var t,a,o,s;const i=null==(t=(null==l?void 0:l.type)||{})?void 0:t.name;"ElOptionGroup"===i?e(J(l.children)||z(l.children)||!B(null==(a=l.children)?void 0:a.default)?l.children:null==(o=l.children)?void 0:o.default()):"ElOption"===i?n.push(null==(s=l.props)?void 0:s.value):z(l.children)&&e(l.children)}))}(null==(l=s[0])?void 0:l.children),Le(n,o)||(o=n,a&&(a.states.optionValues=n)),s}}});const Ae="ElSelect",He=r({name:Ae,componentName:Ae,components:{ElInput:ne,ElSelectMenu:Pe,ElOption:Ke,ElOptions:Ne,ElTag:ke,ElScrollbar:Ee,ElTooltip:Ie,ElIcon:ie},directives:{ClickOutside:Fe},props:Z({name:String,id:String,modelValue:{type:[Array,String,Number,Boolean,Object],default:void 0},autocomplete:{type:String,default:"off"},automaticDropdown:Boolean,size:Y,effect:{type:ee(String),default:"light"},disabled:Boolean,clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:{type:String,default:""},popperOptions:{type:ee(Object),default:()=>({})},remote:Boolean,loadingText:String,noMatchText:String,noDataText:String,remoteMethod:Function,filterMethod:Function,multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String},defaultFirstOption:Boolean,reserveKeyword:{type:Boolean,default:!0},valueKey:{type:String,default:"value"},collapseTags:Boolean,collapseTagsTooltip:Boolean,maxCollapseTags:{type:Number,default:1},teleported:we.teleported,persistent:{type:Boolean,default:!0},clearIcon:{type:le,default:te},fitInputWidth:Boolean,suffixIcon:{type:le,default:ae},tagType:{...Te.type,default:"info"},tagEffect:{...Te.effect,default:"light"},validateEvent:{type:Boolean,default:!0},remoteShowSuffix:Boolean,placement:{type:ee(String),values:Ve,default:"bottom-start"},fallbackPlacements:{type:ee(Array),default:["bottom-start","top-start","right","left"]},...oe,...se(["ariaLabel"])}),emits:[U,X,"remove-tag","clear","visible-change","focus","blur"],setup(e,{emit:l}){const t=je(e,l);return re(Re,c({props:e,states:t.states,optionsArray:t.optionsArray,handleOptionSelect:t.handleOptionSelect,onOptionCreate:t.onOptionCreate,onOptionDestroy:t.onOptionDestroy,selectRef:t.selectRef,setSelected:t.setSelected})),{...t}}}),qe=["id","name","disabled","autocomplete","readonly","aria-activedescendant","aria-controls","aria-expanded","aria-label"],Ue=["textContent"],Ge={key:1};var Qe=i(He,[["render",function(e,l,t,a,o,s){const n=ue("el-tag"),i=ue("el-tooltip"),r=ue("el-icon"),u=ue("el-option"),p=ue("el-options"),d=ue("el-scrollbar"),c=ue("el-select-menu"),v=pe("click-outside");return h((g(),y("div",{ref:"selectRef",class:O([e.nsSelect.b(),e.nsSelect.m(e.selectSize)]),[Se(e.mouseEnterEventName)]:l[16]||(l[16]=l=>e.states.inputHovering=!0),onMouseleave:l[17]||(l[17]=l=>e.states.inputHovering=!1),onClick:l[18]||(l[18]=w(((...l)=>e.toggleMenu&&e.toggleMenu(...l)),["prevent","stop"]))},[de(i,{ref:"tooltipRef",visible:e.dropdownMenuVisible,placement:e.placement,teleported:e.teleported,"popper-class":[e.nsSelect.e("popper"),e.popperClass],"popper-options":e.popperOptions,"fallback-placements":e.fallbackPlacements,effect:e.effect,pure:"",trigger:"click",transition:`${e.nsSelect.namespace.value}-zoom-in-top`,"stop-popper-mouse-event":!1,"gpu-acceleration":!1,persistent:e.persistent,onBeforeShow:e.handleMenuEnter,onHide:l[15]||(l[15]=l=>e.states.isBeforeHide=!1)},{default:ce((()=>{var t;return[x("div",{ref:"wrapperRef",class:O([e.nsSelect.e("wrapper"),e.nsSelect.is("focused",e.isFocused),e.nsSelect.is("hovering",e.states.inputHovering),e.nsSelect.is("filterable",e.filterable),e.nsSelect.is("disabled",e.selectDisabled)])},[e.$slots.prefix?(g(),y("div",{key:0,ref:"prefixRef",class:O(e.nsSelect.e("prefix"))},[S(e.$slots,"prefix")],2)):T("v-if",!0),x("div",{ref:"selectionRef",class:O([e.nsSelect.e("selection"),e.nsSelect.is("near",e.multiple&&!e.$slots.prefix&&!!e.states.selected.length)])},[e.multiple?S(e.$slots,"tag",{key:0},(()=>[(g(!0),y(ve,null,fe(e.showTagList,(l=>(g(),y("div",{key:e.getValueKey(l),class:O(e.nsSelect.e("selected-item"))},[de(n,{closable:!e.selectDisabled&&!l.isDisabled,size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,"disable-transitions":"",style:k(e.tagStyle),onClose:t=>e.deleteTag(t,l)},{default:ce((()=>[x("span",{class:O(e.nsSelect.e("tags-text"))},[S(e.$slots,"label",{label:l.currentLabel,value:l.value},(()=>[me(C(l.currentLabel),1)]))],2)])),_:2},1032,["closable","size","type","effect","style","onClose"])],2)))),128)),e.collapseTags&&e.states.selected.length>e.maxCollapseTags?(g(),he(i,{key:0,ref:"tagTooltipRef",disabled:e.dropdownMenuVisible||!e.collapseTagsTooltip,"fallback-placements":["bottom","top","right","left"],effect:e.effect,placement:"bottom",teleported:e.teleported},{default:ce((()=>[x("div",{ref:"collapseItemRef",class:O(e.nsSelect.e("selected-item"))},[de(n,{closable:!1,size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,"disable-transitions":"",style:k(e.collapseTagStyle)},{default:ce((()=>[x("span",{class:O(e.nsSelect.e("tags-text"))}," + "+C(e.states.selected.length-e.maxCollapseTags),3)])),_:1},8,["size","type","effect","style"])],2)])),content:ce((()=>[x("div",{ref:"tagMenuRef",class:O(e.nsSelect.e("selection"))},[(g(!0),y(ve,null,fe(e.collapseTagList,(l=>(g(),y("div",{key:e.getValueKey(l),class:O(e.nsSelect.e("selected-item"))},[de(n,{class:"in-tooltip",closable:!e.selectDisabled&&!l.isDisabled,size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,"disable-transitions":"",onClose:t=>e.deleteTag(t,l)},{default:ce((()=>[x("span",{class:O(e.nsSelect.e("tags-text"))},[S(e.$slots,"label",{label:l.currentLabel,value:l.value},(()=>[me(C(l.currentLabel),1)]))],2)])),_:2},1032,["closable","size","type","effect","onClose"])],2)))),128))],2)])),_:3},8,["disabled","effect","teleported"])):T("v-if",!0)])):T("v-if",!0),e.selectDisabled?T("v-if",!0):(g(),y("div",{key:1,class:O([e.nsSelect.e("selected-item"),e.nsSelect.e("input-wrapper"),e.nsSelect.is("hidden",!e.filterable)])},[h(x("input",{id:e.inputId,ref:"inputRef","onUpdate:modelValue":l[0]||(l[0]=l=>e.states.inputValue=l),type:"text",name:e.name,class:O([e.nsSelect.e("input"),e.nsSelect.is(e.selectSize)]),disabled:e.selectDisabled,autocomplete:e.autocomplete,style:k(e.inputStyle),role:"combobox",readonly:!e.filterable,spellcheck:"false","aria-activedescendant":(null==(t=e.hoverOption)?void 0:t.id)||"","aria-controls":e.contentId,"aria-expanded":e.dropdownMenuVisible,"aria-label":e.ariaLabel,"aria-autocomplete":"none","aria-haspopup":"listbox",onFocus:l[1]||(l[1]=(...l)=>e.handleFocus&&e.handleFocus(...l)),onBlur:l[2]||(l[2]=(...l)=>e.handleBlur&&e.handleBlur(...l)),onKeydown:[l[3]||(l[3]=be(w((l=>e.navigateOptions("next")),["stop","prevent"]),["down"])),l[4]||(l[4]=be(w((l=>e.navigateOptions("prev")),["stop","prevent"]),["up"])),l[5]||(l[5]=be(w(((...l)=>e.handleEsc&&e.handleEsc(...l)),["stop","prevent"]),["esc"])),l[6]||(l[6]=be(w(((...l)=>e.selectOption&&e.selectOption(...l)),["stop","prevent"]),["enter"])),l[7]||(l[7]=be(w(((...l)=>e.deletePrevTag&&e.deletePrevTag(...l)),["stop"]),["delete"]))],onCompositionstart:l[8]||(l[8]=(...l)=>e.handleCompositionStart&&e.handleCompositionStart(...l)),onCompositionupdate:l[9]||(l[9]=(...l)=>e.handleCompositionUpdate&&e.handleCompositionUpdate(...l)),onCompositionend:l[10]||(l[10]=(...l)=>e.handleCompositionEnd&&e.handleCompositionEnd(...l)),onInput:l[11]||(l[11]=(...l)=>e.onInput&&e.onInput(...l)),onClick:l[12]||(l[12]=w(((...l)=>e.toggleMenu&&e.toggleMenu(...l)),["stop"]))},null,46,qe),[[ge,e.states.inputValue]]),e.filterable?(g(),y("span",{key:0,ref:"calculatorRef","aria-hidden":"true",class:O(e.nsSelect.e("input-calculator")),textContent:C(e.states.inputValue)},null,10,Ue)):T("v-if",!0)],2)),e.shouldShowPlaceholder?(g(),y("div",{key:2,class:O([e.nsSelect.e("selected-item"),e.nsSelect.e("placeholder"),e.nsSelect.is("transparent",!e.hasModelValue||e.expanded&&!e.states.inputValue)])},[e.hasModelValue?S(e.$slots,"label",{key:0,label:e.currentPlaceholder,value:e.modelValue},(()=>[x("span",null,C(e.currentPlaceholder),1)])):(g(),y("span",Ge,C(e.currentPlaceholder),1))],2)):T("v-if",!0)],2),x("div",{ref:"suffixRef",class:O(e.nsSelect.e("suffix"))},[e.iconComponent&&!e.showClose?(g(),he(r,{key:0,class:O([e.nsSelect.e("caret"),e.nsSelect.e("icon"),e.iconReverse])},{default:ce((()=>[(g(),he(ye(e.iconComponent)))])),_:1},8,["class"])):T("v-if",!0),e.showClose&&e.clearIcon?(g(),he(r,{key:1,class:O([e.nsSelect.e("caret"),e.nsSelect.e("icon")]),onClick:e.handleClearClick},{default:ce((()=>[(g(),he(ye(e.clearIcon)))])),_:1},8,["class","onClick"])):T("v-if",!0),e.validateState&&e.validateIcon?(g(),he(r,{key:2,class:O([e.nsInput.e("icon"),e.nsInput.e("validateIcon")])},{default:ce((()=>[(g(),he(ye(e.validateIcon)))])),_:1},8,["class"])):T("v-if",!0)],2)],2)]})),content:ce((()=>[de(c,{ref:"menuRef"},{default:ce((()=>[e.$slots.header?(g(),y("div",{key:0,class:O(e.nsSelect.be("dropdown","header")),onClick:l[13]||(l[13]=w((()=>{}),["stop"]))},[S(e.$slots,"header")],2)):T("v-if",!0),h(de(d,{id:e.contentId,ref:"scrollbarRef",tag:"ul","wrap-class":e.nsSelect.be("dropdown","wrap"),"view-class":e.nsSelect.be("dropdown","list"),class:O([e.nsSelect.is("empty",0===e.filteredOptionsCount)]),role:"listbox","aria-label":e.ariaLabel,"aria-orientation":"vertical"},{default:ce((()=>[e.showNewOption?(g(),he(u,{key:0,value:e.states.inputValue,created:!0},null,8,["value"])):T("v-if",!0),de(p,null,{default:ce((()=>[S(e.$slots,"default")])),_:3})])),_:3},8,["id","wrap-class","view-class","class","aria-label"]),[[b,e.states.options.size>0&&!e.loading]]),e.$slots.loading&&e.loading?(g(),y("div",{key:1,class:O(e.nsSelect.be("dropdown","loading"))},[S(e.$slots,"loading")],2)):e.loading||0===e.filteredOptionsCount?(g(),y("div",{key:2,class:O(e.nsSelect.be("dropdown","empty"))},[S(e.$slots,"empty",{},(()=>[x("span",null,C(e.emptyText),1)]))],2)):T("v-if",!0),e.$slots.footer?(g(),y("div",{key:3,class:O(e.nsSelect.be("dropdown","footer")),onClick:l[14]||(l[14]=w((()=>{}),["stop"]))},[S(e.$slots,"footer")],2)):T("v-if",!0)])),_:3},512)])),_:3},8,["visible","placement","teleported","popper-class","popper-options","fallback-placements","effect","transition","persistent","onBeforeShow"])],16)),[[v,e.handleClickOutside,e.popperRef]])}],["__file","select.vue"]]);var Xe=i(r({name:"ElOptionGroup",componentName:"ElOptionGroup",props:{label:String,disabled:Boolean},setup(e){const t=u("select"),a=V(null),o=n(),s=V([]);re(Be,c({...v(e)}));const i=l((()=>s.value.some((e=>!0===e.visible)))),r=e=>{const l=ze(e),t=[];return l.forEach((e=>{var l,a;(e=>{var l,t;return"ElOption"===(null==(l=e.type)?void 0:l.name)&&!!(null==(t=e.component)?void 0:t.proxy)})(e)?t.push(e.component.proxy):(null==(l=e.children)?void 0:l.length)?t.push(...r(e.children)):(null==(a=e.component)?void 0:a.subTree)&&t.push(...r(e.component.subTree))})),t},p=()=>{s.value=r(o.subTree)};return I((()=>{p()})),xe(a,p,{attributes:!0,subtree:!0,childList:!0}),{groupRef:a,visible:i,ns:t}}}),[["render",function(e,l,t,a,o,s){return h((g(),y("ul",{ref:"groupRef",class:O(e.ns.be("group","wrap"))},[x("li",{class:O(e.ns.be("group","title"))},C(e.label),3),x("li",null,[x("ul",{class:O(e.ns.b("group"))},[S(e.$slots,"default")],2)])],2)),[[b,e.visible]])}],["__file","option-group.vue"]]);const Je=Ce(Qe,{Option:Ke,OptionGroup:Xe}),Ze=Oe(Ke);Oe(Xe);export{Ze as E,Je as a}; diff --git a/resources/views/dist/js/el-switch.BvIaL9AI.js b/resources/views/dist/js/el-switch.BvIaL9AI.js new file mode 100644 index 0000000..e85be1c --- /dev/null +++ b/resources/views/dist/js/el-switch.BvIaL9AI.js @@ -0,0 +1 @@ +import{v as e,cm as a,x as i,A as t,M as n,U as l,c9 as c,N as s,bK as o,P as v,bg as d,d as u,W as r,X as f,b as p,Z as b,Y as m,c as y,r as h,K as k,J as g,ac as x,o as I,a1 as V,e as S,h as w,C as T,g as _,i as C,a4 as A,f as B,w as N,D as P,E,p as K,F as j,l as F,bk as L,k as U,n as $,j as q,_ as z,a2 as D,cn as J,t as M,q as W}from"./index.DMBpWXpT.js";const X=e({modelValue:{type:[Boolean,String,Number],default:!1},disabled:Boolean,loading:Boolean,size:{type:String,validator:a},width:{type:[String,Number],default:""},inlinePrompt:Boolean,inactiveActionIcon:{type:i},activeActionIcon:{type:i},activeIcon:{type:i},inactiveIcon:{type:i},activeText:{type:String,default:""},inactiveText:{type:String,default:""},activeValue:{type:[Boolean,String,Number],default:!0},inactiveValue:{type:[Boolean,String,Number],default:!1},name:{type:String,default:""},validateEvent:{type:Boolean,default:!0},beforeChange:{type:t(Function)},id:String,tabindex:{type:[String,Number]},label:{type:String,default:void 0},...n(["ariaLabel"])}),Y={[l]:e=>c(e)||s(e)||o(e),[v]:e=>c(e)||s(e)||o(e),[d]:e=>c(e)||s(e)||o(e)},Z=["onClick"],G=["id","aria-checked","aria-disabled","aria-label","name","true-value","false-value","disabled","tabindex","onKeydown"],H=["aria-hidden"],O=["aria-hidden"],Q=["aria-hidden"],R="ElSwitch",ee=u({name:R});const ae=W(z(u({...ee,props:X,emits:Y,setup(e,{expose:a,emit:i}){const t=e,{formItem:n}=r(),s=f(),o=p("switch"),{inputId:u}=b(t,{formItemContext:n}),z=m(y((()=>t.loading))),W=h(!1!==t.modelValue),X=h(),Y=h(),ee=y((()=>[o.b(),o.m(s.value),o.is("disabled",z.value),o.is("checked",le.value)])),ae=y((()=>[o.e("label"),o.em("label","left"),o.is("active",!le.value)])),ie=y((()=>[o.e("label"),o.em("label","right"),o.is("active",le.value)])),te=y((()=>({width:k(t.width)})));g((()=>t.modelValue),(()=>{W.value=!0}));const ne=y((()=>!!W.value&&t.modelValue)),le=y((()=>ne.value===t.activeValue));[t.activeValue,t.inactiveValue].includes(ne.value)||(i(l,t.inactiveValue),i(v,t.inactiveValue),i(d,t.inactiveValue)),g(le,(e=>{var a;X.value.checked=e,t.validateEvent&&(null==(a=null==n?void 0:n.validate)||a.call(n,"change").catch((e=>x())))}));const ce=()=>{const e=le.value?t.inactiveValue:t.activeValue;i(l,e),i(v,e),i(d,e),D((()=>{X.value.checked=le.value}))},se=()=>{if(z.value)return;const{beforeChange:e}=t;if(!e)return void ce();const a=e();[J(a),c(a)].includes(!0)||M(R,"beforeChange must return type `Promise` or `boolean`"),J(a)?a.then((e=>{e&&ce()})).catch((e=>{})):a&&ce()};return I((()=>{X.value.checked=le.value})),V({from:"label",replacement:"aria-label",version:"2.8.0",scope:"el-switch",ref:"https://element-plus.org/en-US/component/switch.html"},y((()=>!!t.label))),a({focus:()=>{var e,a;null==(a=null==(e=X.value)?void 0:e.focus)||a.call(e)},checked:le}),(e,a)=>(S(),w("div",{class:C(_(ee)),onClick:q(se,["prevent"])},[T("input",{id:_(u),ref_key:"input",ref:X,class:C(_(o).e("input")),type:"checkbox",role:"switch","aria-checked":_(le),"aria-disabled":_(z),"aria-label":e.label||e.ariaLabel,name:e.name,"true-value":e.activeValue,"false-value":e.inactiveValue,disabled:_(z),tabindex:e.tabindex,onChange:ce,onKeydown:A(se,["enter"])},null,42,G),e.inlinePrompt||!e.inactiveIcon&&!e.inactiveText?K("v-if",!0):(S(),w("span",{key:0,class:C(_(ae))},[e.inactiveIcon?(S(),B(_(E),{key:0},{default:N((()=>[(S(),B(P(e.inactiveIcon)))])),_:1})):K("v-if",!0),!e.inactiveIcon&&e.inactiveText?(S(),w("span",{key:1,"aria-hidden":_(le)},j(e.inactiveText),9,H)):K("v-if",!0)],2)),T("span",{ref_key:"core",ref:Y,class:C(_(o).e("core")),style:$(_(te))},[e.inlinePrompt?(S(),w("div",{key:0,class:C(_(o).e("inner"))},[e.activeIcon||e.inactiveIcon?(S(),B(_(E),{key:0,class:C(_(o).is("icon"))},{default:N((()=>[(S(),B(P(_(le)?e.activeIcon:e.inactiveIcon)))])),_:1},8,["class"])):e.activeText||e.inactiveText?(S(),w("span",{key:1,class:C(_(o).is("text")),"aria-hidden":!_(le)},j(_(le)?e.activeText:e.inactiveText),11,O)):K("v-if",!0)],2)):K("v-if",!0),T("div",{class:C(_(o).e("action"))},[e.loading?(S(),B(_(E),{key:0,class:C(_(o).is("loading"))},{default:N((()=>[F(_(L))])),_:1},8,["class"])):_(le)?U(e.$slots,"active-action",{key:1},(()=>[e.activeActionIcon?(S(),B(_(E),{key:0},{default:N((()=>[(S(),B(P(e.activeActionIcon)))])),_:1})):K("v-if",!0)])):_(le)?K("v-if",!0):U(e.$slots,"inactive-action",{key:2},(()=>[e.inactiveActionIcon?(S(),B(_(E),{key:0},{default:N((()=>[(S(),B(P(e.inactiveActionIcon)))])),_:1})):K("v-if",!0)]))],2)],6),e.inlinePrompt||!e.activeIcon&&!e.activeText?K("v-if",!0):(S(),w("span",{key:1,class:C(_(ie))},[e.activeIcon?(S(),B(_(E),{key:0},{default:N((()=>[(S(),B(P(e.activeIcon)))])),_:1})):K("v-if",!0),!e.activeIcon&&e.activeText?(S(),w("span",{key:1,"aria-hidden":!_(le)},j(e.activeText),9,Q)):K("v-if",!0)],2))],10,Z))}}),[["__file","switch.vue"]]));export{ae as E}; diff --git a/resources/views/dist/js/el-tab-pane.Dc62g1GH.js b/resources/views/dist/js/el-tab-pane.Dc62g1GH.js new file mode 100644 index 0000000..ac50a91 --- /dev/null +++ b/resources/views/dist/js/el-tab-pane.Dc62g1GH.js @@ -0,0 +1 @@ +import{s as e,ar as a,dH as t,v as l,A as s,ao as o,d as n,B as r,t as i,b as u,r as d,J as c,a2 as v,aq as b,e as p,h as f,i as m,g as h,n as y,_ as g,G as C,dI as $,dJ as x,c as P,o as w,co as k,l as T,E as B,bo as N,ak as S,ab as R,ad as E,z as A,k as F,dt as K,U as _,bp as q,N as L,bK as j,ae as z,dK as H,a0 as V,dj as J,a3 as M,aa as G,p as I,q as O,H as U}from"./index.DMBpWXpT.js";import{c as W}from"./strings.DeQ3Zoz4.js";const X=(l,s)=>{const o={},n=e([]);return{children:n,addChild:e=>{o[e.uid]=e,n.value=((e,l,s)=>a(e.subTree).filter((e=>{var a;return t(e)&&(null==(a=e.type)?void 0:a.name)===l&&!!e.component})).map((e=>e.component.uid)).map((e=>s[e])).filter((e=>!!e)))(l,s,o)},removeChild:e=>{delete o[e],n.value=n.value.filter((a=>a.uid!==e))}}},Y=Symbol("tabsRootContextKey"),D=l({tabs:{type:s(Array),default:()=>o([])}}),Q="ElTabBar",Z=n({name:Q});var ee=g(n({...Z,props:D,setup(e,{expose:a}){const t=e,l=C(),s=r(Y);s||i(Q,"");const o=u("tabs"),n=d(),g=d(),$=()=>g.value=(()=>{let e=0,a=0;const o=["top","bottom"].includes(s.props.tabPosition)?"width":"height",n="width"===o?"x":"y",r="x"===n?"left":"top";return t.tabs.every((t=>{var s,n;const i=null==(n=null==(s=l.parent)?void 0:s.refs)?void 0:n[`tab-${t.uid}`];if(!i)return!1;if(!t.active)return!0;e=i[`offset${W(r)}`],a=i[`client${W(o)}`];const u=window.getComputedStyle(i);return"width"===o&&(a-=Number.parseFloat(u.paddingLeft)+Number.parseFloat(u.paddingRight),e+=Number.parseFloat(u.paddingLeft)),!1})),{[o]:`${a}px`,transform:`translate${W(n)}(${e}px)`}})();return c((()=>t.tabs),(async()=>{await v(),$()}),{immediate:!0}),b(n,(()=>$())),a({ref:n,update:$}),(e,a)=>(p(),f("div",{ref_key:"barRef",ref:n,class:m([h(o).e("active-bar"),h(o).is(h(s).props.tabPosition)]),style:y(g.value)},null,6))}}),[["__file","tab-bar.vue"]]);const ae=l({panes:{type:s(Array),default:()=>o([])},currentName:{type:[String,Number],default:""},editable:Boolean,type:{type:String,values:["card","border-card",""],default:""},stretch:Boolean}),te="ElTabNav",le=n({name:te,props:ae,emits:{tabClick:(e,a,t)=>t instanceof Event,tabRemove:(e,a)=>a instanceof Event},setup(e,{expose:a,emit:t}){const l=C(),s=r(Y);s||i(te,"");const o=u("tabs"),n=$(),p=x(),f=d(),m=d(),h=d(),y=d(),g=d(!1),A=d(0),F=d(!1),K=d(!0),_=P((()=>["top","bottom"].includes(s.props.tabPosition)?"width":"height")),q=P((()=>({transform:`translate${"width"===_.value?"X":"Y"}(-${A.value}px)`}))),L=()=>{if(!f.value)return;const e=f.value[`offset${W(_.value)}`],a=A.value;if(!a)return;const t=a>e?a-e:0;A.value=t},j=()=>{if(!f.value||!m.value)return;const e=m.value[`offset${W(_.value)}`],a=f.value[`offset${W(_.value)}`],t=A.value;if(e-t<=a)return;const l=e-t>2*a?t+a:e-a;A.value=l},z=async()=>{const e=m.value;if(!(g.value&&h.value&&f.value&&e))return;await v();const a=h.value.querySelector(".is-active");if(!a)return;const t=f.value,l=["top","bottom"].includes(s.props.tabPosition),o=a.getBoundingClientRect(),n=t.getBoundingClientRect(),r=l?e.offsetWidth-n.width:e.offsetHeight-n.height,i=A.value;let u=i;l?(o.leftn.right&&(u=i+o.right-n.right)):(o.topn.bottom&&(u=i+(o.bottom-n.bottom))),u=Math.max(u,0),A.value=Math.min(u,r)},H=()=>{var a;if(!m.value||!f.value)return;e.stretch&&(null==(a=y.value)||a.update());const t=m.value[`offset${W(_.value)}`],l=f.value[`offset${W(_.value)}`],s=A.value;l0&&(A.value=0))},V=e=>{const a=e.code,{up:t,down:l,left:s,right:o}=E;if(![t,l,s,o].includes(a))return;const n=Array.from(e.currentTarget.querySelectorAll("[role=tab]:not(.is-disabled)")),r=n.indexOf(e.target);let i;i=a===s||a===t?0===r?n.length-1:r-1:r{K.value&&(F.value=!0)},M=()=>F.value=!1;return c(n,(e=>{"hidden"===e?K.value=!1:"visible"===e&&setTimeout((()=>K.value=!0),50)})),c(p,(e=>{e?setTimeout((()=>K.value=!0),50):K.value=!1})),b(h,H),w((()=>setTimeout((()=>z()),0))),k((()=>H())),a({scrollToActiveTab:z,removeFocus:M}),c((()=>e.panes),(()=>l.update()),{flush:"post",deep:!0}),()=>{const a=g.value?[T("span",{class:[o.e("nav-prev"),o.is("disabled",!g.value.prev)],onClick:L},[T(B,null,{default:()=>[T(N,null,null)]})]),T("span",{class:[o.e("nav-next"),o.is("disabled",!g.value.next)],onClick:j},[T(B,null,{default:()=>[T(S,null,null)]})])]:null,l=e.panes.map(((a,l)=>{var n,r,i,u;const d=a.uid,c=a.props.disabled,v=null!=(r=null!=(n=a.props.name)?n:a.index)?r:`${l}`,b=!c&&(a.isClosable||e.editable);a.index=`${l}`;const p=b?T(B,{class:"is-icon-close",onClick:e=>t("tabRemove",a,e)},{default:()=>[T(R,null,null)]}):null,f=(null==(u=(i=a.slots).label)?void 0:u.call(i))||a.props.label,m=!c&&a.active?0:-1;return T("div",{ref:`tab-${d}`,class:[o.e("item"),o.is(s.props.tabPosition),o.is("active",a.active),o.is("disabled",c),o.is("closable",b),o.is("focus",F.value)],id:`tab-${v}`,key:`tab-${d}`,"aria-controls":`pane-${v}`,role:"tab","aria-selected":a.active,tabindex:m,onFocus:()=>J(),onBlur:()=>M(),onClick:e=>{M(),t("tabClick",a,v,e)},onKeydown:e=>{!b||e.code!==E.delete&&e.code!==E.backspace||t("tabRemove",a,e)}},[f,p])}));return T("div",{ref:h,class:[o.e("nav-wrap"),o.is("scrollable",!!g.value),o.is(s.props.tabPosition)]},[a,T("div",{class:o.e("nav-scroll"),ref:f},[T("div",{class:[o.e("nav"),o.is(s.props.tabPosition),o.is("stretch",e.stretch&&["top","bottom"].includes(s.props.tabPosition))],ref:m,style:q.value,role:"tablist",onKeydown:V},[e.type?null:T(ee,{ref:y,tabs:[...e.panes]},null),l])])])}}}),se=l({type:{type:String,values:["card","border-card",""],default:""},closable:Boolean,addable:Boolean,modelValue:{type:[String,Number]},editable:Boolean,tabPosition:{type:String,values:["top","right","bottom","left"],default:"top"},beforeLeave:{type:s(Function),default:()=>!0},stretch:Boolean}),oe=e=>L(e)||j(e),ne=n({name:"ElTabs",props:se,emits:{[_]:e=>oe(e),tabClick:(e,a)=>a instanceof Event,tabChange:e=>oe(e),edit:(e,a)=>["remove","add"].includes(a),tabRemove:e=>oe(e),tabAdd:()=>!0},setup(e,{emit:a,slots:t,expose:l}){var s;const o=u("tabs"),n=P((()=>["left","right"].includes(e.tabPosition))),{children:r,addChild:i,removeChild:b}=X(C(),"ElTabPane"),p=d(),f=d(null!=(s=e.modelValue)?s:"0"),m=async(t,l=!1)=>{var s,o,n;if(f.value!==t&&!q(t))try{!1!==await(null==(s=e.beforeLeave)?void 0:s.call(e,t,f.value))&&(f.value=t,l&&(a(_,t),a("tabChange",t)),null==(n=null==(o=p.value)?void 0:o.removeFocus)||n.call(o))}catch(r){}},h=(e,t,l)=>{e.props.disabled||(m(t,!0),a("tabClick",e,l))},y=(e,t)=>{e.props.disabled||q(e.props.name)||(t.stopPropagation(),a("edit",e.props.name,"remove"),a("tabRemove",e.props.name))},g=()=>{a("edit",void 0,"add"),a("tabAdd")};return c((()=>e.modelValue),(e=>m(e))),c(f,(async()=>{var e;await v(),null==(e=p.value)||e.scrollToActiveTab()})),A(Y,{props:e,currentName:f,registerPane:i,unregisterPane:b}),l({currentName:f}),()=>{const a=t["add-icon"],l=e.editable||e.addable?T("div",{class:[o.e("new-tab"),n.value&&o.e("new-tab-vertical")],tabindex:"0",onClick:g,onKeydown:e=>{e.code===E.enter&&g()}},[a?F(t,"add-icon"):T(B,{class:o.is("icon-plus")},{default:()=>[T(K,null,null)]})]):null,s=T("div",{class:[o.e("header"),n.value&&o.e("header-vertical"),o.is(e.tabPosition)]},[T(le,{ref:p,currentName:f.value,editable:e.editable,type:e.type,panes:r.value,stretch:e.stretch,onTabClick:h,onTabRemove:y},null),l]),i=T("div",{class:o.e("content")},[F(t,"default")]);return T("div",{class:[o.b(),o.m(e.tabPosition),{[o.m("card")]:"card"===e.type,[o.m("border-card")]:"border-card"===e.type}]},[..."bottom"!==e.tabPosition?[s,i]:[i,s]])}}}),re=l({label:{type:String,default:""},name:{type:[String,Number]},closable:Boolean,disabled:Boolean,lazy:Boolean}),ie=["id","aria-hidden","aria-labelledby"],ue="ElTabPane",de=n({name:ue});var ce=g(n({...de,props:re,setup(e){const a=e,t=C(),l=z(),s=r(Y);s||i(ue,"usage: ");const o=u("tab-pane"),n=d(),v=P((()=>a.closable||s.props.closable)),b=H((()=>{var e;return s.currentName.value===(null!=(e=a.name)?e:n.value)})),y=d(b.value),g=P((()=>{var e;return null!=(e=a.name)?e:n.value})),$=H((()=>!a.lazy||y.value||b.value));c(b,(e=>{e&&(y.value=!0)}));const x=V({uid:t.uid,slots:l,props:a,paneName:g,active:b,index:n,isClosable:v});return w((()=>{s.registerPane(x)})),J((()=>{s.unregisterPane(x.uid)})),(e,a)=>h($)?M((p(),f("div",{key:0,id:`pane-${h(g)}`,class:m(h(o).b()),role:"tabpanel","aria-hidden":!h(b),"aria-labelledby":`tab-${h(g)}`},[F(e.$slots,"default")],10,ie)),[[G,h(b)]]):I("v-if",!0)}}),[["__file","tab-pane.vue"]]);const ve=O(ne,{TabPane:ce}),be=U(ce);export{be as E,ve as a}; diff --git a/resources/views/dist/js/el-table-column.Dl1jn1Bd.js b/resources/views/dist/js/el-table-column.Dl1jn1Bd.js new file mode 100644 index 0000000..ac4f53a --- /dev/null +++ b/resources/views/dist/js/el-table-column.Dl1jn1Bd.js @@ -0,0 +1 @@ +import{dd as e,de as t,cF as l,bT as o,d0 as n,cT as r,cU as a,cZ as s,d5 as i,cG as u,c$ as d,cY as c,df as h,dg as p,I as f,Q as v,t as m,c9 as g,l as y,dh as b,bl as w,cp as x,as as C,r as S,G as E,g as R,c as N,J as k,bd as O,b as L,a2 as H,aB as W,_ as M,d as A,E as F,a9 as T,di as $,y as I,au as B,bG as K,e as j,f as D,w as P,h as z,C as V,i as _,S as Y,V as X,a7 as q,F as G,a3 as U,k as Q,aQ as Z,o as J,co as ee,dj as te,B as le,ag as oe,bL as ne,ai as re,ah as ae,am as se,R as ie,a as ue,aq as de,X as ce,L as he,bK as pe,z as fe,n as ve,p as me,aa as ge,d9 as ye,ak as be,bk as we,cg as xe,bp as Ce,al as Se,N as Ee,q as Re,H as Ne}from"./index.DMBpWXpT.js";import{E as ke}from"./el-scrollbar.BJ_tYB1D.js";import{E as Oe}from"./el-popper.Cb3Eus9m.js";import{b as Le,C as He}from"./index.CP01f_MK.js";import{d as We,k as Me,i as Ae,b as Fe,S as Te}from"./_Uint8Array.BEOPqGcx.js";import{d as $e}from"./debounce.l44evi-0.js";import{E as Ie}from"./el-checkbox.8MJHthul.js";import{g as Be,c as Ke,k as je,b as De,d as Pe,e as ze,i as Ve}from"./el-form.DUR-mZNt.js";var _e="[object Object]",Ye=Function.prototype,Xe=Object.prototype,qe=Ye.toString,Ge=Xe.hasOwnProperty,Ue=qe.call(Object);var Qe=function(e,t,l){for(var o=-1,n=Object(e),r=l(e),a=r.length;a--;){var s=r[++o];if(!1===t(n[s],s,n))break}return e};var Ze,Je=(Ze=function(e,t){return e&&Qe(e,t,Me)},function(e,t){if(null==e)return e;if(!We(e))return Ze(e,t);for(var l=e.length,o=-1,n=Object(e);++o1?t[a-1]:void 0,i=a>2?t[2]:void 0;for(s=at.length>3&&"function"==typeof s?(a--,s):void 0,i&&function(e,t,l){if(!o(l))return!1;var a=typeof t;return!!("number"==a?We(l)&&n(t,l.length):"string"==a&&t in l)&&r(l[t],e)}(t[0],t[1],i)&&(s=a<3?void 0:s,a=1),e=Object(e);++ldt},ie64:function(){return Ot.ie()&&wt},firefox:function(){return Nt()||ct},opera:function(){return Nt()||ht},webkit:function(){return Nt()||pt},safari:function(){return Ot.webkit()},chrome:function(){return Nt()||ft},windows:function(){return Nt()||gt},osx:function(){return Nt()||mt},linux:function(){return Nt()||yt},iphone:function(){return Nt()||xt},mobile:function(){return Nt()||xt||Ct||bt||Et},nativeApp:function(){return Nt()||St},android:function(){return Nt()||bt},ipad:function(){return Nt()||Ct}},Lt=Ot,Ht=!!(typeof window<"u"&&window.document&&window.document.createElement),Wt={canUseDOM:Ht,canUseWorkers:typeof Worker<"u",canUseEventListeners:Ht&&!(!window.addEventListener&&!window.attachEvent),canUseViewport:Ht&&!!window.screen,isInWorker:!Ht};Wt.canUseDOM&&(kt=document.implementation&&document.implementation.hasFeature&&!0!==document.implementation.hasFeature("",""));var Mt=function(e,t){if(!Wt.canUseDOM||t&&!("addEventListener"in document))return!1;var l="on"+e,o=l in document;if(!o){var n=document.createElement("div");n.setAttribute(l,"return;"),o="function"==typeof n[l]}return!o&&kt&&"wheel"===e&&(o=document.implementation.hasFeature("Events.wheel","3.0")),o};function At(e){var t=0,l=0,o=0,n=0;return"detail"in e&&(l=e.detail),"wheelDelta"in e&&(l=-e.wheelDelta/120),"wheelDeltaY"in e&&(l=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=l,l=0),o=10*t,n=10*l,"deltaY"in e&&(n=e.deltaY),"deltaX"in e&&(o=e.deltaX),(o||n)&&e.deltaMode&&(1==e.deltaMode?(o*=40,n*=40):(o*=800,n*=800)),o&&!t&&(t=o<1?-1:1),n&&!l&&(l=n<1?-1:1),{spinX:t,spinY:l,pixelX:o,pixelY:n}}At.getEventType=function(){return Lt.firefox()?"DOMMouseScroll":Mt("wheel")?"wheel":"mousewheel"};var Ft=At;const Tt={beforeMount(e,t){!function(e,t){if(e&&e.addEventListener){const l=function(e){const l=Ft(e);t&&Reflect.apply(t,this,[e,l])};e.addEventListener("wheel",l,{passive:!0})}}(e,t.value)}},$t=function(e){var t;return null==(t=e.target)?void 0:t.closest("td")},It=function(e,t,l,o,n){if(!t&&!o&&(!n||Array.isArray(n)&&!n.length))return e;l="string"==typeof l?"descending"===l?-1:1:l&&l<0?-1:1;const r=o?null:function(l,o){return n?(Array.isArray(n)||(n=[n]),n.map((t=>"string"==typeof t?x(l,t):t(l,o,e)))):("$key"!==t&&C(l)&&"$value"in l&&(l=l.$value),[C(l)?x(l,t):l])};return e.map(((e,t)=>({value:e,index:t,key:r?r(e,t):null}))).sort(((e,t)=>{let n=function(e,t){if(o)return o(e.value,t.value);for(let l=0,o=e.key.length;lt.key[l])return 1}return 0}(e,t);return n||(n=e.index-t.index),n*+l})).map((e=>e.value))},Bt=function(e,t){let l=null;return e.columns.forEach((e=>{e.id===t&&(l=e)})),l},Kt=function(e,t){let l=null;for(let o=0;o{if(!e)throw new Error("Row is required when get row identity");if("string"==typeof t){if(!t.includes("."))return`${e[t]}`;const l=t.split(".");let o=e;for(const e of l)o=o[e];return`${o}`}if("function"==typeof t)return t.call(null,e)},Pt=function(e,t){const l={};return(e||[]).forEach(((e,o)=>{l[Dt(e,t)]={row:e,index:o}})),l};function zt(e){return""===e||void 0!==e&&(e=Number.parseInt(e,10),Number.isNaN(e)&&(e="")),e}function Vt(e){return""===e||void 0!==e&&(e=zt(e),Number.isNaN(e)&&(e=80)),e}function _t(e,t,l){let o=!1;const n=e.indexOf(t),r=-1!==n,a=a=>{"add"===a?e.push(t):e.splice(n,1),o=!0,w(t.children)&&t.children.forEach((t=>{_t(e,t,null!=l?l:!r)}))};return g(l)?l&&!r?a("add"):!l&&r&&a("remove"):a(r?"remove":"add"),o}function Yt(e,t,l="children",o="hasChildren"){const n=e=>!(Array.isArray(e)&&e.length);function r(e,a,s){t(e,a,s),a.forEach((e=>{if(e[o])return void t(e,null,s+1);const a=e[l];n(a)||r(e,a,s+1)}))}e.forEach((e=>{if(e[o])return void t(e,null,0);const a=e[l];n(a)||r(e,a,0)}))}let Xt=null;function qt(e){return e.children?rt(e.children,qt):[e]}function Gt(e,t){return e+t.colSpan}const Ut=(e,t,l,o)=>{let n=0,r=e;const a=l.states.columns.value;if(o){const t=qt(o[e]);n=a.slice(0,a.indexOf(t[0])).reduce(Gt,0),r=n+t.reduce(Gt,0)-1}else n=e;let s;switch(t){case"left":r=a.length-l.states.rightFixedLeafColumnsLength.value&&(s="right");break;default:r=a.length-l.states.rightFixedLeafColumnsLength.value&&(s="right")}return s?{direction:s,start:n,after:r}:{}},Qt=(e,t,l,o,n,r=0)=>{const a=[],{direction:s,start:i,after:u}=Ut(t,l,o,n);if(s){const t="left"===s;a.push(`${e}-fixed-column--${s}`),t&&u+r===o.states.fixedLeafColumnsLength.value-1?a.push("is-last-column"):t||i-r!=o.states.columns.value.length-o.states.rightFixedLeafColumnsLength.value||a.push("is-first-column")}return a};function Zt(e,t){return e+(null===t.realWidth||Number.isNaN(t.realWidth)?Number(t.width):t.realWidth)}const Jt=(e,t,l,o)=>{const{direction:n,start:r=0,after:a=0}=Ut(e,t,l,o);if(!n)return;const s={},i="left"===n,u=l.states.columns.value;return i?s.left=u.slice(0,r).reduce(Zt,0):s.right=u.slice(a+1).reverse().reduce(Zt,0),s},el=(e,t)=>{e&&(Number.isNaN(e[t])||(e[t]=`${e[t]}px`))};const tl=(e,t)=>{const l=t.sortingColumn;return l&&"string"!=typeof l.sortable?It(e,t.sortProp,t.sortOrder,l.sortMethod,l.sortBy):e},ll=e=>{const t=[];return e.forEach((e=>{e.children&&e.children.length>0?t.push.apply(t,ll(e.children)):t.push(e)})),t};function ol(){var e;const t=E(),{size:l}=O(null==(e=t.proxy)?void 0:e.$props),o=S(null),n=S([]),r=S([]),a=S(!1),s=S([]),i=S([]),u=S([]),d=S([]),c=S([]),h=S([]),p=S([]),f=S([]),m=S(0),g=S(0),y=S(0),b=S(!1),w=S([]),x=S(!1),C=S(!1),L=S(null),H=S({}),W=S(null),M=S(null),A=S(null),F=S(null),T=S(null);k(n,(()=>t.state&&B(!1)),{deep:!0});const $=e=>{var t;null==(t=e.children)||t.forEach((t=>{t.fixed=e.fixed,$(t)}))},I=()=>{s.value.forEach((e=>{$(e)})),d.value=s.value.filter((e=>!0===e.fixed||"left"===e.fixed)),c.value=s.value.filter((e=>"right"===e.fixed)),d.value.length>0&&s.value[0]&&"selection"===s.value[0].type&&!s.value[0].fixed&&(s.value[0].fixed=!0,d.value.unshift(s.value[0]));const e=s.value.filter((e=>!e.fixed));i.value=[].concat(d.value).concat(e).concat(c.value);const t=ll(e),l=ll(d.value),o=ll(c.value);m.value=t.length,g.value=l.length,y.value=o.length,u.value=[].concat(l).concat(t).concat(o),a.value=d.value.length>0||c.value.length>0},B=(e,l=!1)=>{e&&I(),l?t.state.doLayout():t.state.debouncedUpdateLayout()},K=e=>{var l;if(!t||!t.store)return 0;const{treeData:o}=t.store.states;let n=0;const r=null==(l=o.value[e])?void 0:l.children;return r&&(n+=r.length,r.forEach((e=>{n+=K(e)}))),n},j=(e,t,l)=>{M.value&&M.value!==e&&(M.value.order=null),M.value=e,A.value=t,F.value=l},D=()=>{let e=R(r);Object.keys(H.value).forEach((t=>{const l=H.value[t];if(!l||0===l.length)return;const o=Bt({columns:u.value},t);o&&o.filterMethod&&(e=e.filter((e=>l.some((t=>o.filterMethod.call(null,t,e,o))))))})),W.value=e},P=()=>{n.value=tl(W.value,{sortingColumn:M.value,sortProp:A.value,sortOrder:F.value})},{setExpandRowKeys:z,toggleRowExpansion:V,updateExpandRows:_,states:Y,isRowExpanded:X}=function(e){const t=E(),l=S(!1),o=S([]);return{updateExpandRows:()=>{const t=e.data.value||[],n=e.rowKey.value;if(l.value)o.value=t.slice();else if(n){const e=Pt(o.value,n);o.value=t.reduce(((t,l)=>{const o=Dt(l,n);return e[o]&&t.push(l),t}),[])}else o.value=[]},toggleRowExpansion:(e,l)=>{_t(o.value,e,l)&&t.emit("expand-change",e,o.value.slice())},setExpandRowKeys:l=>{t.store.assertRowKey();const n=e.data.value||[],r=e.rowKey.value,a=Pt(n,r);o.value=l.reduce(((e,t)=>{const l=a[t];return l&&e.push(l.row),e}),[])},isRowExpanded:t=>{const l=e.rowKey.value;return l?!!Pt(o.value,l)[Dt(t,l)]:o.value.includes(t)},states:{expandRows:o,defaultExpandAll:l}}}({data:n,rowKey:o}),{updateTreeExpandKeys:q,toggleTreeExpansion:G,updateTreeData:U,loadOrToggle:Q,states:Z}=function(e){const t=S([]),l=S({}),o=S(16),n=S(!1),r=S({}),a=S("hasChildren"),s=S("children"),i=E(),u=N((()=>{if(!e.rowKey.value)return{};const t=e.data.value||[];return c(t)})),d=N((()=>{const t=e.rowKey.value,l=Object.keys(r.value),o={};return l.length?(l.forEach((e=>{if(r.value[e].length){const l={children:[]};r.value[e].forEach((e=>{const n=Dt(e,t);l.children.push(n),e[a.value]&&!o[n]&&(o[n]={children:[]})})),o[e]=l}})),o):o})),c=t=>{const l=e.rowKey.value,o={};return Yt(t,((e,t,r)=>{const a=Dt(e,l);Array.isArray(t)?o[a]={children:t.map((e=>Dt(e,l))),level:r}:n.value&&(o[a]={children:[],lazy:!0,level:r})}),s.value,a.value),o},h=(e=!1,o=(e=>null==(e=i.store)?void 0:e.states.defaultExpandAll.value)())=>{var r;const a=u.value,s=d.value,c=Object.keys(a),h={};if(c.length){const r=R(l),i=[],u=(l,n)=>{if(e)return t.value?o||t.value.includes(n):!(!o&&!(null==l?void 0:l.expanded));{const e=o||t.value&&t.value.includes(n);return!(!(null==l?void 0:l.expanded)&&!e)}};c.forEach((e=>{const t=r[e],l={...a[e]};if(l.expanded=u(t,e),l.lazy){const{loaded:o=!1,loading:n=!1}=t||{};l.loaded=!!o,l.loading=!!n,i.push(e)}h[e]=l}));const d=Object.keys(s);n.value&&d.length&&i.length&&d.forEach((e=>{const t=r[e],l=s[e].children;if(i.includes(e)){if(0!==h[e].children.length)throw new Error("[ElTable]children must be an empty array.");h[e].children=l}else{const{loaded:o=!1,loading:n=!1}=t||{};h[e]={lazy:!0,loaded:!!o,loading:!!n,expanded:u(t,e),children:l,level:""}}}))}l.value=h,null==(r=i.store)||r.updateTableScrollY()};k((()=>t.value),(()=>{h(!0)})),k((()=>u.value),(()=>{h()})),k((()=>d.value),(()=>{h()}));const p=(t,o)=>{i.store.assertRowKey();const n=e.rowKey.value,r=Dt(t,n),a=r&&l.value[r];if(r&&a&&"expanded"in a){const e=a.expanded;o=void 0===o?!a.expanded:o,l.value[r].expanded=o,e!==o&&i.emit("expand-change",t,o),i.store.updateTableScrollY()}},f=(e,t,o)=>{const{load:n}=i.props;n&&!l.value[t].loaded&&(l.value[t].loading=!0,n(e,o,(o=>{if(!Array.isArray(o))throw new TypeError("[ElTable] data must be an array");l.value[t].loading=!1,l.value[t].loaded=!0,l.value[t].expanded=!0,o.length&&(r.value[t]=o),i.emit("expand-change",e,!0)})))};return{loadData:f,loadOrToggle:t=>{i.store.assertRowKey();const o=e.rowKey.value,r=Dt(t,o),a=l.value[r];n.value&&a&&"loaded"in a&&!a.loaded?f(t,r,a):p(t,void 0)},toggleTreeExpansion:p,updateTreeExpandKeys:e=>{t.value=e,h()},updateTreeData:h,normalize:c,states:{expandRowKeys:t,treeData:l,indent:o,lazy:n,lazyTreeNodeMap:r,lazyColumnIdentifier:a,childrenColumnName:s}}}({data:n,rowKey:o}),{updateCurrentRowData:J,updateCurrentRow:ee,setCurrentRowKey:te,states:le}=function(e){const t=E(),l=S(null),o=S(null),n=()=>{l.value=null},r=l=>{const{data:n,rowKey:r}=e;let a=null;r.value&&(a=(R(n)||[]).find((e=>Dt(e,r.value)===l))),o.value=a,t.emit("current-change",o.value,null)};return{setCurrentRowKey:e=>{t.store.assertRowKey(),l.value=e,r(e)},restoreCurrentRowKey:n,setCurrentRowByKey:r,updateCurrentRow:e=>{const l=o.value;if(e&&e!==l)return o.value=e,void t.emit("current-change",o.value,l);!e&&l&&(o.value=null,t.emit("current-change",null,l))},updateCurrentRowData:()=>{const a=e.rowKey.value,s=e.data.value||[],i=o.value;if(!s.includes(i)&&i){if(a){const e=Dt(i,a);r(e)}else o.value=null;null===o.value&&t.emit("current-change",null,i)}else l.value&&(r(l.value),n())},states:{_currentRowKey:l,currentRow:o}}}({data:n,rowKey:o});return{assertRowKey:()=>{if(!o.value)throw new Error("[ElTable] prop row-key is required")},updateColumns:I,scheduleLayout:B,isSelected:e=>w.value.includes(e),clearSelection:()=>{b.value=!1;const e=w.value;w.value=[],e.length&&t.emit("selection-change",[])},cleanSelection:()=>{let e;if(o.value){e=[];const t=Pt(w.value,o.value),l=Pt(n.value,o.value);for(const o in t)v(t,o)&&!l[o]&&e.push(t[o].row)}else e=w.value.filter((e=>!n.value.includes(e)));if(e.length){const l=w.value.filter((t=>!e.includes(t)));w.value=l,t.emit("selection-change",l.slice())}},getSelectionRows:()=>(w.value||[]).slice(),toggleRowSelection:(e,l=void 0,o=!0)=>{if(_t(w.value,e,l)){const l=(w.value||[]).slice();o&&t.emit("select",l,e),t.emit("selection-change",l)}},_toggleAllSelection:()=>{var e,l;const o=C.value?!b.value:!(b.value||w.value.length);b.value=o;let r=!1,a=0;const s=null==(l=null==(e=null==t?void 0:t.store)?void 0:e.states)?void 0:l.rowKey.value;n.value.forEach(((e,t)=>{const l=t+a;L.value?L.value.call(null,e,l)&&_t(w.value,e,o)&&(r=!0):_t(w.value,e,o)&&(r=!0),a+=K(Dt(e,s))})),r&&t.emit("selection-change",w.value?w.value.slice():[]),t.emit("select-all",(w.value||[]).slice())},toggleAllSelection:null,updateSelectionByRowKey:()=>{const e=Pt(w.value,o.value);n.value.forEach((t=>{const l=Dt(t,o.value),n=e[l];n&&(w.value[n.index]=t)}))},updateAllSelected:()=>{var e,l,r;if(0===(null==(e=n.value)?void 0:e.length))return void(b.value=!1);let a;o.value&&(a=Pt(w.value,o.value));let s=!0,i=0,u=0;for(let c=0,h=(n.value||[]).length;c{Array.isArray(e)||(e=[e]);const l={};return e.forEach((e=>{H.value[e.id]=t,l[e.columnKey||e.id]=t})),l},updateCurrentRow:ee,updateSort:j,execFilter:D,execSort:P,execQuery:(e=void 0)=>{e&&e.filter||D(),P()},clearFilter:e=>{const{tableHeaderRef:l}=t.refs;if(!l)return;const o=Object.assign({},l.filterPanels),n=Object.keys(o);if(n.length)if("string"==typeof e&&(e=[e]),Array.isArray(e)){const l=e.map((e=>Kt({columns:u.value},e)));n.forEach((e=>{const t=l.find((t=>t.id===e));t&&(t.filteredValue=[])})),t.store.commit("filterChange",{column:l,values:[],silent:!0,multi:!0})}else n.forEach((e=>{const t=u.value.find((t=>t.id===e));t&&(t.filteredValue=[])})),H.value={},t.store.commit("filterChange",{column:{},values:[],silent:!0})},clearSort:()=>{M.value&&(j(null,null,null),t.store.commit("changeSortCondition",{silent:!0}))},toggleRowExpansion:V,setExpandRowKeysAdapter:e=>{z(e),q(e)},setCurrentRowKey:te,toggleRowExpansionAdapter:(e,t)=>{u.value.some((({type:e})=>"expand"===e))?V(e,t):G(e,t)},isRowExpanded:X,updateExpandRows:_,updateCurrentRowData:J,loadOrToggle:Q,updateTreeData:U,states:{tableSize:l,rowKey:o,data:n,_data:r,isComplex:a,_columns:s,originColumns:i,columns:u,fixedColumns:d,rightFixedColumns:c,leafColumns:h,fixedLeafColumns:p,rightFixedLeafColumns:f,updateOrderFns:[],leafColumnsLength:m,fixedLeafColumnsLength:g,rightFixedLeafColumnsLength:y,isAllSelected:b,selection:w,reserveSelection:x,selectOnIndeterminate:C,selectable:L,filters:H,filteredData:W,sortingColumn:M,sortProp:A,sortOrder:F,hoverRow:T,...Y,...Z,...le}}}function nl(e,t){return e.map((e=>{var l;return e.id===t.id?t:((null==(l=e.children)?void 0:l.length)&&(e.children=nl(e.children,t)),e)}))}function rl(e){e.forEach((e=>{var t,l;e.no=null==(t=e.getColumnIndex)?void 0:t.call(e),(null==(l=e.children)?void 0:l.length)&&rl(e.children)})),e.sort(((e,t)=>e.no-t.no))}const al={rowKey:"rowKey",defaultExpandAll:"defaultExpandAll",selectOnIndeterminate:"selectOnIndeterminate",indent:"indent",lazy:"lazy",data:"data","treeProps.hasChildren":{key:"lazyColumnIdentifier",default:"hasChildren"},"treeProps.children":{key:"childrenColumnName",default:"children"}};function sl(e,t){if(!e)throw new Error("Table is required.");const l=function(){const e=E(),t=ol();return{ns:L("table"),...t,mutations:{setData(t,l){const o=R(t._data)!==l;t.data.value=l,t._data.value=l,e.store.execQuery(),e.store.updateCurrentRowData(),e.store.updateExpandRows(),e.store.updateTreeData(e.store.states.defaultExpandAll.value),R(t.reserveSelection)?(e.store.assertRowKey(),e.store.updateSelectionByRowKey()):o?e.store.clearSelection():e.store.cleanSelection(),e.store.updateAllSelected(),e.$ready&&e.store.scheduleLayout()},insertColumn(t,l,o,n){const r=R(t._columns);let a=[];o?(o&&!o.children&&(o.children=[]),o.children.push(l),a=nl(r,o)):(r.push(l),a=r),rl(a),t._columns.value=a,t.updateOrderFns.push(n),"selection"===l.type&&(t.selectable.value=l.selectable,t.reserveSelection.value=l.reserveSelection),e.$ready&&(e.store.updateColumns(),e.store.scheduleLayout())},updateColumnOrder(t,l){var o;(null==(o=l.getColumnIndex)?void 0:o.call(l))!==l.no&&(rl(t._columns.value),e.$ready&&e.store.updateColumns())},removeColumn(t,l,o,n){const r=R(t._columns)||[];if(o)o.children.splice(o.children.findIndex((e=>e.id===l.id)),1),H((()=>{var e;0===(null==(e=o.children)?void 0:e.length)&&delete o.children})),t._columns.value=nl(r,o);else{const e=r.indexOf(l);e>-1&&(r.splice(e,1),t._columns.value=r)}const a=t.updateOrderFns.indexOf(n);a>-1&&t.updateOrderFns.splice(a,1),e.$ready&&(e.store.updateColumns(),e.store.scheduleLayout())},sort(t,l){const{prop:o,order:n,init:r}=l;if(o){const l=R(t.columns).find((e=>e.property===o));l&&(l.order=n,e.store.updateSort(l,o,n),e.store.commit("changeSortCondition",{init:r}))}},changeSortCondition(t,l){const{sortingColumn:o,sortProp:n,sortOrder:r}=t,a=R(o),s=R(n),i=R(r);null===i&&(t.sortingColumn.value=null,t.sortProp.value=null),e.store.execQuery({filter:!0}),l&&(l.silent||l.init)||e.emit("sort-change",{column:a,prop:s,order:i}),e.store.updateTableScrollY()},filterChange(t,l){const{column:o,values:n,silent:r}=l,a=e.store.updateFilters(o,n);e.store.execQuery(),r||e.emit("filter-change",a),e.store.updateTableScrollY()},toggleAllSelection(){e.store.toggleAllSelection()},rowSelectedChanged(t,l){e.store.toggleRowSelection(l),e.store.updateAllSelected()},setHoverRow(e,t){e.hoverRow.value=t},setCurrentRow(t,l){e.store.updateCurrentRow(l)}},commit:function(t,...l){const o=e.store.mutations;if(!o[t])throw new Error(`Action not found: ${t}`);o[t].apply(e,[e.store.states].concat(l))},updateTableScrollY:function(){H((()=>e.layout.updateScrollY.apply(e.layout)))}}}();return l.toggleAllSelection=$e(l._toggleAllSelection,10),Object.keys(al).forEach((e=>{il(ul(t,e),e,l)})),function(e,t){Object.keys(al).forEach((l=>{k((()=>ul(t,l)),(t=>{il(t,l,e)}))}))}(l,t),l}function il(e,t,l){let o=e,n=al[t];"object"==typeof al[t]&&(n=n.key,o=o||al[t].default),l.states[n].value=o}function ul(e,t){if(t.includes(".")){const l=t.split(".");let o=e;return l.forEach((e=>{o=o[e]})),o}return e[t]}class dl{constructor(e){this.observers=[],this.table=null,this.store=null,this.columns=[],this.fit=!0,this.showHeader=!0,this.height=S(null),this.scrollX=S(!1),this.scrollY=S(!1),this.bodyWidth=S(null),this.fixedWidth=S(null),this.rightFixedWidth=S(null),this.gutterWidth=0;for(const t in e)v(e,t)&&(W(this[t])?this[t].value=e[t]:this[t]=e[t]);if(!this.table)throw new Error("Table is required for Table Layout");if(!this.store)throw new Error("Store is required for Table Layout")}updateScrollY(){if(null===this.height.value)return!1;const e=this.table.refs.scrollBarRef;if(this.table.vnode.el&&(null==e?void 0:e.wrapRef)){let t=!0;const l=this.scrollY.value;return t=e.wrapRef.scrollHeight>e.wrapRef.clientHeight,this.scrollY.value=t,l!==t}return!1}setHeight(e,t="height"){if(!f)return;const l=this.table.vnode.el;var o;if(e="number"==typeof(o=e)?o:"string"==typeof o?/^\d+(?:px)?$/.test(o)?Number.parseInt(o,10):o:null,this.height.value=Number(e),!l&&(e||0===e))return H((()=>this.setHeight(e,t)));"number"==typeof e?(l.style[t]=`${e}px`,this.updateElsHeight()):"string"==typeof e&&(l.style[t]=e,this.updateElsHeight())}setMaxHeight(e){this.setHeight(e,"max-height")}getFlattenColumns(){const e=[];return this.table.store.states.columns.value.forEach((t=>{t.isColumnGroup?e.push.apply(e,t.columns):e.push(t)})),e}updateElsHeight(){this.updateScrollY(),this.notifyObservers("scrollable")}headerDisplayNone(e){if(!e)return!0;let t=e;for(;"DIV"!==t.tagName;){if("none"===getComputedStyle(t).display)return!0;t=t.parentElement}return!1}updateColumnsWidth(){if(!f)return;const e=this.fit,t=this.table.vnode.el.clientWidth;let l=0;const o=this.getFlattenColumns(),n=o.filter((e=>"number"!=typeof e.width));if(o.forEach((e=>{"number"==typeof e.width&&e.realWidth&&(e.realWidth=null)})),n.length>0&&e){if(o.forEach((e=>{l+=Number(e.width||e.minWidth||80)})),l<=t){this.scrollX.value=!1;const e=t-l;if(1===n.length)n[0].realWidth=Number(n[0].minWidth||80)+e;else{const t=e/n.reduce(((e,t)=>e+Number(t.minWidth||80)),0);let l=0;n.forEach(((e,o)=>{if(0===o)return;const n=Math.floor(Number(e.minWidth||80)*t);l+=n,e.realWidth=Number(e.minWidth||80)+n})),n[0].realWidth=Number(n[0].minWidth||80)+e-l}}else this.scrollX.value=!0,n.forEach((e=>{e.realWidth=Number(e.minWidth)}));this.bodyWidth.value=Math.max(l,t),this.table.state.resizeState.value.width=this.bodyWidth.value}else o.forEach((e=>{e.width||e.minWidth?e.realWidth=Number(e.width||e.minWidth):e.realWidth=80,l+=e.realWidth})),this.scrollX.value=l>t,this.bodyWidth.value=l;const r=this.store.states.fixedColumns.value;if(r.length>0){let e=0;r.forEach((t=>{e+=Number(t.realWidth||t.width)})),this.fixedWidth.value=e}const a=this.store.states.rightFixedColumns.value;if(a.length>0){let e=0;a.forEach((t=>{e+=Number(t.realWidth||t.width)})),this.rightFixedWidth.value=e}this.notifyObservers("columns")}addObserver(e){this.observers.push(e)}removeObserver(e){const t=this.observers.indexOf(e);-1!==t&&this.observers.splice(t,1)}notifyObservers(e){this.observers.forEach((t=>{var l,o;switch(e){case"columns":null==(l=t.state)||l.onColumnsChange(this);break;case"scrollable":null==(o=t.state)||o.onScrollableChange(this);break;default:throw new Error(`Table Layout don't have event ${e}.`)}}))}}const{CheckboxGroup:cl}=Ie,hl=A({name:"ElTableFilterPanel",components:{ElCheckbox:Ie,ElCheckboxGroup:cl,ElScrollbar:ke,ElTooltip:Oe,ElIcon:F,ArrowDown:T,ArrowUp:$},directives:{ClickOutside:He},props:{placement:{type:String,default:"bottom-start"},store:{type:Object},column:{type:Object},upDataColumn:{type:Function}},setup(e){const t=E(),{t:l}=I(),o=L("table-filter"),n=null==t?void 0:t.parent;n.filterPanels.value[e.column.id]||(n.filterPanels.value[e.column.id]=t);const r=S(!1),a=S(null),s=N((()=>e.column&&e.column.filters)),i=N((()=>e.column.filterClassName?`${o.b()} ${e.column.filterClassName}`:o.b())),u=N({get:()=>{var t;return((null==(t=e.column)?void 0:t.filteredValue)||[])[0]},set:e=>{d.value&&(null!=e?d.value.splice(0,1,e):d.value.splice(0,1))}}),d=N({get:()=>e.column&&e.column.filteredValue||[],set(t){e.column&&e.upDataColumn("filteredValue",t)}}),c=N((()=>!e.column||e.column.filterMultiple)),h=()=>{r.value=!1},p=t=>{e.store.commit("filterChange",{column:e.column,values:t}),e.store.updateAllSelected()};k(r,(t=>{e.column&&e.upDataColumn("filterOpened",t)}),{immediate:!0});const f=N((()=>{var e,t;return null==(t=null==(e=a.value)?void 0:e.popperRef)?void 0:t.contentRef}));return{tooltipVisible:r,multiple:c,filterClassName:i,filteredValue:d,filterValue:u,filters:s,handleConfirm:()=>{p(d.value),h()},handleReset:()=>{d.value=[],p(d.value),h()},handleSelect:e=>{u.value=e,p(null!=e?d.value:[]),h()},isActive:e=>e.value===u.value,t:l,ns:o,showFilterPanel:e=>{e.stopPropagation(),r.value=!r.value},hideFilterPanel:()=>{r.value=!1},popperPaneRef:f,tooltip:a}}}),pl={key:0},fl=["disabled"],vl=["label","onClick"];var ml=M(hl,[["render",function(e,t,l,o,n,r){const a=B("el-checkbox"),s=B("el-checkbox-group"),i=B("el-scrollbar"),u=B("arrow-up"),d=B("arrow-down"),c=B("el-icon"),h=B("el-tooltip"),p=K("click-outside");return j(),D(h,{ref:"tooltip",visible:e.tooltipVisible,offset:0,placement:e.placement,"show-arrow":!1,"stop-popper-mouse-event":!1,teleported:"",effect:"light",pure:"","popper-class":e.filterClassName,persistent:""},{content:P((()=>[e.multiple?(j(),z("div",pl,[V("div",{class:_(e.ns.e("content"))},[y(i,{"wrap-class":e.ns.e("wrap")},{default:P((()=>[y(s,{modelValue:e.filteredValue,"onUpdate:modelValue":t[0]||(t[0]=t=>e.filteredValue=t),class:_(e.ns.e("checkbox-group"))},{default:P((()=>[(j(!0),z(Y,null,X(e.filters,(e=>(j(),D(a,{key:e.value,value:e.value},{default:P((()=>[q(G(e.text),1)])),_:2},1032,["value"])))),128))])),_:1},8,["modelValue","class"])])),_:1},8,["wrap-class"])],2),V("div",{class:_(e.ns.e("bottom"))},[V("button",{class:_({[e.ns.is("disabled")]:0===e.filteredValue.length}),disabled:0===e.filteredValue.length,type:"button",onClick:t[1]||(t[1]=(...t)=>e.handleConfirm&&e.handleConfirm(...t))},G(e.t("el.table.confirmFilter")),11,fl),V("button",{type:"button",onClick:t[2]||(t[2]=(...t)=>e.handleReset&&e.handleReset(...t))},G(e.t("el.table.resetFilter")),1)],2)])):(j(),z("ul",{key:1,class:_(e.ns.e("list"))},[V("li",{class:_([e.ns.e("list-item"),{[e.ns.is("active")]:void 0===e.filterValue||null===e.filterValue}]),onClick:t[3]||(t[3]=t=>e.handleSelect(null))},G(e.t("el.table.clearFilter")),3),(j(!0),z(Y,null,X(e.filters,(t=>(j(),z("li",{key:t.value,class:_([e.ns.e("list-item"),e.ns.is("active",e.isActive(t))]),label:t.value,onClick:l=>e.handleSelect(t.value)},G(t.text),11,vl)))),128))],2))])),default:P((()=>[U((j(),z("span",{class:_([`${e.ns.namespace.value}-table__column-filter-trigger`,`${e.ns.namespace.value}-none-outline`]),onClick:t[4]||(t[4]=(...t)=>e.showFilterPanel&&e.showFilterPanel(...t))},[y(c,null,{default:P((()=>[Q(e.$slots,"filter-icon",{},(()=>[e.column.filterOpened?(j(),D(u,{key:0})):(j(),D(d,{key:1}))]))])),_:3})],2)),[[p,e.hideFilterPanel,e.popperPaneRef]])])),_:3},8,["visible","placement","popper-class"])}],["__file","filter-panel.vue"]]);function gl(e){const t=E();Z((()=>{l.value.addObserver(t)})),J((()=>{o(l.value),n(l.value)})),ee((()=>{o(l.value),n(l.value)})),te((()=>{l.value.removeObserver(t)}));const l=N((()=>{const t=e.layout;if(!t)throw new Error("Can not find table layout.");return t})),o=t=>{var l;const o=(null==(l=e.vnode.el)?void 0:l.querySelectorAll("colgroup > col"))||[];if(!o.length)return;const n=t.getFlattenColumns(),r={};n.forEach((e=>{r[e.id]=e}));for(let e=0,a=o.length;e{var l,o;const n=(null==(l=e.vnode.el)?void 0:l.querySelectorAll("colgroup > col[name=gutter]"))||[];for(let e=0,a=n.length;e{const t=[];return e.forEach((e=>{e.children?(t.push(e),t.push.apply(t,bl(e.children))):t.push(e)})),t},wl=e=>{let t=1;const l=(e,o)=>{if(o&&(e.level=o.level+1,t{l(o,e),t+=o.colSpan})),e.colSpan=t}else e.colSpan=1};e.forEach((e=>{e.level=1,l(e,void 0)}));const o=[];for(let n=0;n{e.children?(e.rowSpan=1,e.children.forEach((e=>e.isSubColumn=!0))):e.rowSpan=t-e.level+1,o[e.level-1].push(e)})),o};var xl=A({name:"ElTableHeader",components:{ElCheckbox:Ie},props:{fixed:{type:String,default:""},store:{required:!0,type:Object},border:Boolean,defaultSort:{type:Object,default:()=>({prop:"",order:""})}},setup(e,{emit:t}){const l=E(),o=le(yl),n=L("table"),r=S({}),{onColumnsChange:a,onScrollableChange:s}=gl(o);J((async()=>{await H(),await H();const{prop:t,order:l}=e.defaultSort;null==o||o.store.commit("sort",{prop:t,order:l,init:!0})}));const{handleHeaderClick:i,handleHeaderContextMenu:u,handleMouseDown:d,handleMouseMove:c,handleMouseOut:h,handleSortClick:p,handleFilterClick:v}=function(e,t){const l=E(),o=le(yl),n=e=>{e.stopPropagation()},r=S(null),a=S(!1),s=S({}),i=(t,l,n)=>{var r;t.stopPropagation();const a=l.order===n?null:n||(({order:e,sortOrders:t})=>{if(""===e)return t[0];const l=t.indexOf(e||null);return t[l>t.length-2?0:l+1]})(l),s=null==(r=t.target)?void 0:r.closest("th");if(s&&re(s,"noclick"))return void ae(s,"noclick");if(!l.sortable)return;const i=e.store.states;let u,d=i.sortProp.value;const c=i.sortingColumn.value;(c!==l||c===l&&null===c.order)&&(c&&(c.order=null),i.sortingColumn.value=l,d=l.property),u=l.order=a||null,i.sortProp.value=d,i.sortOrder.value=u,null==o||o.store.commit("changeSortCondition")};return{handleHeaderClick:(e,t)=>{!t.filters&&t.sortable?i(e,t,!1):t.filterable&&!t.sortable&&n(e),null==o||o.emit("header-click",t,e)},handleHeaderContextMenu:(e,t)=>{null==o||o.emit("header-contextmenu",t,e)},handleMouseDown:(n,i)=>{if(f&&!(i.children&&i.children.length>0)&&r.value&&e.border){a.value=!0;const u=o;t("set-drag-visible",!0);const d=(null==u?void 0:u.vnode.el).getBoundingClientRect().left,c=l.vnode.el.querySelector(`th.${i.id}`),h=c.getBoundingClientRect(),p=h.left-d+30;oe(c,"noclick"),s.value={startMouseLeft:n.clientX,startLeft:h.right-d,startColumnLeft:h.left-d,tableLeft:d};const f=null==u?void 0:u.refs.resizeProxy;f.style.left=`${s.value.startLeft}px`,document.onselectstart=function(){return!1},document.ondragstart=function(){return!1};const v=e=>{const t=e.clientX-s.value.startMouseLeft,l=s.value.startLeft+t;f.style.left=`${Math.max(p,l)}px`},m=()=>{if(a.value){const{startColumnLeft:l,startLeft:o}=s.value,d=Number.parseInt(f.style.left,10)-l;i.width=i.realWidth=d,null==u||u.emit("header-dragend",i.width,o-l,i,n),requestAnimationFrame((()=>{e.store.scheduleLayout(!1,!0)})),document.body.style.cursor="",a.value=!1,r.value=null,s.value={},t("set-drag-visible",!1)}document.removeEventListener("mousemove",v),document.removeEventListener("mouseup",m),document.onselectstart=null,document.ondragstart=null,setTimeout((()=>{ae(c,"noclick")}),0)};document.addEventListener("mousemove",v),document.addEventListener("mouseup",m)}},handleMouseMove:(t,l)=>{if(l.children&&l.children.length>0)return;const o=t.target;if(!ne(o))return;const n=null==o?void 0:o.closest("th");if(l&&l.resizable&&!a.value&&e.border){const e=n.getBoundingClientRect(),o=document.body.style;e.width>12&&e.right-t.pageX<8?(o.cursor="col-resize",re(n,"is-sortable")&&(n.style.cursor="col-resize"),r.value=l):a.value||(o.cursor="",re(n,"is-sortable")&&(n.style.cursor="pointer"),r.value=null)}},handleMouseOut:()=>{f&&(document.body.style.cursor="")},handleSortClick:i,handleFilterClick:n}}(e,t),{getHeaderRowStyle:m,getHeaderRowClass:g,getHeaderCellStyle:y,getHeaderCellClass:b}=function(e){const t=le(yl),l=L("table");return{getHeaderRowStyle:e=>{const l=null==t?void 0:t.props.headerRowStyle;return"function"==typeof l?l.call(null,{rowIndex:e}):l},getHeaderRowClass:e=>{const l=[],o=null==t?void 0:t.props.headerRowClassName;return"string"==typeof o?l.push(o):"function"==typeof o&&l.push(o.call(null,{rowIndex:e})),l.join(" ")},getHeaderCellStyle:(l,o,n,r)=>{var a;let s=null!=(a=null==t?void 0:t.props.headerCellStyle)?a:{};"function"==typeof s&&(s=s.call(null,{rowIndex:l,columnIndex:o,row:n,column:r}));const i=Jt(o,r.fixed,e.store,n);return el(i,"left"),el(i,"right"),Object.assign({},s,i)},getHeaderCellClass:(o,n,r,a)=>{const s=Qt(l.b(),n,a.fixed,e.store,r),i=[a.id,a.order,a.headerAlign,a.className,a.labelClassName,...s];a.children||i.push("is-leaf"),a.sortable&&i.push("is-sortable");const u=null==t?void 0:t.props.headerCellClassName;return"string"==typeof u?i.push(u):"function"==typeof u&&i.push(u.call(null,{rowIndex:o,columnIndex:n,row:r,column:a})),i.push(l.e("cell")),i.filter((e=>Boolean(e))).join(" ")}}}(e),{isGroup:w,toggleAllSelection:x,columnRows:C}=function(e){const t=le(yl),l=N((()=>wl(e.store.states.originColumns.value)));return{isGroup:N((()=>{const e=l.value.length>1;return e&&t&&(t.state.isGroup.value=!0),e})),toggleAllSelection:e=>{e.stopPropagation(),null==t||t.store.commit("toggleAllSelection")},columnRows:l}}(e);return l.state={onColumnsChange:a,onScrollableChange:s},l.filterPanels=r,{ns:n,filterPanels:r,onColumnsChange:a,onScrollableChange:s,columnRows:C,getHeaderRowClass:g,getHeaderRowStyle:m,getHeaderCellClass:b,getHeaderCellStyle:y,handleHeaderClick:i,handleHeaderContextMenu:u,handleMouseDown:d,handleMouseMove:c,handleMouseOut:h,handleSortClick:p,handleFilterClick:v,isGroup:w,toggleAllSelection:x}},render(){const{ns:e,isGroup:t,columnRows:l,getHeaderCellStyle:o,getHeaderCellClass:n,getHeaderRowClass:r,getHeaderRowStyle:a,handleHeaderClick:s,handleHeaderContextMenu:i,handleMouseDown:u,handleMouseMove:d,handleSortClick:c,handleMouseOut:h,store:p,$parent:f}=this;let v=1;return se("thead",{class:{[e.is("group")]:t}},l.map(((e,t)=>se("tr",{class:r(t),key:t,style:a(t)},e.map(((l,r)=>(l.rowSpan>v&&(v=l.rowSpan),se("th",{class:n(t,r,e,l),colspan:l.colSpan,key:`${l.id}-thead`,rowspan:l.rowSpan,style:o(t,r,e,l),onClick:e=>{e.currentTarget.classList.contains("noclick")||s(e,l)},onContextmenu:e=>i(e,l),onMousedown:e=>u(e,l),onMousemove:e=>d(e,l),onMouseout:h},[se("div",{class:["cell",l.filteredValue&&l.filteredValue.length>0?"highlight":""]},[l.renderHeader?l.renderHeader({column:l,$index:r,store:p,_self:f}):l.label,l.sortable&&se("span",{onClick:e=>c(e,l),class:"caret-wrapper"},[se("i",{onClick:e=>c(e,l,"ascending"),class:"sort-caret ascending"}),se("i",{onClick:e=>c(e,l,"descending"),class:"sort-caret descending"})]),l.filterable&&se(ml,{store:p,placement:l.filterPlacement||"bottom-start",column:l,upDataColumn:(e,t)=>{l[e]=t}},{"filter-icon":()=>l.renderFilterIcon?l.renderFilterIcon({filterOpened:l.filterOpened}):null})])]))))))))}});function Cl(e,t,l=.01){return e-t>l}function Sl(e){const t=le(yl),l=S(""),o=S(se("div")),n=(l,o,n)=>{var r;const a=t,s=$t(l);let i;const u=null==(r=null==a?void 0:a.vnode.el)?void 0:r.dataset.prefix;s&&(i=jt({columns:e.store.states.columns.value},s,u),i&&(null==a||a.emit(`cell-${n}`,o,i,s,l))),null==a||a.emit(`row-${n}`,o,i,l)},r=$e((t=>{e.store.commit("setHoverRow",t)}),30),a=$e((()=>{e.store.commit("setHoverRow",null)}),30),s=(e,t,l)=>{let o=t.target.parentNode;for(;e>1&&(o=null==o?void 0:o.nextSibling,o&&"TR"===o.nodeName);)l(o,"hover-row hover-fixed-row"),e--};return{handleDoubleClick:(e,t)=>{n(e,t,"dblclick")},handleClick:(t,l)=>{e.store.commit("setCurrentRow",l),n(t,l,"click")},handleContextMenu:(e,t)=>{n(e,t,"contextmenu")},handleMouseEnter:r,handleMouseLeave:a,handleCellMouseEnter:(l,o,n)=>{var r;const a=t,i=$t(l),u=null==(r=null==a?void 0:a.vnode.el)?void 0:r.dataset.prefix;if(i){const t=jt({columns:e.store.states.columns.value},i,u);i.rowSpan>1&&s(i.rowSpan,l,oe);const n=a.hoverState={cell:i,column:t,row:o};null==a||a.emit("cell-mouse-enter",n.row,n.column,n.cell,l)}if(!n)return;const d=l.target.querySelector(".cell");if(!re(d,`${u}-tooltip`)||!d.childNodes.length)return;const c=document.createRange();c.setStart(d,0),c.setEnd(d,d.childNodes.length);let{width:h,height:p}=c.getBoundingClientRect();const f=h-Math.floor(h),{width:v,height:m}=d.getBoundingClientRect();f<.001&&(h=Math.floor(h));p-Math.floor(p)<.001&&(p=Math.floor(p));const{top:g,left:w,right:x,bottom:C}=(e=>{const t=window.getComputedStyle(e,null);return{left:Number.parseInt(t.paddingLeft,10)||0,right:Number.parseInt(t.paddingRight,10)||0,top:Number.parseInt(t.paddingTop,10)||0,bottom:Number.parseInt(t.paddingBottom,10)||0}})(d),S=g+C;(Cl(h+(w+x),v)||Cl(p+S,m)||Cl(d.scrollWidth,v))&&function(e,t,l,o){if((null==Xt?void 0:Xt.trigger)===l)return;null==Xt||Xt();const n=null==o?void 0:o.refs.tableWrapper,r=null==n?void 0:n.dataset.prefix,a={strategy:"fixed",...e.popperOptions},s=y(Oe,{content:t,virtualTriggering:!0,virtualRef:l,appendTo:n,placement:"top",transition:"none",offset:0,hideAfter:0,...e,popperOptions:a,onHide:()=>{null==Xt||Xt()}});s.appContext={...o.appContext,...o};const i=document.createElement("div");b(s,i),s.component.exposed.onOpen();const u=null==n?void 0:n.querySelector(`.${r}-scrollbar__wrap`);Xt=()=>{b(null,i),null==u||u.removeEventListener("scroll",Xt),Xt=null},Xt.trigger=l,null==u||u.addEventListener("scroll",Xt)}(n,i.innerText||i.textContent,i,a)},handleCellMouseLeave:e=>{const l=$t(e);if(!l)return;l.rowSpan>1&&s(l.rowSpan,e,ae);const o=null==t?void 0:t.hoverState;null==t||t.emit("cell-mouse-leave",null==o?void 0:o.row,null==o?void 0:o.column,null==o?void 0:o.cell,e)},tooltipContent:l,tooltipTrigger:o}}function El(e){const t=le(yl),l=L("table"),{handleDoubleClick:o,handleClick:n,handleContextMenu:r,handleMouseEnter:a,handleMouseLeave:s,handleCellMouseEnter:i,handleCellMouseLeave:u,tooltipContent:d,tooltipTrigger:c}=Sl(e),{getRowStyle:h,getRowClass:p,getCellStyle:f,getCellClass:v,getSpan:m,getColspanRealWidth:g}=function(e){const t=le(yl),l=L("table");return{getRowStyle:(e,l)=>{const o=null==t?void 0:t.props.rowStyle;return"function"==typeof o?o.call(null,{row:e,rowIndex:l}):o||null},getRowClass:(o,n)=>{const r=[l.e("row")];(null==t?void 0:t.props.highlightCurrentRow)&&o===e.store.states.currentRow.value&&r.push("current-row"),e.stripe&&n%2==1&&r.push(l.em("row","striped"));const a=null==t?void 0:t.props.rowClassName;return"string"==typeof a?r.push(a):"function"==typeof a&&r.push(a.call(null,{row:o,rowIndex:n})),r},getCellStyle:(l,o,n,r)=>{const a=null==t?void 0:t.props.cellStyle;let s=null!=a?a:{};"function"==typeof a&&(s=a.call(null,{rowIndex:l,columnIndex:o,row:n,column:r}));const i=Jt(o,null==e?void 0:e.fixed,e.store);return el(i,"left"),el(i,"right"),Object.assign({},s,i)},getCellClass:(o,n,r,a,s)=>{const i=Qt(l.b(),n,null==e?void 0:e.fixed,e.store,void 0,s),u=[a.id,a.align,a.className,...i],d=null==t?void 0:t.props.cellClassName;return"string"==typeof d?u.push(d):"function"==typeof d&&u.push(d.call(null,{rowIndex:o,columnIndex:n,row:r,column:a})),u.push(l.e("cell")),u.filter((e=>Boolean(e))).join(" ")},getSpan:(e,l,o,n)=>{let r=1,a=1;const s=null==t?void 0:t.props.spanMethod;if("function"==typeof s){const t=s({row:e,column:l,rowIndex:o,columnIndex:n});Array.isArray(t)?(r=t[0],a=t[1]):"object"==typeof t&&(r=t.rowspan,a=t.colspan)}return{rowspan:r,colspan:a}},getColspanRealWidth:(e,t,l)=>{if(t<1)return e[l].realWidth;const o=e.map((({realWidth:e,width:t})=>e||t)).slice(l,l+t);return Number(o.reduce(((e,t)=>Number(e)+Number(t)),-1))}}}(e),y=N((()=>e.store.states.columns.value.findIndex((({type:e})=>"default"===e)))),b=(e,l)=>{const o=t.props.rowKey;return o?Dt(e,o):l},w=(d,c,w,C=!1)=>{const{tooltipEffect:S,tooltipOptions:E,store:R}=e,{indent:N,columns:k}=R.states,O=p(d,c);let L=!0;w&&(O.push(l.em("row",`level-${w.level}`)),L=w.display);return se("tr",{style:[L?null:{display:"none"},h(d,c)],class:O,key:b(d,c),onDblclick:e=>o(e,d),onClick:e=>n(e,d),onContextmenu:e=>r(e,d),onMouseenter:()=>a(c),onMouseleave:s},k.value.map(((l,o)=>{const{rowspan:n,colspan:r}=m(d,l,c,o);if(!n||!r)return null;const a=Object.assign({},l);a.realWidth=g(k.value,r,o);const s={store:e.store,_self:e.context||t,column:a,row:d,$index:c,cellIndex:o,expanded:C};o===y.value&&w&&(s.treeNode={indent:w.level*N.value,level:w.level},"boolean"==typeof w.expanded&&(s.treeNode.expanded=w.expanded,"loading"in w&&(s.treeNode.loading=w.loading),"noLazyChildren"in w&&(s.treeNode.noLazyChildren=w.noLazyChildren)));const h=`${b(d,c)},${o}`,p=a.columnKey||a.rawColumnKey||"",R=x(o,l,s),O=l.showOverflowTooltip&&ut({effect:S},E,l.showOverflowTooltip);return se("td",{style:f(c,o,d,l),class:v(c,o,d,l,r-1),key:`${p}${h}`,rowspan:n,colspan:r,onMouseenter:e=>i(e,d,O),onMouseleave:u},[R])})))},x=(e,t,l)=>t.renderCell(l);return{wrappedRowRender:(o,n)=>{const r=e.store,{isRowExpanded:a,assertRowKey:s}=r,{treeData:i,lazyTreeNodeMap:u,childrenColumnName:d,rowKey:c}=r.states,h=r.states.columns.value;if(h.some((({type:e})=>"expand"===e))){const e=a(o),s=w(o,n,void 0,e),i=t.renderExpanded;return e?i?[[s,se("tr",{key:`expanded-row__${s.key}`},[se("td",{colspan:h.length,class:`${l.e("cell")} ${l.e("expanded-cell")}`},[i({row:o,$index:n,store:r,expanded:e})])])]]:(console.error("[Element Error]renderExpanded is required."),s):[[s]]}if(Object.keys(i.value).length){s();const e=Dt(o,c.value);let t=i.value[e],l=null;t&&(l={expanded:t.expanded,level:t.level,display:!0},"boolean"==typeof t.lazy&&("boolean"==typeof t.loaded&&t.loaded&&(l.noLazyChildren=!(t.children&&t.children.length)),l.loading=t.loading));const r=[w(o,n,l)];if(t){let l=0;const a=(e,o)=>{e&&e.length&&o&&e.forEach((e=>{const s={display:o.display&&o.expanded,level:o.level+1,expanded:!1,noLazyChildren:!1,loading:!1},h=Dt(e,c.value);if(null==h)throw new Error("For nested data item, row-key is required.");if(t={...i.value[h]},t&&(s.expanded=t.expanded,t.level=t.level||s.level,t.display=!(!t.expanded||!s.display),"boolean"==typeof t.lazy&&("boolean"==typeof t.loaded&&t.loaded&&(s.noLazyChildren=!(t.children&&t.children.length)),s.loading=t.loading)),l++,r.push(w(e,n+l,s)),t){const l=u.value[h]||e[d.value];a(l,t)}}))};t.display=!0;const s=u.value[e]||o[d.value];a(s,t)}return r}return w(o,n,void 0)},tooltipContent:d,tooltipTrigger:c}}var Rl=A({name:"ElTableBody",props:{store:{required:!0,type:Object},stripe:Boolean,tooltipEffect:String,tooltipOptions:{type:Object},context:{default:()=>({}),type:Object},rowClassName:[String,Function],rowStyle:[Object,Function],fixed:{type:String,default:""},highlight:Boolean},setup(e){const t=E(),l=le(yl),o=L("table"),{wrappedRowRender:n,tooltipContent:r,tooltipTrigger:a}=El(e),{onColumnsChange:s,onScrollableChange:i}=gl(l),u=[];return k(e.store.states.hoverRow,((l,n)=>{var r;const a=null==t?void 0:t.vnode.el,s=Array.from((null==a?void 0:a.children)||[]).filter((e=>null==e?void 0:e.classList.contains(`${o.e("row")}`)));let i=l;const d=null==(r=s[i])?void 0:r.childNodes;if(null==d?void 0:d.length){let e=0;Array.from(d).reduce(((t,l,o)=>{var n,r;return(null==(n=d[o])?void 0:n.colSpan)>1&&(e=null==(r=d[o])?void 0:r.colSpan),"TD"!==l.nodeName&&0===e&&t.push(o),e>0&&e--,t}),[]).forEach((e=>{var t;for(i=l;i>0;){const l=null==(t=s[i-1])?void 0:t.childNodes;if(l[e]&&"TD"===l[e].nodeName&&l[e].rowSpan>1){oe(l[e],"hover-cell"),u.push(l[e]);break}i--}}))}else u.forEach((e=>ae(e,"hover-cell"))),u.length=0;var c;e.store.states.isComplex.value&&f&&(c=()=>{const e=s[n],t=s[l];e&&!e.classList.contains("hover-fixed-row")&&ae(e,"hover-row"),t&&oe(t,"hover-row")},f?window.requestAnimationFrame(c):setTimeout(c,16))})),te((()=>{var e;null==(e=Xt)||e()})),{ns:o,onColumnsChange:s,onScrollableChange:i,wrappedRowRender:n,tooltipContent:r,tooltipTrigger:a}},render(){const{wrappedRowRender:e,store:t}=this,l=t.states.data.value||[];return se("tbody",{tabIndex:-1},[l.reduce(((t,l)=>t.concat(e(l,t.length))),[])])}});function Nl(e){const{columns:t}=function(){const e=le(yl),t=null==e?void 0:e.store;return{leftFixedLeafCount:N((()=>t.states.fixedLeafColumnsLength.value)),rightFixedLeafCount:N((()=>t.states.rightFixedColumns.value.length)),columnsCount:N((()=>t.states.columns.value.length)),leftFixedCount:N((()=>t.states.fixedColumns.value.length)),rightFixedCount:N((()=>t.states.rightFixedColumns.value.length)),columns:t.states.columns}}(),l=L("table");return{getCellClasses:(t,o)=>{const n=t[o],r=[l.e("cell"),n.id,n.align,n.labelClassName,...Qt(l.b(),o,n.fixed,e.store)];return n.className&&r.push(n.className),n.children||r.push(l.is("leaf")),r},getCellStyles:(t,l)=>{const o=Jt(l,t.fixed,e.store);return el(o,"left"),el(o,"right"),o},columns:t}}var kl=A({name:"ElTableFooter",props:{fixed:{type:String,default:""},store:{required:!0,type:Object},summaryMethod:Function,sumText:String,border:Boolean,defaultSort:{type:Object,default:()=>({prop:"",order:""})}},setup(e){const{getCellClasses:t,getCellStyles:l,columns:o}=Nl(e);return{ns:L("table"),getCellClasses:t,getCellStyles:l,columns:o}},render(){const{columns:e,getCellStyles:t,getCellClasses:l,summaryMethod:o,sumText:n}=this,r=this.store.states.data.value;let a=[];return o?a=o({columns:e,data:r}):e.forEach(((e,t)=>{if(0===t)return void(a[t]=n);const l=r.map((t=>Number(t[e.property]))),o=[];let s=!0;l.forEach((e=>{if(!Number.isNaN(+e)){s=!1;const t=`${e}`.split(".")[1];o.push(t?t.length:0)}}));const i=Math.max.apply(null,o);a[t]=s?"":l.reduce(((e,t)=>{const l=Number(t);return Number.isNaN(+l)?e:Number.parseFloat((e+t).toFixed(Math.min(i,20)))}),0)})),se(se("tfoot",[se("tr",{},[...e.map(((o,n)=>se("td",{key:n,colspan:o.colSpan,rowspan:o.rowSpan,class:l(e,n),style:t(o,n)},[se("div",{class:["cell",o.labelClassName]},[a[n]])])))])]))}});function Ol(e,t,l,o){const n=S(!1),r=S(null),a=S(!1),s=S({width:null,height:null,headerHeight:null}),i=S(!1),u=S(),d=S(0),c=S(0),h=S(0),p=S(0),f=S(0);ie((()=>{t.setHeight(e.height)})),ie((()=>{t.setMaxHeight(e.maxHeight)})),k((()=>[e.currentRowKey,l.states.rowKey]),(([e,t])=>{R(t)&&R(e)&&l.setCurrentRowKey(`${e}`)}),{immediate:!0}),k((()=>e.data),(e=>{o.store.commit("setData",e)}),{immediate:!0,deep:!0}),ie((()=>{e.expandRowKeys&&l.setExpandRowKeysAdapter(e.expandRowKeys)}));const v=N((()=>e.height||e.maxHeight||l.states.fixedColumns.value.length>0||l.states.rightFixedColumns.value.length>0)),m=N((()=>({width:t.bodyWidth.value?`${t.bodyWidth.value}px`:""}))),g=()=>{v.value&&t.updateElsHeight(),t.updateColumnsWidth(),requestAnimationFrame(b)};J((async()=>{await H(),l.updateColumns(),w(),requestAnimationFrame(g);const t=o.vnode.el,n=o.refs.headerWrapper;e.flexible&&t&&t.parentElement&&(t.parentElement.style.minWidth="0"),s.value={width:u.value=t.offsetWidth,height:t.offsetHeight,headerHeight:e.showHeader&&n?n.offsetHeight:null},l.states.columns.value.forEach((e=>{e.filteredValue&&e.filteredValue.length&&o.store.commit("filterChange",{column:e,values:e.filteredValue,silent:!0})})),o.$ready=!0}));const y=e=>{const{tableWrapper:l}=o.refs;((e,l)=>{if(!e)return;const o=Array.from(e.classList).filter((e=>!e.startsWith("is-scrolling-")));o.push(t.scrollX.value?l:"is-scrolling-none"),e.className=o.join(" ")})(l,e)},b=function(){if(!o.refs.scrollBarRef)return;if(!t.scrollX.value){const e="is-scrolling-none";return void((e=>{const{tableWrapper:t}=o.refs;return!(!t||!t.classList.contains(e))})(e)||y(e))}const e=o.refs.scrollBarRef.wrapRef;if(!e)return;const{scrollLeft:l,offsetWidth:n,scrollWidth:r}=e,{headerWrapper:a,footerWrapper:s}=o.refs;a&&(a.scrollLeft=l),s&&(s.scrollLeft=l);y(l>=r-n-1?"is-scrolling-right":0===l?"is-scrolling-left":"is-scrolling-middle")},w=()=>{o.refs.scrollBarRef&&(o.refs.scrollBarRef.wrapRef&&ue(o.refs.scrollBarRef.wrapRef,"scroll",b,{passive:!0}),e.fit?de(o.vnode.el,x):ue(window,"resize",x),de(o.refs.bodyWrapper,(()=>{var e,t;x(),null==(t=null==(e=o.refs)?void 0:e.scrollBarRef)||t.update()})))},x=()=>{var t,l,n,r;const a=o.vnode.el;if(!o.$ready||!a)return;let i=!1;const{width:m,height:y,headerHeight:b}=s.value,w=u.value=a.offsetWidth;m!==w&&(i=!0);const x=a.offsetHeight;(e.height||v.value)&&y!==x&&(i=!0);const C="fixed"===e.tableLayout?o.refs.headerWrapper:null==(t=o.refs.tableHeaderRef)?void 0:t.$el;e.showHeader&&(null==C?void 0:C.offsetHeight)!==b&&(i=!0),d.value=(null==(l=o.refs.tableWrapper)?void 0:l.scrollHeight)||0,h.value=(null==C?void 0:C.scrollHeight)||0,p.value=(null==(n=o.refs.footerWrapper)?void 0:n.offsetHeight)||0,f.value=(null==(r=o.refs.appendWrapper)?void 0:r.offsetHeight)||0,c.value=d.value-h.value-p.value-f.value,i&&(s.value={width:w,height:x,headerHeight:e.showHeader&&(null==C?void 0:C.offsetHeight)||0},g())},C=ce(),E=N((()=>{const{bodyWidth:e,scrollY:l,gutterWidth:o}=t;return e.value?e.value-(l.value?o:0)+"px":""})),O=N((()=>e.maxHeight?"fixed":e.tableLayout)),L=N((()=>{if(e.data&&e.data.length)return null;let t="100%";e.height&&c.value&&(t=`${c.value}px`);const l=u.value;return{width:l?`${l}px`:"",height:t}})),W=N((()=>e.height?{height:Number.isNaN(Number(e.height))?e.height:`${e.height}px`}:e.maxHeight?{maxHeight:Number.isNaN(Number(e.maxHeight))?e.maxHeight:`${e.maxHeight}px`}:{})),M=N((()=>e.height?{height:"100%"}:e.maxHeight?Number.isNaN(Number(e.maxHeight))?{maxHeight:`calc(${e.maxHeight} - ${h.value+p.value}px)`}:{maxHeight:e.maxHeight-h.value-p.value+"px"}:{}));return{isHidden:n,renderExpanded:r,setDragVisible:e=>{a.value=e},isGroup:i,handleMouseLeave:()=>{o.store.commit("setHoverRow",null),o.hoverState&&(o.hoverState=null)},handleHeaderFooterMousewheel:(e,t)=>{const{pixelX:l,pixelY:n}=t;Math.abs(l)>=Math.abs(n)&&(o.refs.bodyWrapper.scrollLeft+=t.pixelX/5)},tableSize:C,emptyBlockStyle:L,handleFixedMousewheel:(e,t)=>{const l=o.refs.bodyWrapper;if(Math.abs(t.spinY)>0){const o=l.scrollTop;t.pixelY<0&&0!==o&&e.preventDefault(),t.pixelY>0&&l.scrollHeight-l.clientHeight>o&&e.preventDefault(),l.scrollTop+=Math.ceil(t.pixelY/5)}else l.scrollLeft+=Math.ceil(t.pixelX/5)},resizeProxyVisible:a,bodyWidth:E,resizeState:s,doLayout:g,tableBodyStyles:m,tableLayout:O,scrollbarViewStyle:{display:"inline-block",verticalAlign:"middle"},tableInnerStyle:W,scrollbarStyle:M}}function Ll(e){const t=S();J((()=>{(()=>{const l=e.vnode.el.querySelector(".hidden-columns"),o=e.store.states.updateOrderFns;t.value=new MutationObserver((()=>{o.forEach((e=>e()))})),t.value.observe(l,{childList:!0,subtree:!0})})()})),te((()=>{var e;null==(e=t.value)||e.disconnect()}))}var Hl={data:{type:Array,default:()=>[]},size:he,width:[String,Number],height:[String,Number],maxHeight:[String,Number],fit:{type:Boolean,default:!0},stripe:Boolean,border:Boolean,rowKey:[String,Function],showHeader:{type:Boolean,default:!0},showSummary:Boolean,sumText:String,summaryMethod:Function,rowClassName:[String,Function],rowStyle:[Object,Function],cellClassName:[String,Function],cellStyle:[Object,Function],headerRowClassName:[String,Function],headerRowStyle:[Object,Function],headerCellClassName:[String,Function],headerCellStyle:[Object,Function],highlightCurrentRow:Boolean,currentRowKey:[String,Number],emptyText:String,expandRowKeys:Array,defaultExpandAll:Boolean,defaultSort:Object,tooltipEffect:String,tooltipOptions:Object,spanMethod:Function,selectOnIndeterminate:{type:Boolean,default:!0},indent:{type:Number,default:16},treeProps:{type:Object,default:()=>({hasChildren:"hasChildren",children:"children"})},lazy:Boolean,load:Function,style:{type:Object,default:()=>({})},className:{type:String,default:""},tableLayout:{type:String,default:"fixed"},scrollbarAlwaysOn:Boolean,flexible:Boolean,showOverflowTooltip:[Boolean,Object]};function Wl(e){const t="auto"===e.tableLayout;let l=e.columns||[];t&&l.every((e=>void 0===e.width))&&(l=[]);return se("colgroup",{},l.map((l=>se("col",(l=>{const o={key:`${e.tableLayout}_${l.id}`,style:{},name:void 0};return t?o.style={width:`${l.width}px`}:o.name=l.id,o})(l)))))}Wl.props=["columns","tableLayout"];let Ml=1;const Al=A({name:"ElTable",directives:{Mousewheel:Tt},components:{TableHeader:xl,TableBody:Rl,TableFooter:kl,ElScrollbar:ke,hColgroup:Wl},props:Hl,emits:["select","select-all","selection-change","cell-mouse-enter","cell-mouse-leave","cell-contextmenu","cell-click","cell-dblclick","row-click","row-contextmenu","row-dblclick","header-click","header-contextmenu","sort-change","filter-change","current-change","header-dragend","expand-change"],setup(e){const{t:t}=I(),l=L("table"),o=E();fe(yl,o);const n=sl(o,e);o.store=n;const r=new dl({store:o.store,table:o,fit:e.fit,showHeader:e.showHeader});o.layout=r;const a=N((()=>0===(n.states.data.value||[]).length)),{setCurrentRow:s,getSelectionRows:i,toggleRowSelection:u,clearSelection:d,clearFilter:c,toggleAllSelection:h,toggleRowExpansion:p,clearSort:f,sort:v}=function(e){return{setCurrentRow:t=>{e.commit("setCurrentRow",t)},getSelectionRows:()=>e.getSelectionRows(),toggleRowSelection:(t,l)=>{e.toggleRowSelection(t,l,!1),e.updateAllSelected()},clearSelection:()=>{e.clearSelection()},clearFilter:t=>{e.clearFilter(t)},toggleAllSelection:()=>{e.commit("toggleAllSelection")},toggleRowExpansion:(t,l)=>{e.toggleRowExpansionAdapter(t,l)},clearSort:()=>{e.clearSort()},sort:(t,l)=>{e.commit("sort",{prop:t,order:l})}}}(n),{isHidden:m,renderExpanded:g,setDragVisible:y,isGroup:b,handleMouseLeave:w,handleHeaderFooterMousewheel:x,tableSize:C,emptyBlockStyle:R,handleFixedMousewheel:k,resizeProxyVisible:O,bodyWidth:H,resizeState:W,doLayout:M,tableBodyStyles:A,tableLayout:F,scrollbarViewStyle:T,tableInnerStyle:$,scrollbarStyle:B}=Ol(e,r,n,o),{scrollBarRef:K,scrollTo:j,setScrollLeft:D,setScrollTop:P}=(()=>{const e=S(),t=(t,l)=>{const o=e.value;o&&pe(l)&&["Top","Left"].includes(t)&&o[`setScroll${t}`](l)};return{scrollBarRef:e,scrollTo:(t,l)=>{const o=e.value;o&&o.scrollTo(t,l)},setScrollTop:e=>t("Top",e),setScrollLeft:e=>t("Left",e)}})(),z=$e(M,50),V=`${l.namespace.value}-table_${Ml++}`;o.tableId=V,o.state={isGroup:b,resizeState:W,doLayout:M,debouncedUpdateLayout:z};const _=N((()=>e.sumText||t("el.table.sumText"))),Y=N((()=>e.emptyText||t("el.table.emptyText"))),X=N((()=>wl(n.states.originColumns.value)[0]));return Ll(o),{ns:l,layout:r,store:n,columns:X,handleHeaderFooterMousewheel:x,handleMouseLeave:w,tableId:V,tableSize:C,isHidden:m,isEmpty:a,renderExpanded:g,resizeProxyVisible:O,resizeState:W,isGroup:b,bodyWidth:H,tableBodyStyles:A,emptyBlockStyle:R,debouncedUpdateLayout:z,handleFixedMousewheel:k,setCurrentRow:s,getSelectionRows:i,toggleRowSelection:u,clearSelection:d,clearFilter:c,toggleAllSelection:h,toggleRowExpansion:p,clearSort:f,doLayout:M,sort:v,t:t,setDragVisible:y,context:o,computedSumText:_,computedEmptyText:Y,tableLayout:F,scrollbarViewStyle:T,tableInnerStyle:$,scrollbarStyle:B,scrollBarRef:K,scrollTo:j,setScrollLeft:D,setScrollTop:P}}}),Fl=["data-prefix"],Tl={ref:"hiddenColumns",class:"hidden-columns"};var $l=M(Al,[["render",function(e,t,l,o,n,r){const a=B("hColgroup"),s=B("table-header"),i=B("table-body"),u=B("table-footer"),d=B("el-scrollbar"),c=K("mousewheel");return j(),z("div",{ref:"tableWrapper",class:_([{[e.ns.m("fit")]:e.fit,[e.ns.m("striped")]:e.stripe,[e.ns.m("border")]:e.border||e.isGroup,[e.ns.m("hidden")]:e.isHidden,[e.ns.m("group")]:e.isGroup,[e.ns.m("fluid-height")]:e.maxHeight,[e.ns.m("scrollable-x")]:e.layout.scrollX.value,[e.ns.m("scrollable-y")]:e.layout.scrollY.value,[e.ns.m("enable-row-hover")]:!e.store.states.isComplex.value,[e.ns.m("enable-row-transition")]:0!==(e.store.states.data.value||[]).length&&(e.store.states.data.value||[]).length<100,"has-footer":e.showSummary},e.ns.m(e.tableSize),e.className,e.ns.b(),e.ns.m(`layout-${e.tableLayout}`)]),style:ve(e.style),"data-prefix":e.ns.namespace.value,onMouseleave:t[0]||(t[0]=(...t)=>e.handleMouseLeave&&e.handleMouseLeave(...t))},[V("div",{class:_(e.ns.e("inner-wrapper")),style:ve(e.tableInnerStyle)},[V("div",Tl,[Q(e.$slots,"default")],512),e.showHeader&&"fixed"===e.tableLayout?U((j(),z("div",{key:0,ref:"headerWrapper",class:_(e.ns.e("header-wrapper"))},[V("table",{ref:"tableHeader",class:_(e.ns.e("header")),style:ve(e.tableBodyStyles),border:"0",cellpadding:"0",cellspacing:"0"},[y(a,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),y(s,{ref:"tableHeaderRef",border:e.border,"default-sort":e.defaultSort,store:e.store,onSetDragVisible:e.setDragVisible},null,8,["border","default-sort","store","onSetDragVisible"])],6)],2)),[[c,e.handleHeaderFooterMousewheel]]):me("v-if",!0),V("div",{ref:"bodyWrapper",class:_(e.ns.e("body-wrapper"))},[y(d,{ref:"scrollBarRef","view-style":e.scrollbarViewStyle,"wrap-style":e.scrollbarStyle,always:e.scrollbarAlwaysOn},{default:P((()=>[V("table",{ref:"tableBody",class:_(e.ns.e("body")),cellspacing:"0",cellpadding:"0",border:"0",style:ve({width:e.bodyWidth,tableLayout:e.tableLayout})},[y(a,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),e.showHeader&&"auto"===e.tableLayout?(j(),D(s,{key:0,ref:"tableHeaderRef",class:_(e.ns.e("body-header")),border:e.border,"default-sort":e.defaultSort,store:e.store,onSetDragVisible:e.setDragVisible},null,8,["class","border","default-sort","store","onSetDragVisible"])):me("v-if",!0),y(i,{context:e.context,highlight:e.highlightCurrentRow,"row-class-name":e.rowClassName,"tooltip-effect":e.tooltipEffect,"tooltip-options":e.tooltipOptions,"row-style":e.rowStyle,store:e.store,stripe:e.stripe},null,8,["context","highlight","row-class-name","tooltip-effect","tooltip-options","row-style","store","stripe"]),e.showSummary&&"auto"===e.tableLayout?(j(),D(u,{key:1,class:_(e.ns.e("body-footer")),border:e.border,"default-sort":e.defaultSort,store:e.store,"sum-text":e.computedSumText,"summary-method":e.summaryMethod},null,8,["class","border","default-sort","store","sum-text","summary-method"])):me("v-if",!0)],6),e.isEmpty?(j(),z("div",{key:0,ref:"emptyBlock",style:ve(e.emptyBlockStyle),class:_(e.ns.e("empty-block"))},[V("span",{class:_(e.ns.e("empty-text"))},[Q(e.$slots,"empty",{},(()=>[q(G(e.computedEmptyText),1)]))],2)],6)):me("v-if",!0),e.$slots.append?(j(),z("div",{key:1,ref:"appendWrapper",class:_(e.ns.e("append-wrapper"))},[Q(e.$slots,"append")],2)):me("v-if",!0)])),_:3},8,["view-style","wrap-style","always"])],2),e.showSummary&&"fixed"===e.tableLayout?U((j(),z("div",{key:1,ref:"footerWrapper",class:_(e.ns.e("footer-wrapper"))},[V("table",{class:_(e.ns.e("footer")),cellspacing:"0",cellpadding:"0",border:"0",style:ve(e.tableBodyStyles)},[y(a,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),y(u,{border:e.border,"default-sort":e.defaultSort,store:e.store,"sum-text":e.computedSumText,"summary-method":e.summaryMethod},null,8,["border","default-sort","store","sum-text","summary-method"])],6)],2)),[[ge,!e.isEmpty],[c,e.handleHeaderFooterMousewheel]]):me("v-if",!0),e.border||e.isGroup?(j(),z("div",{key:2,class:_(e.ns.e("border-left-patch"))},null,2)):me("v-if",!0)],6),U(V("div",{ref:"resizeProxy",class:_(e.ns.e("column-resize-proxy"))},null,2),[[ge,e.resizeProxyVisible]])],46,Fl)}],["__file","table.vue"]]);const Il={selection:"table-column--selection",expand:"table__expand-column"},Bl={default:{order:""},selection:{width:48,minWidth:48,realWidth:48,order:""},expand:{width:48,minWidth:48,realWidth:48,order:""},index:{width:48,minWidth:48,realWidth:48,order:""}},Kl={selection:{renderHeader:({store:e,column:t})=>se(Ie,{disabled:e.states.data.value&&0===e.states.data.value.length,size:e.states.tableSize.value,indeterminate:e.states.selection.value.length>0&&!e.states.isAllSelected.value,"onUpdate:modelValue":e.toggleAllSelection,modelValue:e.states.isAllSelected.value,ariaLabel:t.label}),renderCell:({row:e,column:t,store:l,$index:o})=>se(Ie,{disabled:!!t.selectable&&!t.selectable.call(null,e,o),size:l.states.tableSize.value,onChange:()=>{l.commit("rowSelectedChanged",e)},onClick:e=>e.stopPropagation(),modelValue:l.isSelected(e),ariaLabel:t.label}),sortable:!1,resizable:!1},index:{renderHeader:({column:e})=>e.label||"#",renderCell({column:e,$index:t}){let l=t+1;const o=e.index;return"number"==typeof o?l=t+o:"function"==typeof o&&(l=o(t)),se("div",{},[l])},sortable:!1},expand:{renderHeader:({column:e})=>e.label||"",renderCell({row:e,store:t,expanded:l}){const{ns:o}=t,n=[o.e("expand-icon")];l&&n.push(o.em("expand-icon","expanded"));return se("div",{class:n,onClick:function(l){l.stopPropagation(),t.toggleRowExpansion(e)}},{default:()=>[se(F,null,{default:()=>[se(be)]})]})},sortable:!1,resizable:!1}};function jl({row:e,column:t,$index:l}){var o;const n=t.property,r=n&&ye(e,n).value;return t&&t.formatter?t.formatter(e,t,r,l):(null==(o=null==r?void 0:r.toString)?void 0:o.call(r))||""}function Dl(e,t){return e.reduce(((e,t)=>(e[t]=t,e)),t)}function Pl(e,t,l){const o=E(),n=S(""),r=S(!1),a=S(),s=S(),i=L("table");ie((()=>{a.value=e.align?`is-${e.align}`:null,a.value})),ie((()=>{s.value=e.headerAlign?`is-${e.headerAlign}`:a.value,s.value}));const u=N((()=>{let e=o.vnode.vParent||o.parent;for(;e&&!e.tableId&&!e.columnId;)e=e.vnode.vParent||e.parent;return e})),d=N((()=>{const{store:e}=o.parent;if(!e)return!1;const{treeData:t}=e.states,l=t.value;return l&&Object.keys(l).length>0})),c=S(zt(e.width)),h=S(Vt(e.minWidth));return{columnId:n,realAlign:a,isSubColumn:r,realHeaderAlign:s,columnOrTableParent:u,setColumnWidth:e=>(c.value&&(e.width=c.value),h.value&&(e.minWidth=h.value),!c.value&&h.value&&(e.width=void 0),e.minWidth||(e.minWidth=80),e.realWidth=Number(void 0===e.width?e.minWidth:e.width),e),setColumnForcedProps:e=>{const t=e.type,l=Kl[t]||{};Object.keys(l).forEach((t=>{const o=l[t];"className"!==t&&void 0!==o&&(e[t]=o)}));const o=(e=>Il[e]||"")(t);if(o){const t=`${R(i.namespace)}-${o}`;e.className=e.className?`${e.className} ${t}`:t}return e},setColumnRenders:n=>{e.renderHeader||"selection"!==n.type&&(n.renderHeader=e=>(o.columnConfig.value.label,Q(t,"header",e,(()=>[n.label])))),t["filter-icon"]&&(n.renderFilterIcon=e=>Q(t,"filter-icon",e));let r=n.renderCell;return"expand"===n.type?(n.renderCell=e=>se("div",{class:"cell"},[r(e)]),l.value.renderExpanded=e=>t.default?t.default(e):t.default):(r=r||jl,n.renderCell=e=>{let a=null;if(t.default){const l=t.default(e);a=l.some((e=>e.type!==xe))?l:r(e)}else a=r(e);const{columns:s}=l.value.store.states,u=s.value.findIndex((e=>"default"===e.type)),c=function({row:e,treeNode:t,store:l},o=!1){const{ns:n}=l;if(!t)return o?[se("span",{class:n.e("placeholder")})]:null;const r=[],a=function(o){o.stopPropagation(),t.loading||l.loadOrToggle(e)};if(t.indent&&r.push(se("span",{class:n.e("indent"),style:{"padding-left":`${t.indent}px`}})),"boolean"!=typeof t.expanded||t.noLazyChildren)r.push(se("span",{class:n.e("placeholder")}));else{const e=[n.e("expand-icon"),t.expanded?n.em("expand-icon","expanded"):""];let l=be;t.loading&&(l=we),r.push(se("div",{class:e,onClick:a},{default:()=>[se(F,{class:{[n.is("loading")]:t.loading}},{default:()=>[se(l)]})]}))}return r}(e,d.value&&e.cellIndex===u),h={class:"cell",style:{}};return n.showOverflowTooltip&&(h.class=`${h.class} ${R(i.namespace)}-tooltip`,h.style={width:(e.column.realWidth||Number(e.column.width))-1+"px"}),(e=>{function t(e){var t;"ElTableColumn"===(null==(t=null==e?void 0:e.type)?void 0:t.name)&&(e.vParent=o)}Array.isArray(e)?e.forEach((e=>t(e))):t(e)})(a),se("div",h,[c,a])}),n},getPropsData:(...t)=>t.reduce(((t,l)=>(Array.isArray(l)&&l.forEach((l=>{t[l]=e[l]})),t)),{}),getColumnElIndex:(e,t)=>Array.prototype.indexOf.call(e,t),updateColumnOrder:()=>{l.value.store.commit("updateColumnOrder",o.columnConfig.value)}}}var zl={type:{type:String,default:"default"},label:String,className:String,labelClassName:String,property:String,prop:String,width:{type:[String,Number],default:""},minWidth:{type:[String,Number],default:""},renderHeader:Function,sortable:{type:[Boolean,String],default:!1},sortMethod:Function,sortBy:[String,Function,Array],resizable:{type:Boolean,default:!0},columnKey:String,align:String,headerAlign:String,showOverflowTooltip:{type:[Boolean,Object],default:void 0},fixed:[Boolean,String],formatter:Function,selectable:Function,reserveSelection:Boolean,filterMethod:Function,filteredValue:Array,filters:Array,filterPlacement:String,filterMultiple:{type:Boolean,default:!0},filterClassName:String,index:[Number,Function],sortOrders:{type:Array,default:()=>["ascending","descending",null],validator:e=>e.every((e=>["ascending","descending",null].includes(e)))}};let Vl=1;var _l=A({name:"ElTableColumn",components:{ElCheckbox:Ie},props:zl,setup(e,{slots:t}){const l=E(),o=S({}),n=N((()=>{let e=l.parent;for(;e&&!e.tableId;)e=e.parent;return e})),{registerNormalWatchers:r,registerComplexWatchers:a}=function(e,t){const l=E();return{registerComplexWatchers:()=>{const o={realWidth:"width",realMinWidth:"minWidth"},n=Dl(["fixed"],o);Object.keys(n).forEach((n=>{const r=o[n];v(t,r)&&k((()=>t[r]),(t=>{let o=t;"width"===r&&"realWidth"===n&&(o=zt(t)),"minWidth"===r&&"realMinWidth"===n&&(o=Vt(t)),l.columnConfig.value[r]=o,l.columnConfig.value[n]=o;const a="fixed"===r;e.value.store.scheduleLayout(a)}))}))},registerNormalWatchers:()=>{const e={property:"prop",align:"realAlign",headerAlign:"realHeaderAlign"},o=Dl(["label","filters","filterMultiple","filteredValue","sortable","index","formatter","className","labelClassName","filterClassName","showOverflowTooltip"],e);Object.keys(o).forEach((o=>{const n=e[o];v(t,n)&&k((()=>t[n]),(e=>{l.columnConfig.value[o]=e}))}))}}}(n,e),{columnId:s,isSubColumn:i,realHeaderAlign:u,columnOrTableParent:d,setColumnWidth:c,setColumnForcedProps:h,setColumnRenders:p,getPropsData:f,getColumnElIndex:m,realAlign:g,updateColumnOrder:y}=Pl(e,t,n),b=d.value;s.value=`${b.tableId||b.columnId}_column_${Vl++}`,Z((()=>{i.value=n.value!==b;const t=e.type||"default",d=""===e.sortable||e.sortable,m=Ce(e.showOverflowTooltip)?b.props.showOverflowTooltip:e.showOverflowTooltip,y={...Bl[t],id:s.value,type:t,property:e.prop||e.property,align:g,headerAlign:u,showOverflowTooltip:m,filterable:e.filters||e.filterMethod,filteredValue:[],filterPlacement:"",filterClassName:"",isColumnGroup:!1,isSubColumn:!1,filterOpened:!1,sortable:d,index:e.index,rawColumnKey:l.vnode.key};let w=f(["columnKey","label","className","labelClassName","type","renderHeader","formatter","fixed","resizable"],["sortMethod","sortBy","sortOrders"],["selectable","reserveSelection"],["filterMethod","filters","filterMultiple","filterOpened","filteredValue","filterPlacement","filterClassName"]);w=function(e,t){const l={};let o;for(o in e)l[o]=e[o];for(o in t)if(v(t,o)){const e=t[o];void 0!==e&&(l[o]=e)}return l}(y,w);w=function(...e){return 0===e.length?e=>e:1===e.length?e[0]:e.reduce(((e,t)=>(...l)=>e(t(...l))))}(p,c,h)(w),o.value=w,r(),a()})),J((()=>{var e;const t=d.value,r=i.value?t.vnode.el.children:null==(e=t.refs.hiddenColumns)?void 0:e.children,a=()=>m(r||[],l.vnode.el);o.value.getColumnIndex=a;a()>-1&&n.value.store.commit("insertColumn",o.value,i.value?t.columnConfig.value:null,y)})),Se((()=>{o.value.getColumnIndex()>-1&&n.value.store.commit("removeColumn",o.value,i.value?b.columnConfig.value:null,y)})),l.columnId=s.value,l.columnConfig=o},render(){var e,t,l;try{const o=null==(t=(e=this.$slots).default)?void 0:t.call(e,{row:{},column:{},$index:-1}),n=[];if(Array.isArray(o))for(const e of o)"ElTableColumn"===(null==(l=e.type)?void 0:l.name)||2&e.shapeFlag?n.push(e):e.type===Y&&Array.isArray(e.children)&&e.children.forEach((e=>{1024===(null==e?void 0:e.patchFlag)||Ee(null==e?void 0:e.children)||n.push(e)}));return se("div",n)}catch(o){return se("div",[])}}});const Yl=Re($l,{TableColumn:_l}),Xl=Ne(_l);export{Xl as E,Yl as a}; diff --git a/resources/views/dist/js/el-text.8E8aFHxr.js b/resources/views/dist/js/el-text.8E8aFHxr.js new file mode 100644 index 0000000..c994a0c --- /dev/null +++ b/resources/views/dist/js/el-text.8E8aFHxr.js @@ -0,0 +1 @@ +import{v as a,bN as e,d as s,X as t,b as l,c as n,bp as i,e as p,f as r,w as u,k as c,i as m,g as d,n as o,D as f,_ as g,q as y}from"./index.DMBpWXpT.js";const b=a({type:{type:String,values:["primary","success","info","warning","danger",""],default:""},size:{type:String,values:e,default:""},truncated:Boolean,lineClamp:{type:[String,Number]},tag:{type:String,default:"span"}}),v=s({name:"ElText"});const x=y(g(s({...v,props:b,setup(a){const e=a,s=t(),g=l("text"),y=n((()=>[g.b(),g.m(e.type),g.m(s.value),g.is("truncated",e.truncated),g.is("line-clamp",!i(e.lineClamp))]));return(a,e)=>(p(),r(f(a.tag),{class:m(d(y)),style:o({"-webkit-line-clamp":a.lineClamp})},{default:u((()=>[c(a.$slots,"default")])),_:3},8,["class","style"]))}}),[["__file","text.vue"]]));export{x as E}; diff --git a/resources/views/dist/js/el-tooltip.l0sNRNKZ.js b/resources/views/dist/js/el-tooltip.l0sNRNKZ.js new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/resources/views/dist/js/el-tooltip.l0sNRNKZ.js @@ -0,0 +1 @@ + diff --git a/resources/views/dist/js/el-tree-select.BGIuc0mE.js b/resources/views/dist/js/el-tree-select.BGIuc0mE.js new file mode 100644 index 0000000..2140702 --- /dev/null +++ b/resources/views/dist/js/el-tree-select.BGIuc0mE.js @@ -0,0 +1 @@ +import{a as e,E as t}from"./el-select.C9ddzdnq.js";import{a as l}from"./el-tree.UTBgh5GW.js";import{b as a,J as s,a2 as o,cO as r,bd as d,U as n,c,d as i,G as u,bm as p,B as h,I as f,r as v,a0 as k,o as m,am as y,_ as C}from"./index.DMBpWXpT.js";import{e as b}from"./strings.DeQ3Zoz4.js";import{i as g}from"./isEqual.B61-3bNT.js";import{s as K}from"./token.DWNpOE8r.js";const N=i({extends:t,setup(e,l){const a=t.setup(e,l);delete a.selectOptionClick;const r=u().proxy;return o((()=>{a.select.states.cachedOptions.get(r.value)||a.select.onOptionCreate(r)})),s((()=>l.attrs.visible),(e=>{a.states.visible=e}),{immediate:!0}),a},methods:{selectOptionClick(){this.$el.parentElement.click()}}});function x(e){return e||0===e}function O(e){return Array.isArray(e)&&e.length}function E(e){return Array.isArray(e)?e:x(e)?[e]:[]}function A(e,t,l,a,s){for(let o=0;o[]}},setup(e){const t=h(K);return s((()=>e.data),(()=>{var l;e.data.forEach((e=>{t.states.cachedOptions.has(e.value)||t.states.cachedOptions.set(e.value,e)}));const a=(null==(l=t.selectRef)?void 0:l.querySelectorAll("input"))||[];f&&!Array.from(a).includes(document.activeElement)&&t.setSelected()}),{flush:"post",immediate:!0}),()=>{}}});var M=C(i({name:"ElTreeSelect",inheritAttrs:!1,props:{...e.props,...l.props,cacheData:{type:Array,default:()=>[]}},setup(t,i){const{slots:u,expose:h}=i,f=v(),C=v(),K=c((()=>t.nodeKey||t.valueKey||"value")),M=((t,{attrs:l,emit:i},{select:u,tree:p,key:h})=>{const f=a("tree-select");return s((()=>t.data),(()=>{t.filterable&&o((()=>{var e,t;null==(t=p.value)||t.filter(null==(e=u.value)?void 0:e.states.inputValue)}))}),{flush:"post"}),{...r(d(t),Object.keys(e.props)),...l,"onUpdate:modelValue":e=>i(n,e),valueKey:h,popperClass:c((()=>{const e=[f.e("popper")];return t.popperClass&&e.push(t.popperClass),e.join(" ")})),filterMethod:(e="")=>{var l;t.filterMethod?t.filterMethod(e):t.remoteMethod?t.remoteMethod(e):null==(l=p.value)||l.filter(e)}}})(t,i,{select:f,tree:C,key:K}),{cacheOptions:S,...w}=((e,{attrs:t,slots:a,emit:i},{select:u,tree:h,key:f})=>{s((()=>e.modelValue),(()=>{e.showCheckbox&&o((()=>{const t=h.value;t&&!g(t.getCheckedKeys(),E(e.modelValue))&&t.setCheckedKeys(E(e.modelValue))}))}),{immediate:!0,deep:!0});const v=c((()=>({value:f.value,label:"label",children:"children",disabled:"disabled",isLeaf:"isLeaf",...e.props}))),k=(e,t)=>{var l;const a=v.value[e];return p(a)?a(t,null==(l=h.value)?void 0:l.getNode(k("value",t))):t[a]},m=E(e.modelValue).map((t=>A(e.data||[],(e=>k("value",e)===t),(e=>k("children",e)),((e,t,l,a)=>a&&k("value",a))))).filter((e=>x(e))),y=c((()=>{if(!e.renderAfterExpand&&!e.lazy)return[];const t=[];return V(e.data.concat(e.cacheData),(e=>{const l=k("value",e);t.push({value:l,currentLabel:k("label",e),isDisabled:k("disabled",e)})}),(e=>k("children",e))),t}));return{...r(d(e),Object.keys(l.props)),...t,nodeKey:f,expandOnClickNode:c((()=>!e.checkStrictly&&e.expandOnClickNode)),defaultExpandedKeys:c((()=>e.defaultExpandedKeys?e.defaultExpandedKeys.concat(m):m)),renderContent:(t,{node:l,data:s,store:o})=>t(N,{value:k("value",s),label:k("label",s),disabled:k("disabled",s),visible:l.visible},e.renderContent?()=>e.renderContent(t,{node:l,data:s,store:o}):a.default?()=>a.default({node:l,data:s,store:o}):void 0),filterNodeMethod:(t,l,a)=>e.filterNodeMethod?e.filterNodeMethod(t,l,a):!t||new RegExp(b(t),"i").test(k("label",l)||""),onNodeClick:(l,a,s)=>{var o,r,d,n;if(null==(o=t.onNodeClick)||o.call(t,l,a,s),!e.showCheckbox||!e.checkOnClickNode){if(e.showCheckbox||!e.checkStrictly&&!a.isLeaf)e.expandOnClickNode&&s.proxy.handleExpandIconClick();else if(!k("disabled",l)){const e=null==(r=u.value)?void 0:r.states.options.get(k("value",l));null==(d=u.value)||d.handleOptionSelect(e)}null==(n=u.value)||n.focus()}},onCheck:(l,a)=>{var s;if(!e.showCheckbox)return;const r=k("value",l),d={};V([h.value.store.root],(e=>d[e.key]=e),(e=>e.childNodes));const c=a.checkedKeys,p=e.multiple?E(e.modelValue).filter((e=>!(e in d)&&!c.includes(e))):[],f=p.concat(c);if(e.checkStrictly)i(n,e.multiple?f:f.includes(r)?r:void 0);else if(e.multiple)i(n,p.concat(h.value.getCheckedKeys(!0)));else{const t=A([l],(e=>!O(k("children",e))&&!k("disabled",e)),(e=>k("children",e))),a=t?k("value",t):void 0,s=x(e.modelValue)&&!!A([l],(t=>k("value",t)===e.modelValue),(e=>k("children",e)));i(n,a===e.modelValue||s?void 0:a)}o((()=>{var a;const s=E(e.modelValue);h.value.setCheckedKeys(s),null==(a=t.onCheck)||a.call(t,l,{checkedKeys:h.value.getCheckedKeys(),checkedNodes:h.value.getCheckedNodes(),halfCheckedKeys:h.value.getHalfCheckedKeys(),halfCheckedNodes:h.value.getHalfCheckedNodes()})})),null==(s=u.value)||s.focus()},cacheOptions:y}})(t,i,{select:f,tree:C,key:K}),H=k({});return h(H),m((()=>{Object.assign(H,{...r(C.value,["filter","updateKeyChildren","getCheckedNodes","setCheckedNodes","getCheckedKeys","setCheckedKeys","setChecked","getHalfCheckedNodes","getHalfCheckedKeys","getCurrentKey","getCurrentNode","setCurrentKey","setCurrentNode","getNode","remove","append","insertBefore","insertAfter"]),...r(f.value,["focus","blur"])})})),()=>y(e,k({...M,ref:e=>f.value=e}),{...u,default:()=>[y(j,{data:S.value}),y(l,k({...w,ref:e=>C.value=e}))]})}}),[["__file","tree-select.vue"]]);M.install=e=>{e.component(M.name,M)};const S=M;export{S as E}; diff --git a/resources/views/dist/js/el-tree.UTBgh5GW.js b/resources/views/dist/js/el-tree.UTBgh5GW.js new file mode 100644 index 0000000..1604c0a --- /dev/null +++ b/resources/views/dist/js/el-tree.UTBgh5GW.js @@ -0,0 +1 @@ +import{d as e,b as t,e as d,f as n,w as o,k as a,a8 as s,cH as r,g as i,T as l,_ as c,Q as h,a0 as u,as as p,cI as f,B as g,am as y,z as v,r as k,ah as N,ag as C,E as x,bk as m,J as b,a2 as E,cJ as D,au as K,a3 as w,aa as S,h as A,C as T,D as B,i as L,j as O,p as $,l as _,n as H,S as q,V as I,G as M,bm as z,N as F,s as P,o as j,co as R,a as U,ad as J,x as Q,y as W,c as G,ci as V,F as Y}from"./index.DMBpWXpT.js";import{s as X}from"./token.DWNpOE8r.js";import{E as Z}from"./el-checkbox.8MJHthul.js";const ee=e({name:"ElCollapseTransition"});var te=c(e({...ee,setup(e){const c=t("collapse-transition"),h=e=>{e.style.maxHeight="",e.style.overflow=e.dataset.oldOverflow,e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom},u={beforeEnter(e){e.dataset||(e.dataset={}),e.dataset.oldPaddingTop=e.style.paddingTop,e.dataset.oldPaddingBottom=e.style.paddingBottom,e.style.height&&(e.dataset.elExistsHeight=e.style.height),e.style.maxHeight=0,e.style.paddingTop=0,e.style.paddingBottom=0},enter(e){requestAnimationFrame((()=>{e.dataset.oldOverflow=e.style.overflow,e.dataset.elExistsHeight?e.style.maxHeight=e.dataset.elExistsHeight:0!==e.scrollHeight?e.style.maxHeight=`${e.scrollHeight}px`:e.style.maxHeight=0,e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom,e.style.overflow="hidden"}))},afterEnter(e){e.style.maxHeight="",e.style.overflow=e.dataset.oldOverflow},enterCancelled(e){h(e)},beforeLeave(e){e.dataset||(e.dataset={}),e.dataset.oldPaddingTop=e.style.paddingTop,e.dataset.oldPaddingBottom=e.style.paddingBottom,e.dataset.oldOverflow=e.style.overflow,e.style.maxHeight=`${e.scrollHeight}px`,e.style.overflow="hidden"},leave(e){0!==e.scrollHeight&&(e.style.maxHeight=0,e.style.paddingTop=0,e.style.paddingBottom=0)},afterLeave(e){h(e)},leaveCancelled(e){h(e)}};return(e,t)=>(d(),n(l,s({name:i(c).b()},r(u)),{default:o((()=>[a(e.$slots,"default")])),_:3},16,["name"]))}}),[["__file","collapse-transition.vue"]]);te.install=e=>{e.component(te.name,te)};const de=te,ne="$treeNodeId",oe=function(e,t){t&&!t[ne]&&Object.defineProperty(t,ne,{value:e.id,enumerable:!1,configurable:!1,writable:!1})},ae=function(e,t){return e?t[e]:t[ne]},se=(e,t,d)=>{const n=e.value.currentNode;d();const o=e.value.currentNode;n!==o&&t("current-change",o?o.data:null,o)},re=e=>{let t=!0,d=!0,n=!0;for(let o=0,a=e.length;o0&&e.lazy&&e.defaultExpandAll&&this.expand(),Array.isArray(this.data)||oe(this,this.data),!this.data)return;const d=e.defaultExpandedKeys,n=e.key;n&&d&&d.includes(this.key)&&this.expand(null,e.autoExpandParent),n&&void 0!==e.currentNodeKey&&this.key===e.currentNodeKey&&(e.currentNode=this,e.currentNode.isCurrent=!0),e.lazy&&e._initDefaultCheckedNode(this),this.updateLeafState(),!this.parent||1!==this.level&&!0!==this.parent.expanded||(this.canFocus=!0)}setData(e){let t;Array.isArray(e)||oe(this,e),this.data=e,this.childNodes=[],t=0===this.level&&Array.isArray(this.data)?this.data:le(this,"children")||[];for(let d=0,n=t.length;d-1)return e.childNodes[t+1]}return null}get previousSibling(){const e=this.parent;if(e){const t=e.childNodes.indexOf(this);if(t>-1)return t>0?e.childNodes[t-1]:null}return null}contains(e,t=!0){return(this.childNodes||[]).some((d=>d===e||t&&d.contains(e)))}remove(){const e=this.parent;e&&e.removeChild(this)}insertChild(e,t,d){if(!e)throw new Error("InsertChild error: child is required.");if(!(e instanceof he)){if(!d){const d=this.getChildren(!0);d.includes(e.data)||(void 0===t||t<0?d.push(e.data):d.splice(t,0,e.data))}Object.assign(e,{parent:this,store:this.store}),(e=u(new he(e)))instanceof he&&e.initialize()}e.level=this.level+1,void 0===t||t<0?this.childNodes.push(e):this.childNodes.splice(t,0,e),this.updateLeafState()}insertBefore(e,t){let d;t&&(d=this.childNodes.indexOf(t)),this.insertChild(e,d)}insertAfter(e,t){let d;t&&(d=this.childNodes.indexOf(t),-1!==d&&(d+=1)),this.insertChild(e,d)}removeChild(e){const t=this.getChildren()||[],d=t.indexOf(e.data);d>-1&&t.splice(d,1);const n=this.childNodes.indexOf(e);n>-1&&(this.store&&this.store.deregisterNode(e),e.parent=null,this.childNodes.splice(n,1)),this.updateLeafState()}removeChildByData(e){let t=null;for(let d=0;d{if(t){let e=this.parent;for(;e.level>0;)e.expanded=!0,e=e.parent}this.expanded=!0,e&&e(),this.childNodes.forEach((e=>{e.canFocus=!0}))};this.shouldLoadData()?this.loadData((e=>{Array.isArray(e)&&(this.checked?this.setChecked(!0,!0):this.store.checkStrictly||ie(this),d())})):d()}doCreateChildren(e,t={}){e.forEach((e=>{this.insertChild(Object.assign({data:e},t),void 0,!0)}))}collapse(){this.expanded=!1,this.childNodes.forEach((e=>{e.canFocus=!1}))}shouldLoadData(){return!0===this.store.lazy&&this.store.load&&!this.loaded}updateLeafState(){if(!0===this.store.lazy&&!0!==this.loaded&&void 0!==this.isLeafByUser)return void(this.isLeaf=this.isLeafByUser);const e=this.childNodes;!this.store.lazy||!0===this.store.lazy&&!0===this.loaded?this.isLeaf=!e||0===e.length:this.isLeaf=!1}setChecked(e,t,d,n){if(this.indeterminate="half"===e,this.checked=!0===e,this.store.checkStrictly)return;if(!this.shouldLoadData()||this.store.checkDescendants){const{all:d,allWithoutDisable:o}=re(this.childNodes);this.isLeaf||d||!o||(this.checked=!1,e=!1);const a=()=>{if(t){const d=this.childNodes;for(let s=0,r=d.length;s{a(),ie(this)}),{checked:!1!==e});a()}const o=this.parent;o&&0!==o.level&&(d||ie(o))}getChildren(e=!1){if(0===this.level)return this.data;const t=this.data;if(!t)return null;const d=this.store.props;let n="children";return d&&(n=d.children||"children"),void 0===t[n]&&(t[n]=null),e&&!t[n]&&(t[n]=[]),t[n]}updateChildren(){const e=this.getChildren()||[],t=this.childNodes.map((e=>e.data)),d={},n=[];e.forEach(((e,o)=>{const a=e[ne];!!a&&t.findIndex((e=>e[ne]===a))>=0?d[a]={index:o,data:e}:n.push({index:o,data:e})})),this.store.lazy||t.forEach((e=>{d[e[ne]]||this.removeChildByData(e)})),n.forEach((({index:e,data:t})=>{this.insertChild({data:t},e)})),this.updateLeafState()}loadData(e,t={}){if(!0!==this.store.lazy||!this.store.load||this.loaded||this.loading&&!Object.keys(t).length)e&&e.call(this);else{this.loading=!0;const d=d=>{this.childNodes=[],this.doCreateChildren(d,t),this.loaded=!0,this.loading=!1,this.updateLeafState(),e&&e.call(this,d)},n=()=>{this.loading=!1};this.store.load(this,d,n)}}eachNode(e){const t=[this];for(;t.length;){const d=t.shift();t.unshift(...d.childNodes),e(d)}}reInitChecked(){this.store.checkStrictly||ie(this)}}class ue{constructor(e){this.currentNode=null,this.currentNodeKey=null;for(const t in e)h(e,t)&&(this[t]=e[t]);this.nodesMap={}}initialize(){if(this.root=new he({data:this.data,store:this}),this.root.initialize(),this.lazy&&this.load){(0,this.load)(this.root,(e=>{this.root.doCreateChildren(e),this._initDefaultCheckedNodes()}))}else this._initDefaultCheckedNodes()}filter(e){const t=this.filterNodeMethod,d=this.lazy,n=function(o){const a=o.root?o.root.childNodes:o.childNodes;if(a.forEach((d=>{d.visible=t.call(d,e,d.data,d),n(d)})),!o.visible&&a.length){let e=!0;e=!a.some((e=>e.visible)),o.root?o.root.visible=!1===e:o.visible=!1===e}e&&o.visible&&!o.isLeaf&&(d&&!o.loaded||o.expand())};n(this)}setData(e){e!==this.root.data?(this.root.setData(e),this._initDefaultCheckedNodes()):this.root.updateChildren()}getNode(e){if(e instanceof he)return e;const t=p(e)?ae(this.key,e):e;return this.nodesMap[t]||null}insertBefore(e,t){const d=this.getNode(t);d.parent.insertBefore({data:e},d)}insertAfter(e,t){const d=this.getNode(t);d.parent.insertAfter({data:e},d)}remove(e){const t=this.getNode(e);t&&t.parent&&(t===this.currentNode&&(this.currentNode=null),t.parent.removeChild(t))}append(e,t){const d=f(t)?this.root:this.getNode(t);d&&d.insertChild({data:e})}_initDefaultCheckedNodes(){const e=this.defaultCheckedKeys||[],t=this.nodesMap;e.forEach((e=>{const d=t[e];d&&d.setChecked(!0,!this.checkStrictly)}))}_initDefaultCheckedNode(e){(this.defaultCheckedKeys||[]).includes(e.key)&&e.setChecked(!0,!this.checkStrictly)}setDefaultCheckedKey(e){e!==this.defaultCheckedKeys&&(this.defaultCheckedKeys=e,this._initDefaultCheckedNodes())}registerNode(e){const t=this.key;if(e&&e.data)if(t){void 0!==e.key&&(this.nodesMap[e.key]=e)}else this.nodesMap[e.id]=e}deregisterNode(e){this.key&&e&&e.data&&(e.childNodes.forEach((e=>{this.deregisterNode(e)})),delete this.nodesMap[e.key])}getCheckedNodes(e=!1,t=!1){const d=[],n=function(o){(o.root?o.root.childNodes:o.childNodes).forEach((o=>{(o.checked||t&&o.indeterminate)&&(!e||e&&o.isLeaf)&&d.push(o.data),n(o)}))};return n(this),d}getCheckedKeys(e=!1){return this.getCheckedNodes(e).map((e=>(e||{})[this.key]))}getHalfCheckedNodes(){const e=[],t=function(d){(d.root?d.root.childNodes:d.childNodes).forEach((d=>{d.indeterminate&&e.push(d.data),t(d)}))};return t(this),e}getHalfCheckedKeys(){return this.getHalfCheckedNodes().map((e=>(e||{})[this.key]))}_getAllNodes(){const e=[],t=this.nodesMap;for(const d in t)h(t,d)&&e.push(t[d]);return e}updateChildren(e,t){const d=this.nodesMap[e];if(!d)return;const n=d.childNodes;for(let o=n.length-1;o>=0;o--){const e=n[o];this.remove(e.data)}for(let o=0,a=t.length;oe.level-t.level)),o=Object.create(null),a=Object.keys(d);n.forEach((e=>e.setChecked(!1,!1)));const s=t=>{t.childNodes.forEach((t=>{var d;o[t.data[e]]=!0,(null==(d=t.childNodes)?void 0:d.length)&&s(t)}))};for(let r=0,i=n.length;r{t.isLeaf||t.setChecked(!1,!1),e(t)}))};e(d)}}else d.checked&&!o[i]&&d.setChecked(!1,!1)}}setCheckedNodes(e,t=!1){const d=this.key,n={};e.forEach((e=>{n[(e||{})[d]]=!0})),this._setCheckedKeys(d,t,n)}setCheckedKeys(e,t=!1){this.defaultCheckedKeys=e;const d=this.key,n={};e.forEach((e=>{n[e]=!0})),this._setCheckedKeys(d,t,n)}setDefaultExpandedKeys(e){e=e||[],this.defaultExpandedKeys=e,e.forEach((e=>{const t=this.getNode(e);t&&t.expand(null,this.autoExpandParent)}))}setChecked(e,t,d){const n=this.getNode(e);n&&n.setChecked(!!t,d)}getCurrentNode(){return this.currentNode}setCurrentNode(e){const t=this.currentNode;t&&(t.isCurrent=!1),this.currentNode=e,this.currentNode.isCurrent=!0}setUserCurrentNode(e,t=!0){const d=e[this.key],n=this.nodesMap[d];this.setCurrentNode(n),t&&this.currentNode.level>1&&this.currentNode.parent.expand(null,!0)}setCurrentNodeKey(e,t=!0){if(null==e)return this.currentNode&&(this.currentNode.isCurrent=!1),void(this.currentNode=null);const d=this.getNode(e);d&&(this.setCurrentNode(d),t&&this.currentNode.level>1&&this.currentNode.parent.expand(null,!0))}}var pe=c(e({name:"ElTreeNodeContent",props:{node:{type:Object,required:!0},renderContent:Function},setup(e){const d=t("tree"),n=g("NodeInstance"),o=g("RootTree");return()=>{const t=e.node,{data:s,store:r}=t;return e.renderContent?e.renderContent(y,{_self:n,node:t,data:s,store:r}):a(o.ctx.slots,"default",{node:t,data:s},(()=>[y("span",{class:d.be("node","label")},[t.label])]))}}}),[["__file","tree-node-content.vue"]]);function fe(e){const t=g("TreeNodeMap",null),d={treeNodeExpand:t=>{e.node!==t&&e.node.collapse()},children:[]};return t&&t.children.push(d),v("TreeNodeMap",d),{broadcastExpanded:t=>{if(e.accordion)for(const e of d.children)e.treeNodeExpand(t)}}}const ge=Symbol("dragEvents");const ye=e({name:"ElTreeNode",components:{ElCollapseTransition:de,ElCheckbox:Z,NodeContent:pe,ElIcon:x,Loading:m},props:{node:{type:he,default:()=>({})},props:{type:Object,default:()=>({})},accordion:Boolean,renderContent:Function,renderAfterExpand:Boolean,showCheckbox:{type:Boolean,default:!1}},emits:["node-expand"],setup(e,d){const n=t("tree"),{broadcastExpanded:o}=fe(e),a=g("RootTree"),s=k(!1),r=k(!1),i=k(null),l=k(null),c=k(null),h=g(ge),u=M();v("NodeInstance",u),e.node.expanded&&(s.value=!0,r.value=!0);const p=a.props.props.children||"children";b((()=>{const t=e.node.data[p];return t&&[...t]}),(()=>{e.node.updateChildren()})),b((()=>e.node.indeterminate),(t=>{f(e.node.checked,t)})),b((()=>e.node.checked),(t=>{f(t,e.node.indeterminate)})),b((()=>e.node.childNodes.length),(()=>e.node.reInitChecked())),b((()=>e.node.expanded),(e=>{E((()=>s.value=e)),e&&(r.value=!0)}));const f=(t,d)=>{i.value===t&&l.value===d||a.ctx.emit("check-change",e.node.data,t,d),i.value=t,l.value=d},y=()=>{e.node.isLeaf||(s.value?(a.ctx.emit("node-collapse",e.node.data,e.node,u),e.node.collapse()):(e.node.expand(),d.emit("node-expand",e.node.data,e.node,u)))},N=(t,d)=>{e.node.setChecked(d.target.checked,!a.props.checkStrictly),E((()=>{const t=a.store.value;a.ctx.emit("check",e.node.data,{checkedNodes:t.getCheckedNodes(),checkedKeys:t.getCheckedKeys(),halfCheckedNodes:t.getHalfCheckedNodes(),halfCheckedKeys:t.getHalfCheckedKeys()})}))};return{ns:n,node$:c,tree:a,expanded:s,childNodeRendered:r,oldChecked:i,oldIndeterminate:l,getNodeKey:e=>ae(a.props.nodeKey,e.data),getNodeClass:t=>{const d=e.props.class;if(!d)return{};let n;if(z(d)){const{data:e}=t;n=d(e,t)}else n=d;return F(n)?{[n]:!0}:n},handleSelectChange:f,handleClick:t=>{se(a.store,a.ctx.emit,(()=>a.store.value.setCurrentNode(e.node))),a.currentNode.value=e.node,a.props.expandOnClickNode&&y(),a.props.checkOnClickNode&&!e.node.disabled&&N(null,{target:{checked:!e.node.checked}}),a.ctx.emit("node-click",e.node.data,e.node,u,t)},handleContextMenu:t=>{a.instance.vnode.props.onNodeContextmenu&&(t.stopPropagation(),t.preventDefault()),a.ctx.emit("node-contextmenu",t,e.node.data,e.node,u)},handleExpandIconClick:y,handleCheckChange:N,handleChildNodeExpand:(e,t,d)=>{o(t),a.ctx.emit("node-expand",e,t,d)},handleDragStart:t=>{a.props.draggable&&h.treeNodeDragStart({event:t,treeNode:e})},handleDragOver:t=>{t.preventDefault(),a.props.draggable&&h.treeNodeDragOver({event:t,treeNode:{$el:c.value,node:e.node}})},handleDrop:e=>{e.preventDefault()},handleDragEnd:e=>{a.props.draggable&&h.treeNodeDragEnd(e)},CaretRight:D}}}),ve=["aria-expanded","aria-disabled","aria-checked","draggable","data-key"],ke=["aria-expanded"];var Ne=c(e({name:"ElTree",components:{ElTreeNode:c(ye,[["render",function(e,t,a,s,r,i){const l=K("el-icon"),c=K("el-checkbox"),h=K("loading"),u=K("node-content"),p=K("el-tree-node"),f=K("el-collapse-transition");return w((d(),A("div",{ref:"node$",class:L([e.ns.b("node"),e.ns.is("expanded",e.expanded),e.ns.is("current",e.node.isCurrent),e.ns.is("hidden",!e.node.visible),e.ns.is("focusable",!e.node.disabled),e.ns.is("checked",!e.node.disabled&&e.node.checked),e.getNodeClass(e.node)]),role:"treeitem",tabindex:"-1","aria-expanded":e.expanded,"aria-disabled":e.node.disabled,"aria-checked":e.node.checked,draggable:e.tree.props.draggable,"data-key":e.getNodeKey(e.node),onClick:t[1]||(t[1]=O(((...t)=>e.handleClick&&e.handleClick(...t)),["stop"])),onContextmenu:t[2]||(t[2]=(...t)=>e.handleContextMenu&&e.handleContextMenu(...t)),onDragstart:t[3]||(t[3]=O(((...t)=>e.handleDragStart&&e.handleDragStart(...t)),["stop"])),onDragover:t[4]||(t[4]=O(((...t)=>e.handleDragOver&&e.handleDragOver(...t)),["stop"])),onDragend:t[5]||(t[5]=O(((...t)=>e.handleDragEnd&&e.handleDragEnd(...t)),["stop"])),onDrop:t[6]||(t[6]=O(((...t)=>e.handleDrop&&e.handleDrop(...t)),["stop"]))},[T("div",{class:L(e.ns.be("node","content")),style:H({paddingLeft:(e.node.level-1)*e.tree.props.indent+"px"})},[e.tree.props.icon||e.CaretRight?(d(),n(l,{key:0,class:L([e.ns.be("node","expand-icon"),e.ns.is("leaf",e.node.isLeaf),{expanded:!e.node.isLeaf&&e.expanded}]),onClick:O(e.handleExpandIconClick,["stop"])},{default:o((()=>[(d(),n(B(e.tree.props.icon||e.CaretRight)))])),_:1},8,["class","onClick"])):$("v-if",!0),e.showCheckbox?(d(),n(c,{key:1,"model-value":e.node.checked,indeterminate:e.node.indeterminate,disabled:!!e.node.disabled,onClick:t[0]||(t[0]=O((()=>{}),["stop"])),onChange:e.handleCheckChange},null,8,["model-value","indeterminate","disabled","onChange"])):$("v-if",!0),e.node.loading?(d(),n(l,{key:2,class:L([e.ns.be("node","loading-icon"),e.ns.is("loading")])},{default:o((()=>[_(h)])),_:1},8,["class"])):$("v-if",!0),_(u,{node:e.node,"render-content":e.renderContent},null,8,["node","render-content"])],6),_(f,null,{default:o((()=>[!e.renderAfterExpand||e.childNodeRendered?w((d(),A("div",{key:0,class:L(e.ns.be("node","children")),role:"group","aria-expanded":e.expanded},[(d(!0),A(q,null,I(e.node.childNodes,(t=>(d(),n(p,{key:e.getNodeKey(t),"render-content":e.renderContent,"render-after-expand":e.renderAfterExpand,"show-checkbox":e.showCheckbox,node:t,accordion:e.accordion,props:e.props,onNodeExpand:e.handleChildNodeExpand},null,8,["render-content","render-after-expand","show-checkbox","node","accordion","props","onNodeExpand"])))),128))],10,ke)),[[S,e.expanded]]):$("v-if",!0)])),_:1})],42,ve)),[[S,e.node.visible]])}],["__file","tree-node.vue"]])},props:{data:{type:Array,default:()=>[]},emptyText:{type:String},renderAfterExpand:{type:Boolean,default:!0},nodeKey:String,checkStrictly:Boolean,defaultExpandAll:Boolean,expandOnClickNode:{type:Boolean,default:!0},checkOnClickNode:Boolean,checkDescendants:{type:Boolean,default:!1},autoExpandParent:{type:Boolean,default:!0},defaultCheckedKeys:Array,defaultExpandedKeys:Array,currentNodeKey:[String,Number],renderContent:Function,showCheckbox:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1},allowDrag:Function,allowDrop:Function,props:{type:Object,default:()=>({children:"children",label:"label",disabled:"disabled"})},lazy:{type:Boolean,default:!1},highlightCurrent:Boolean,load:Function,filterNodeMethod:Function,accordion:Boolean,indent:{type:Number,default:18},icon:{type:Q}},emits:["check-change","current-change","node-click","node-contextmenu","node-collapse","node-expand","check","node-drag-start","node-drag-end","node-drop","node-drag-leave","node-drag-enter","node-drag-over"],setup(e,d){const{t:n}=W(),o=t("tree"),a=g(X,null),s=k(new ue({key:e.nodeKey,data:e.data,lazy:e.lazy,props:e.props,load:e.load,currentNodeKey:e.currentNodeKey,checkStrictly:e.checkStrictly,checkDescendants:e.checkDescendants,defaultCheckedKeys:e.defaultCheckedKeys,defaultExpandedKeys:e.defaultExpandedKeys,autoExpandParent:e.autoExpandParent,defaultExpandAll:e.defaultExpandAll,filterNodeMethod:e.filterNodeMethod}));s.value.initialize();const r=k(s.value.root),i=k(null),l=k(null),c=k(null),{broadcastExpanded:h}=fe(e),{dragState:u}=function({props:e,ctx:d,el$:n,dropIndicator$:o,store:a}){const s=t("tree"),r=k({showDropIndicator:!1,draggingNode:null,dropNode:null,allowDrop:!0,dropType:null});return v(ge,{treeNodeDragStart:({event:t,treeNode:n})=>{if("function"==typeof e.allowDrag&&!e.allowDrag(n.node))return t.preventDefault(),!1;t.dataTransfer.effectAllowed="move";try{t.dataTransfer.setData("text/plain","")}catch(o){}r.value.draggingNode=n,d.emit("node-drag-start",n.node,t)},treeNodeDragOver:({event:t,treeNode:a})=>{const i=a,l=r.value.dropNode;l&&l.node.id!==i.node.id&&N(l.$el,s.is("drop-inner"));const c=r.value.draggingNode;if(!c||!i)return;let h=!0,u=!0,p=!0,f=!0;"function"==typeof e.allowDrop&&(h=e.allowDrop(c.node,i.node,"prev"),f=u=e.allowDrop(c.node,i.node,"inner"),p=e.allowDrop(c.node,i.node,"next")),t.dataTransfer.dropEffect=u||h||p?"move":"none",(h||u||p)&&(null==l?void 0:l.node.id)!==i.node.id&&(l&&d.emit("node-drag-leave",c.node,l.node,t),d.emit("node-drag-enter",c.node,i.node,t)),r.value.dropNode=h||u||p?i:null,i.node.nextSibling===c.node&&(p=!1),i.node.previousSibling===c.node&&(h=!1),i.node.contains(c.node,!1)&&(u=!1),(c.node===i.node||c.node.contains(i.node))&&(h=!1,u=!1,p=!1);const g=i.$el.querySelector(`.${s.be("node","content")}`).getBoundingClientRect(),y=n.value.getBoundingClientRect();let v;const k=h?u?.25:p?.45:1:-1,x=p?u?.75:h?.55:0:1;let m=-9999;const b=t.clientY-g.top;v=bg.height*x?"after":u?"inner":"none";const E=i.$el.querySelector(`.${s.be("node","expand-icon")}`).getBoundingClientRect(),D=o.value;"before"===v?m=E.top-y.top:"after"===v&&(m=E.bottom-y.top),D.style.top=`${m}px`,D.style.left=E.right-y.left+"px","inner"===v?C(i.$el,s.is("drop-inner")):N(i.$el,s.is("drop-inner")),r.value.showDropIndicator="before"===v||"after"===v,r.value.allowDrop=r.value.showDropIndicator||f,r.value.dropType=v,d.emit("node-drag-over",c.node,i.node,t)},treeNodeDragEnd:e=>{const{draggingNode:t,dropType:n,dropNode:o}=r.value;if(e.preventDefault(),e.dataTransfer.dropEffect="move",t&&o){const r={data:t.node.data};"none"!==n&&t.node.remove(),"before"===n?o.node.parent.insertBefore(r,o.node):"after"===n?o.node.parent.insertAfter(r,o.node):"inner"===n&&o.node.insertChild(r),"none"!==n&&(a.value.registerNode(r),a.value.key&&t.node.eachNode((e=>{var t;null==(t=a.value.nodesMap[e.data[a.value.key]])||t.setChecked(e.checked,!a.value.checkStrictly)}))),N(o.$el,s.is("drop-inner")),d.emit("node-drag-end",t.node,o.node,n,e),"none"!==n&&d.emit("node-drop",t.node,o.node,n,e)}t&&!o&&d.emit("node-drag-end",t.node,null,n,e),r.value.showDropIndicator=!1,r.value.draggingNode=null,r.value.dropNode=null,r.value.allowDrop=!0}}),{dragState:r}}({props:e,ctx:d,el$:l,dropIndicator$:c,store:s});!function({el$:e},d){const n=t("tree"),o=P([]),a=P([]);j((()=>{s()})),R((()=>{o.value=Array.from(e.value.querySelectorAll("[role=treeitem]")),a.value=Array.from(e.value.querySelectorAll("input[type=checkbox]"))})),b(a,(e=>{e.forEach((e=>{e.setAttribute("tabindex","-1")}))})),U(e,"keydown",(t=>{const a=t.target;if(!a.className.includes(n.b("node")))return;const s=t.code;o.value=Array.from(e.value.querySelectorAll(`.${n.is("focusable")}[role=treeitem]`));const r=o.value.indexOf(a);let i;if([J.up,J.down].includes(s)){if(t.preventDefault(),s===J.up){i=-1===r?0:0!==r?r-1:o.value.length-1;const e=i;for(;!d.value.getNode(o.value[i].dataset.key).canFocus;){if(i--,i===e){i=-1;break}i<0&&(i=o.value.length-1)}}else{i=-1===r?0:r=o.value.length&&(i=0)}}-1!==i&&o.value[i].focus()}[J.left,J.right].includes(s)&&(t.preventDefault(),a.click());const l=a.querySelector('[type="checkbox"]');[J.enter,J.space].includes(s)&&l&&(t.preventDefault(),l.click())}));const s=()=>{var t;o.value=Array.from(e.value.querySelectorAll(`.${n.is("focusable")}[role=treeitem]`)),a.value=Array.from(e.value.querySelectorAll("input[type=checkbox]"));const d=e.value.querySelectorAll(`.${n.is("checked")}[role=treeitem]`);d.length?d[0].setAttribute("tabindex","0"):null==(t=o.value[0])||t.setAttribute("tabindex","0")}}({el$:l},s);const p=G((()=>{const{childNodes:e}=r.value,t=!!a&&0!==a.hasFilteredOptions;return(!e||0===e.length||e.every((({visible:e})=>!e)))&&!t}));b((()=>e.currentNodeKey),(e=>{s.value.setCurrentNodeKey(e)})),b((()=>e.defaultCheckedKeys),(e=>{s.value.setDefaultCheckedKey(e)})),b((()=>e.defaultExpandedKeys),(e=>{s.value.setDefaultExpandedKeys(e)})),b((()=>e.data),(e=>{s.value.setData(e)}),{deep:!0}),b((()=>e.checkStrictly),(e=>{s.value.checkStrictly=e}));const f=()=>{const e=s.value.getCurrentNode();return e?e.data:null};return v("RootTree",{ctx:d,props:e,store:s,root:r,currentNode:i,instance:M()}),v(V,void 0),{ns:o,store:s,root:r,currentNode:i,dragState:u,el$:l,dropIndicator$:c,isEmpty:p,filter:t=>{if(!e.filterNodeMethod)throw new Error("[Tree] filterNodeMethod is required when filter");s.value.filter(t)},getNodeKey:t=>ae(e.nodeKey,t.data),getNodePath:t=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in getNodePath");const d=s.value.getNode(t);if(!d)return[];const n=[d.data];let o=d.parent;for(;o&&o!==r.value;)n.push(o.data),o=o.parent;return n.reverse()},getCheckedNodes:(e,t)=>s.value.getCheckedNodes(e,t),getCheckedKeys:e=>s.value.getCheckedKeys(e),getCurrentNode:f,getCurrentKey:()=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in getCurrentKey");const t=f();return t?t[e.nodeKey]:null},setCheckedNodes:(t,d)=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedNodes");s.value.setCheckedNodes(t,d)},setCheckedKeys:(t,d)=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedKeys");s.value.setCheckedKeys(t,d)},setChecked:(e,t,d)=>{s.value.setChecked(e,t,d)},getHalfCheckedNodes:()=>s.value.getHalfCheckedNodes(),getHalfCheckedKeys:()=>s.value.getHalfCheckedKeys(),setCurrentNode:(t,n=!0)=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentNode");se(s,d.emit,(()=>{h(t),s.value.setUserCurrentNode(t,n)}))},setCurrentKey:(t,n=!0)=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentKey");se(s,d.emit,(()=>{h(),s.value.setCurrentNodeKey(t,n)}))},t:n,getNode:e=>s.value.getNode(e),remove:e=>{s.value.remove(e)},append:(e,t)=>{s.value.append(e,t)},insertBefore:(e,t)=>{s.value.insertBefore(e,t)},insertAfter:(e,t)=>{s.value.insertAfter(e,t)},handleNodeExpand:(e,t,n)=>{h(t),d.emit("node-expand",e,t,n)},updateKeyChildren:(t,d)=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in updateKeyChild");s.value.updateChildren(t,d)}}}}),[["render",function(e,t,o,s,r,i){const l=K("el-tree-node");return d(),A("div",{ref:"el$",class:L([e.ns.b(),e.ns.is("dragging",!!e.dragState.draggingNode),e.ns.is("drop-not-allow",!e.dragState.allowDrop),e.ns.is("drop-inner","inner"===e.dragState.dropType),{[e.ns.m("highlight-current")]:e.highlightCurrent}]),role:"tree"},[(d(!0),A(q,null,I(e.root.childNodes,(t=>(d(),n(l,{key:e.getNodeKey(t),node:t,props:e.props,accordion:e.accordion,"render-after-expand":e.renderAfterExpand,"show-checkbox":e.showCheckbox,"render-content":e.renderContent,onNodeExpand:e.handleNodeExpand},null,8,["node","props","accordion","render-after-expand","show-checkbox","render-content","onNodeExpand"])))),128)),e.isEmpty?(d(),A("div",{key:0,class:L(e.ns.e("empty-block"))},[a(e.$slots,"empty",{},(()=>{var t;return[T("span",{class:L(e.ns.e("empty-text"))},Y(null!=(t=e.emptyText)?t:e.t("el.tree.emptyText")),3)]}))],2)):$("v-if",!0),w(T("div",{ref:"dropIndicator$",class:L(e.ns.e("drop-indicator"))},null,2),[[S,e.dragState.showDropIndicator]])],2)}],["__file","tree.vue"]]);Ne.install=e=>{e.component(Ne.name,Ne)};const Ce=Ne,xe=Ce;export{xe as E,de as _,Ce as a}; diff --git a/resources/views/dist/js/es.Bcp-0uIV.js b/resources/views/dist/js/es.Bcp-0uIV.js new file mode 100644 index 0000000..1435747 --- /dev/null +++ b/resources/views/dist/js/es.Bcp-0uIV.js @@ -0,0 +1 @@ +import{bC as t}from"./index.DMBpWXpT.js";const n="/api/es/";function o(o){return t({url:n+"PingAction",method:"post",data:o})}function a(o){return t({url:n+"IndexsCountAction",method:"post",data:o})}function r(o){return t({url:n+"CatAction",method:"post",data:o})}export{r as C,a as I,o as P}; diff --git a/resources/views/dist/js/file.CkIRLx9T.js b/resources/views/dist/js/file.CkIRLx9T.js new file mode 100644 index 0000000..5befd14 --- /dev/null +++ b/resources/views/dist/js/file.CkIRLx9T.js @@ -0,0 +1 @@ +import{bC as t}from"./index.DMBpWXpT.js";const e=class{static upload(e){const a=new FormData;return a.append("file",e),t({url:"/api/v1/files",method:"post",data:a,headers:{"Content-Type":"multipart/form-data"}})}static deleteByPath(e){return t({url:"/api/v1/files",method:"delete",params:{filePath:e}})}};export{e as F}; diff --git a/resources/views/dist/js/fullscreen-exit.DXwCcaMo.js b/resources/views/dist/js/fullscreen-exit.DXwCcaMo.js new file mode 100644 index 0000000..2fdb1d5 --- /dev/null +++ b/resources/views/dist/js/fullscreen-exit.DXwCcaMo.js @@ -0,0 +1 @@ +const v="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='currentColor'%3e%3cpath%20d='M18%207h4v2h-6V3h2v4zM8%209H2V7h4V3h2v6zm10%208v4h-2v-6h6v2h-4zM8%2015v6H6v-4H2v-2h6z'/%3e%3c/svg%3e";export{v as default}; diff --git a/resources/views/dist/js/fullscreen.dczNRBeD.js b/resources/views/dist/js/fullscreen.dczNRBeD.js new file mode 100644 index 0000000..3092393 --- /dev/null +++ b/resources/views/dist/js/fullscreen.dczNRBeD.js @@ -0,0 +1 @@ +const v="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='currentColor'%3e%3cpath%20d='M8%203v2H4v4H2V3h6zM2%2021v-6h2v4h4v2H2zm20%200h-6v-2h4v-4h2v6zm0-12h-2V5h-4V3h6v6z'/%3e%3c/svg%3e";export{v as default}; diff --git a/resources/views/dist/js/github.DLO2QQQy.js b/resources/views/dist/js/github.DLO2QQQy.js new file mode 100644 index 0000000..7db0dfa --- /dev/null +++ b/resources/views/dist/js/github.DLO2QQQy.js @@ -0,0 +1 @@ +const c="data:image/svg+xml,%3csvg%20class='icon'%20viewBox='0%200%201024%201024'%20xmlns='http://www.w3.org/2000/svg'%20width='200'%20height='200'%3e%3cpath%20d='M511.543%2014.057C228.914%2013.943%200%20242.743%200%20525.143%200%20748.457%20143.2%20938.286%20342.629%201008c26.857%206.743%2022.742-12.343%2022.742-25.371v-88.572C210.286%20912.23%20204%20809.6%20193.6%20792.457c-21.029-35.886-70.743-45.028-55.886-62.171%2035.315-18.172%2071.315%204.571%20113.029%2066.171%2030.171%2044.686%2089.028%2037.143%20118.857%2029.714%206.514-26.857%2020.457-50.857%2039.657-69.485C248.571%20727.886%20181.6%20629.829%20181.6%20513.257c0-56.571%2018.629-108.571%2055.2-150.514-23.314-69.143%202.171-128.343%205.6-137.143%2066.4-5.943%20135.429%2047.543%20140.8%2051.771C420.914%20267.2%20464%20261.83%20512.229%20261.83c48.457%200%2091.657%205.6%20129.714%2015.885%2012.914-9.828%2076.914-55.771%20138.628-50.171%203.315%208.8%2028.229%2066.628%206.286%20134.857%2037.029%2042.057%2055.886%2094.514%2055.886%20151.2%200%20116.8-67.429%20214.971-228.572%20243.314a145.714%20145.714%200%200%201%2043.543%20104v128.572c.915%2010.285%200%2020.457%2017.143%2020.457%20202.4-68.229%20348.114-259.429%20348.114-484.686%200-282.514-229.028-511.2-511.428-511.2z'/%3e%3c/svg%3e";export{c as default}; diff --git a/resources/views/dist/js/homepage.BcyYp1IG.js b/resources/views/dist/js/homepage.BcyYp1IG.js new file mode 100644 index 0000000..443dc3d --- /dev/null +++ b/resources/views/dist/js/homepage.BcyYp1IG.js @@ -0,0 +1 @@ +const c="data:image/svg+xml,%3csvg%20class='icon'%20viewBox='0%200%201024%201024'%20xmlns='http://www.w3.org/2000/svg'%20width='200'%20height='200'%3e%3cpath%20d='M958.401%20451.55a20.01%2020.01%200%200%200-6.966-14.972L524.345%2069.511c-7.499-6.446-18.581-6.446-26.08%200L309.583%20231.676V129.657c0-11.05-8.902-19.533-19.952-19.533h-88.034c-11.048%200-19.928%208.482-19.928%2019.533v211.954L71.176%20436.578a20.003%2020.003%200%200%200-6.968%2015.174v105.5a20.007%2020.007%200%200%200%2033.052%2015.172l53.298-45.826V850.7c0%2060.678%2049.364%20110.042%20110.042%20110.042h504.192c60.678%200%20110.043-49.364%20110.043-110.042V527.026l51.586%2044.336a20.001%2020.001%200%200%200%2021.48%202.966%2020.006%2020.006%200%200%200%2011.566-18.343l-1.066-104.436zM221.579%20150.033h48.095v115.942l-48.095%2041.336V150.034zm349.14%20770.692H436.665V700.642c0-11.03%208.977-20.007%2020.008-20.007h94.036c11.03%200%2020.007%208.976%2020.007%2020.007v220.084zm264.1-424.83v354.803c0%2038.612-31.415%2070.027-70.028%2070.027H610.733V700.642c0-33.096-26.927-60.023-60.023-60.023h-94.036c-33.097%200-60.023%2026.927-60.023%2060.023v220.085H260.599c-38.612%200-70.027-31.415-70.027-70.027V495.895a20.07%2020.07%200%200%200-.315-3.432L512.37%20215.504l322.703%20277.349a20.158%2020.158%200%200%200-.255%203.042zM525.41%20173.947c-7.502-6.446-18.587-6.447-26.086.003l-395.1%20339.714v-52.727l407.081-349.87%20407.177%20349.952.522%2051.205L525.41%20173.948z'/%3e%3c/svg%3e";export{c as default}; diff --git a/resources/views/dist/js/icon-selector.DE8gSAgB.js b/resources/views/dist/js/icon-selector.DE8gSAgB.js new file mode 100644 index 0000000..09d91d3 --- /dev/null +++ b/resources/views/dist/js/icon-selector.DE8gSAgB.js @@ -0,0 +1 @@ +import{_ as e}from"./index.OICg9GcR.js";import{d as s,r as o,e as r,h as t,l as a,w as l,a7 as i,g as p,aB as m}from"./index.DMBpWXpT.js";import{E as n}from"./el-link.7KZopgR8.js";import"./el-popper.Cb3Eus9m.js";import"./isUndefined.DgmxjSXK.js";import"./el-popover.OX4vypnS.js";import"./dropdown.Dka1h-m0.js";import"./el-tab-pane.Dc62g1GH.js";import"./strings.DeQ3Zoz4.js";import"./el-scrollbar.BJ_tYB1D.js";import"./el-tooltip.l0sNRNKZ.js";import"./index.DBfl569D.js";import"./_plugin-vue_export-helper.BCo6x5W8.js";const d={class:"app-container"},u=s({__name:"icon-selector",setup(s){const u=o("edit");return(s,o)=>{const c=n,j=e;return r(),t("div",d,[a(c,{href:"https://gitee.com/youlaiorg/vue3-element-admin/blob/master/src/views/demo/icon-selector.vue",type:"primary",target:"_blank",class:"mb-10"},{default:l((()=>[i("示例源码 请点击>>>>")])),_:1}),a(j,{modelValue:p(u),"onUpdate:modelValue":o[0]||(o[0]=e=>m(u)?u.value=e:null)},null,8,["modelValue"])])}}});export{u as default}; diff --git a/resources/views/dist/js/icons.0j-KsJXn.js b/resources/views/dist/js/icons.0j-KsJXn.js new file mode 100644 index 0000000..093894d --- /dev/null +++ b/resources/views/dist/js/icons.0j-KsJXn.js @@ -0,0 +1 @@ +import{d as e,r as s,bO as t,e as a,h as n,l as o,w as l,C as i,S as r,V as c,F as d,g as p,f as u,D as m,E as f}from"./index.DMBpWXpT.js";import{E as _,a as g}from"./el-tab-pane.Dc62g1GH.js";import{_ as v}from"./index.vue_vue_type_script_setup_true_lang.u9qT2mYo.js";import"./el-tooltip.l0sNRNKZ.js";import{E as x}from"./el-popper.Cb3Eus9m.js";import{_ as y}from"./index.DBfl569D.js";import{_ as j}from"./_plugin-vue_export-helper.BCo6x5W8.js";import"./strings.DeQ3Zoz4.js";import"./isUndefined.DgmxjSXK.js";const h={class:"icons-container"},b={class:"grid"},k={class:"icon-item"},I={class:"grid"},E={class:"icon-item"},w=j(e({name:"Icons",inheritAttrs:!1,__name:"icons",setup(e){const j=["api","cascader","client","close","close_all","close_left","close_other","close_right","dict","document","download","drag","edit","exit-fullscreen","eye-open","eye","fullscreen","github","homepage","language","link","menu","message","money","monitor","order","password","peoples","perm","publish","role","security","size","skill","system","tree","user","uv","verify-code"],w=s(t);function U(e){return``}function z(e){return`<${e} />`}return(e,s)=>{const t=x,A=v,S=_,$=f,C=g;return a(),n("div",h,[o(C,{type:"border-card"},{default:l((()=>[o(S,{label:"Icons"},{default:l((()=>[i("div",b,[(a(),n(r,null,c(j,(e=>i("div",{key:e},[o(A,{text:U(e)},{default:l((()=>[o(t,{effect:"dark",content:U(e),placement:"top"},{default:l((()=>[i("div",k,[o(y,{"icon-class":e},null,8,["icon-class"]),i("span",null,d(e),1)])])),_:2},1032,["content"])])),_:2},1032,["text"])]))),64))])])),_:1}),o(S,{label:"Element-UI Icons"},{default:l((()=>[i("div",I,[(a(!0),n(r,null,c(p(w),((e,s)=>(a(),n("div",{key:s},[o(A,{text:z(s)},{default:l((()=>[o(t,{effect:"dark",content:z(s),placement:"top"},{default:l((()=>[i("div",E,[o($,{size:20},{default:l((()=>[(a(),u(m(e)))])),_:2},1024),i("span",null,d(s),1)])])),_:2},1032,["content"])])),_:2},1032,["text"])])))),128))])])),_:1})])),_:1})])}}}),[["__scopeId","data-v-fed7a479"]]);export{w as default}; diff --git a/resources/views/dist/js/index.3nOPQnwv.js b/resources/views/dist/js/index.3nOPQnwv.js new file mode 100644 index 0000000..9b9dd70 --- /dev/null +++ b/resources/views/dist/js/index.3nOPQnwv.js @@ -0,0 +1 @@ +import{d as e,r as l,a0 as t,bS as a,c as o,au as r,e as n,h as p,l as s,w as i,C as u,k as d,g as m,n as c,S as f,V as v,f as g,a8 as b,a4 as y,a7 as h,a3 as k,i as _,p as w,F as j,aY as V,E as C,a5 as x,a6 as U,bc as S,bJ as A}from"./index.DMBpWXpT.js";/* empty css */import"./el-popper.Cb3Eus9m.js";import{E}from"./el-popover.OX4vypnS.js";import{_ as N}from"./index.DCoBgS8Y.js";import{E as R,a as $}from"./el-table-column.Dl1jn1Bd.js";import"./el-checkbox.8MJHthul.js";import"./el-tooltip.l0sNRNKZ.js";import"./el-scrollbar.BJ_tYB1D.js";/* empty css */import{a as z,E as I}from"./el-form.DUR-mZNt.js";import"./el-form-item.l0sNRNKZ.js";import{E as K}from"./el-date-picker.BPCW1w6T.js";import{E as Y,a as D}from"./el-select.C9ddzdnq.js";import"./el-tree.UTBgh5GW.js";import{E as M}from"./el-tree-select.BGIuc0mE.js";import{_ as L}from"./_plugin-vue_export-helper.BCo6x5W8.js";import{E as P}from"./el-link.7KZopgR8.js";import{E as T}from"./index.qeCV5ckY.js";import"./isUndefined.DgmxjSXK.js";import"./dropdown.Dka1h-m0.js";import"./el-pagination.CQTA1hq1.js";import"./isEqual.B61-3bNT.js";import"./_Uint8Array.BEOPqGcx.js";import"./index.CP01f_MK.js";import"./debounce.l44evi-0.js";import"./castArray.arHVDzqw.js";import"./index.tvUbLRs9.js";import"./token.DWNpOE8r.js";import"./strings.DeQ3Zoz4.js";const q={class:"feedback"},F=L(e({__name:"index",props:{selectConfig:{},text:{default:""}},emits:["confirmClick"],setup(e,{emit:A}){const L=e,P=A,T=L.selectConfig.pk??"id",F=!0===L.selectConfig.multiple,J=L.selectConfig.width??"100%",O=L.selectConfig.placeholder??"请选择",Q=l(!1),W=l(!1),X=l(0),B=l([]),G=t({pageNum:1,pageSize:10}),H=l(),Z=l(J);a(H,(e=>{Z.value=`${e[0].contentRect.width}px`}));const ee=l();for(const l of L.selectConfig.formItems)G[l.prop]=l.initialValue??"";function le(){var e;null==(e=ee.value)||e.resetFields(),ae(!0)}function te(){ae(!0)}function ae(e=!1){W.value=!0,e&&(G.pageNum=1,G.pageSize=10),L.selectConfig.indexAction(G).then((e=>{X.value=e.total,B.value=e.list})).finally((()=>{W.value=!1}))}const oe=l();for(const l of L.selectConfig.tableColumns)if("selection"===l.type){l.reserveSelection=!0;break}const re=l([]),ne=o((()=>re.value.length>0?`已选(${re.value.length})`:"确 定"));function pe(e,l){var t,a,o;F||0===e.length?re.value=e:(re.value=[e[e.length-1]],null==(t=oe.value)||t.clearSelection(),null==(a=oe.value)||a.toggleRowSelection(re.value[0],!0),null==(o=oe.value)||o.setCurrentRow(re.value[0]))}function se(e){F&&(re.value=e)}function ie(){ae()}const ue=l(!1);function de(){!1===ue.value&&(ue.value=!0,ae())}function me(){0!==re.value.length?(Q.value=!1,P("confirmClick",re.value)):V.error("请选择数据")}function ce(){var e;null==(e=oe.value)||e.clearSelection(),re.value=[]}function fe(){Q.value=!1}const ve=l();return(e,l)=>{const t=r("ArrowDown"),a=C,o=x,V=Y,A=D,L=M,P=K,ae=z,re=U,ue=I,ge=R,be=$,ye=N,he=E,ke=S;return n(),p("div",{ref_key:"tableSelectRef",ref:H,style:c("width:"+m(J))},[s(he,b({visible:Q.value,width:Z.value,placement:"bottom-end"},e.selectConfig.popover,{onShow:de}),{reference:i((()=>[u("div",{onClick:l[0]||(l[0]=e=>Q.value=!Q.value)},[d(e.$slots,"default",{},(()=>[s(o,{class:"reference","model-value":e.text,readonly:!0,placeholder:m(O)},{suffix:i((()=>[s(a,{style:c({transform:Q.value?"rotate(180deg)":"rotate(0)",transition:"transform .5s"})},{default:i((()=>[s(t)])),_:1},8,["style"])])),_:1},8,["model-value","placeholder"])]),!0)])])),default:i((()=>[u("div",{ref_key:"popoverContentRef",ref:ve},[s(ue,{ref_key:"formRef",ref:ee,model:G,inline:!0},{default:i((()=>[(n(!0),p(f,null,v(e.selectConfig.formItems,(e=>(n(),g(ae,{key:e.prop,label:e.label,prop:e.prop},{default:i((()=>{var l,t;return["input"===e.type?(n(),p(f,{key:0},["number"===(null==(l=e.attrs)?void 0:l.type)?(n(),g(o,b({key:0,modelValue:G[e.prop],"onUpdate:modelValue":l=>G[e.prop]=l,modelModifiers:{number:!0},ref_for:!0},e.attrs,{onKeyup:y(te,["enter"])}),null,16,["modelValue","onUpdate:modelValue"])):(n(),g(o,b({key:1,modelValue:G[e.prop],"onUpdate:modelValue":l=>G[e.prop]=l,ref_for:!0},e.attrs,{onKeyup:y(te,["enter"])}),null,16,["modelValue","onUpdate:modelValue"]))],64)):"select"===e.type?(n(),g(A,b({key:1,modelValue:G[e.prop],"onUpdate:modelValue":l=>G[e.prop]=l,ref_for:!0},e.attrs),{default:i((()=>[(n(!0),p(f,null,v(e.options,(e=>(n(),g(V,{key:e.value,label:e.label,value:e.value},null,8,["label","value"])))),128))])),_:2},1040,["modelValue","onUpdate:modelValue"])):"tree-select"===e.type?(n(),g(L,b({key:2,modelValue:G[e.prop],"onUpdate:modelValue":l=>G[e.prop]=l,ref_for:!0},e.attrs),null,16,["modelValue","onUpdate:modelValue"])):"date-picker"===e.type?(n(),g(P,b({key:3,modelValue:G[e.prop],"onUpdate:modelValue":l=>G[e.prop]=l,ref_for:!0},e.attrs),null,16,["modelValue","onUpdate:modelValue"])):(n(),p(f,{key:4},["number"===(null==(t=e.attrs)?void 0:t.type)?(n(),g(o,b({key:0,modelValue:G[e.prop],"onUpdate:modelValue":l=>G[e.prop]=l,modelModifiers:{number:!0},ref_for:!0},e.attrs,{onKeyup:y(te,["enter"])}),null,16,["modelValue","onUpdate:modelValue"])):(n(),g(o,b({key:1,modelValue:G[e.prop],"onUpdate:modelValue":l=>G[e.prop]=l,ref_for:!0},e.attrs,{onKeyup:y(te,["enter"])}),null,16,["modelValue","onUpdate:modelValue"]))],64))]})),_:2},1032,["label","prop"])))),128)),s(ae,null,{default:i((()=>[s(re,{type:"primary",icon:"search",onClick:te},{default:i((()=>[h(" 搜索 ")])),_:1}),s(re,{icon:"refresh",onClick:le},{default:i((()=>[h("重置")])),_:1})])),_:1})])),_:1},8,["model"]),k((n(),g(be,{ref_key:"tableRef",ref:oe,data:B.value,border:!0,"max-height":250,"row-key":m(T),"highlight-current-row":!0,class:_({radio:!F}),onSelect:pe,onSelectAll:se},{default:i((()=>[(n(!0),p(f,null,v(e.selectConfig.tableColumns,(l=>(n(),p(f,{key:l.prop},["custom"===l.templet?(n(),g(ge,b({key:0,ref_for:!0},l),{default:i((t=>[d(e.$slots,l.slotName??l.prop,b({prop:l.prop,ref_for:!0},t),void 0,!0)])),_:2},1040)):(n(),g(ge,b({key:1,ref_for:!0},l),null,16))],64)))),128))])),_:3},8,["data","row-key","class"])),[[ke,W.value]]),X.value>0?(n(),g(ye,{key:0,total:X.value,"onUpdate:total":l[1]||(l[1]=e=>X.value=e),page:G.pageNum,"onUpdate:page":l[2]||(l[2]=e=>G.pageNum=e),limit:G.pageSize,"onUpdate:limit":l[3]||(l[3]=e=>G.pageSize=e),onPagination:ie},null,8,["total","page","limit"])):w("",!0),u("div",q,[s(re,{type:"primary",size:"small",onClick:me},{default:i((()=>[h(j(ne.value),1)])),_:1}),s(re,{size:"small",onClick:ce},{default:i((()=>[h(" 清 空 ")])),_:1}),s(re,{size:"small",onClick:fe},{default:i((()=>[h(" 关 闭 ")])),_:1})])],512)])),_:3},16,["visible","width"])],4)}}}),[["__scopeId","data-v-c63fb7bb"]]),J={pk:"id",width:"70%",placeholder:"请选择用户",formItems:[{type:"input",label:"关键字",prop:"keywords",attrs:{placeholder:"用户名/昵称/手机号",clearable:!0,style:{width:"200px"}}},{type:"tree-select",label:"部门",prop:"deptId",attrs:{placeholder:"请选择",data:[{value:1,label:"有来技术",children:[{value:2,label:"研发部门"},{value:3,label:"测试部门"}]}],filterable:!0,"check-strictly":!0,"render-after-expand":!1,clearable:!0,style:{width:"150px"}}},{type:"select",label:"状态",prop:"status",attrs:{placeholder:"全部",clearable:!0,style:{width:"100px"}},options:[{label:"启用",value:1},{label:"禁用",value:0}]},{type:"date-picker",label:"创建时间",prop:"createAt",attrs:{type:"daterange","range-separator":"~","start-placeholder":"开始时间","end-placeholder":"截止时间","value-format":"YYYY-MM-DD",style:{width:"240px"}}}],indexAction:function(e){if("createAt"in e){const l=e.createAt;(null==l?void 0:l.length)>1&&(e.startTime=l[0],e.endTime=l[1]),delete e.createAt}return A.getPage(e)},tableColumns:[{type:"selection",width:50,align:"center"},{label:"编号",align:"center",prop:"id",width:100},{label:"用户名",align:"center",prop:"username"},{label:"用户昵称",align:"center",prop:"nickname",width:120},{label:"性别",align:"center",prop:"genderLabel",width:100},{label:"部门",align:"center",prop:"deptName",width:120},{label:"手机号码",align:"center",prop:"mobile",width:120},{label:"状态",align:"center",prop:"status",templet:"custom",slotName:"status"},{label:"创建时间",align:"center",prop:"createTime",width:180}]},O={class:"app-container"},Q=e({__name:"index",setup(e){const t=l();function a(e){t.value=e[0]}const r=o((()=>t.value?`${t.value.username} - ${t.value.genderLabel} - ${t.value.deptName}`:""));return(e,l)=>{const t=P,o=T,u=F;return n(),p("div",O,[s(t,{href:"https://gitee.com/youlaiorg/vue3-element-admin/blob/master/src/views/demo/table-select/index.vue",type:"primary",target:"_blank",class:"mb-10"},{default:i((()=>[h(" 示例源码 请点击>>>> ")])),_:1}),s(u,{text:m(r),"select-config":m(J),onConfirmClick:a},{status:i((e=>[s(o,{type:1==e.row[e.prop]?"success":"info"},{default:i((()=>[h(j(1==e.row[e.prop]?"启用":"禁用"),1)])),_:2},1032,["type"])])),_:1},8,["text","select-config"])])}}});export{Q as default}; diff --git a/resources/views/dist/js/index.B-hlu3LH.js b/resources/views/dist/js/index.B-hlu3LH.js new file mode 100644 index 0000000..648bf0d --- /dev/null +++ b/resources/views/dist/js/index.B-hlu3LH.js @@ -0,0 +1 @@ +import{e,h as t,aU as a,aV as s,C as l,d as r,c as i,aJ as n,r as o,a0 as c,o as u,l as d,w as p,aY as _,au as f,F as m,g as E,a7 as v,S as y,V as C,f as g,p as x,bb as h,E as T,a3 as N,a6 as A,bc as S}from"./index.DMBpWXpT.js";/* empty css */import{E as L}from"./el-card.BhvZLWwX.js";import{E as Y}from"./el-scrollbar.BJ_tYB1D.js";import{E as b}from"./el-text.8E8aFHxr.js";/* empty css */import{E as I,a as M}from"./el-col.DOWhjITg.js";import{_ as O}from"./_plugin-vue_export-helper.BCo6x5W8.js";import{G as w,a as R,I as j}from"./plugins.BcScPyxj.js";import{_ as D}from"./EsDashbord.vue_vue_type_script_setup_true_lang.BD2_WPlk.js";import{E as k}from"./index.qeCV5ckY.js";import"./es.Bcp-0uIV.js";const H={},U=e=>(a("data-v-c5522eca"),e=e(),s(),e),P={href:"https://github.com/1340691923/ElasticView",target:"_blank",class:"github-corner","aria-label":"View source on Github"},G={width:"80",height:"80",viewBox:"0 0 250 250",style:{color:"#fff",fill:"#40c9c6"},"aria-hidden":"true"},V=[U((()=>l("path",{d:"M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"},null,-1))),U((()=>l("path",{d:"M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2",fill:"currentColor",style:{"transform-origin":"130px 106px"},class:"octo-arm"},null,-1))),U((()=>l("path",{d:"M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z",fill:"currentColor",class:"octo-body"},null,-1)))];const W=O(H,[["render",function(a,s){return e(),t("a",P,[(e(),t("svg",G,V))])}],["__scopeId","data-v-c5522eca"]]);var Z=(e=>(e.SYSTEM_UPGRADE="SYSTEM_UPGRADE",e.SYSTEM_MAINTENANCE="SYSTEM_MAINTENANCE",e.SECURITY_ALERT="SECURITY_ALERT",e.HOLIDAY_NOTICE="HOLIDAY_NOTICE",e.COMPANY_NEWS="COMPANY_NEWS",e.OTHER="OTHER",e))(Z||{});const z=e=>(a("data-v-929945d5"),e=e(),s(),e),B={class:"dashboard-container"},F={class:"flex h-full items-center"},J=z((()=>l("p",{class:"text-sm text-gray"}," 但凡成功者,并非都出类拔萃,而是他们相信勤能补拙,只要忍受了,挺住了,成功早晚露出笑容 ",-1))),$={class:"flex-x-between"},q={class:"flex-y-center"},K=["href"],Q={class:"flex-x-between"},X=z((()=>l("span",{class:"text-[var(--el-text-color-secondary)]"},"Ev插件数",-1))),ee={class:"flex-x-between mt-2 text-sm text-[var(--el-text-color-secondary)]"},te=O(r({name:"Dashboard",inheritAttrs:!1,__name:"index",setup(a){const s=i((()=>-1!==`${h()}`.indexOf("elasticsearch"))),r=n(),O=new Date,H=i((()=>{const e=O.getHours();return e>=6&&e<8?"晨起披衣出草堂,轩窗已自喜微凉🌅!":e>=8&&e<12?"上午好,"+r.user.username+"!":e>=12&&e<18?"下午好,"+r.user.username+"!":e>=18&&e<24?"晚上好,"+r.user.username+"!":"偷偷向银河要了一把碎星,只等你闭上眼睛撒入你的梦中,晚安🌛!"}));o([{level:2,type:Z.SYSTEM_UPGRADE,title:"v2.12.0 新增系统日志,访问趋势统计功能。"},{level:0,type:Z.COMPANY_NEWS,title:"公司将在 7 月 1 日举办年中总结大会,请各部门做好准备。"},{level:3,type:Z.HOLIDAY_NOTICE,title:"端午节假期从 6 月 12 日至 6 月 14 日放假,共 3 天。"},{level:2,type:Z.SECURITY_ALERT,title:"最近发现一些钓鱼邮件,请大家提高警惕,不要点击陌生链接。"},{level:2,type:Z.SYSTEM_MAINTENANCE,title:"系统将于本周六凌晨 2 点进行维护,预计维护时间为 2 小时。"},{level:0,type:Z.OTHER,title:"公司新规章制度发布,请大家及时查阅。"},{level:3,type:Z.HOLIDAY_NOTICE,title:"中秋节假期从 9 月 22 日至 9 月 24 日放假,共 3 天。"},{level:1,type:Z.COMPANY_NEWS,title:"公司将在 10 月 15 日举办新产品发布会,敬请期待。"},{level:2,type:Z.SECURITY_ALERT,title:"请注意,近期有恶意软件通过即时通讯工具传播,请勿下载不明来源的文件。"},{level:2,type:Z.SYSTEM_MAINTENANCE,title:"系统将于下周日凌晨 3 点进行升级,预计维护时间为 1 小时。"},{level:3,type:Z.OTHER,title:"公司年度体检通知已发布,请各位员工按时参加。"}]);const U=c({list:[],pluginList:[]}),P=o(!1),G=async()=>{let e=await R({});0==e.code?U.pluginList=e.data:_.error(e.msg)};return u((()=>{(async()=>{let e=await w({});0==e.code?U.list=e.data:_.error(e.msg)})(),G()})),(a,r)=>{const i=W,n=I,o=M,c=f("Notification"),u=T,h=k,O=b,w=f("View"),R=Y,V=L,Z=A,z=S;return e(),t("div",B,[d(i,{class:"github-corner"}),d(V,{shadow:"never"},{default:p((()=>[d(o,{justify:"space-between"},{default:p((()=>[d(n,{span:18,xs:24},{default:p((()=>[l("div",F,[l("div",null,[l("p",null,m(E(H)),1),J])])])),_:1})])),_:1}),d(o,{gutter:10,class:"mt-5"},{default:p((()=>[d(n,{xs:24,sm:24,lg:12,span:8},{default:p((()=>[d(V,null,{header:p((()=>[l("div",$,[l("div",q,[v(" 最新动态"),d(u,{class:"ml-1"},{default:p((()=>[d(c)])),_:1})])])])),default:p((()=>[d(R,null,{default:p((()=>[(e(!0),t(y,null,C(E(U).list.Data,((a,s)=>(e(),t("div",{key:s,class:"flex-y-center py-3"},[d(h,{type:a.typ,size:"small"},{default:p((()=>[v(m(a.tag_name),1)])),_:2},1032,["type"]),d(O,{truncated:"",class:"!mx-2 flex-1 !text-xs !text-[var(--el-text-color-secondary)]"},{default:p((()=>[v(m(a.title),1)])),_:2},1024),l("a",{href:a.link,target:"_blank"},[d(u,{class:"text-sm"},{default:p((()=>[d(w)])),_:1})],8,K)])))),128))])),_:1})])),_:1})])),_:1}),d(n,{xs:24,sm:24,lg:12},{default:p((()=>[d(V,null,{header:p((()=>[l("div",Q,[X,d(h,{type:"primary"},{default:p((()=>[v(m(E(U).pluginList.length),1)])),_:1})])])),default:p((()=>[(e(!0),t(y,null,C(E(U).pluginList,(a=>(e(),t("div",ee,[l("span",null,m(a.plugin_name),1),a.has_update?(e(),t(y,{key:0},[d(h,{type:"danger"},{default:p((()=>[v("有新版本更新:v"+m(a.update_version)+",本地版本:v"+m(a.version),1)])),_:2},1024),N((e(),g(Z,{onClick:e=>(async(e,t)=>{P.value=!0;let a=await j({plugin_id:e,version:t});P.value=!1,0==a.code?(G(),_.success({type:"success",message:a.msg})):_.error({type:"error",message:a.msg})})(a.plugin_id,a.update_version),type:"warning"},{default:p((()=>[v("一键升级")])),_:2},1032,["onClick"])),[[z,E(P)]])],64)):(e(),g(h,{key:1,type:"success"},{default:p((()=>[v("v"+m(a.version),1)])),_:2},1024))])))),256))])),_:1})])),_:1})])),_:1}),E(s)?(e(),g(D,{key:0})):x("",!0)])),_:1})])}}}),[["__scopeId","data-v-929945d5"]]);export{te as default}; diff --git a/resources/views/dist/js/index.B5LP4W1V.js b/resources/views/dist/js/index.B5LP4W1V.js new file mode 100644 index 0000000..22ba140 --- /dev/null +++ b/resources/views/dist/js/index.B5LP4W1V.js @@ -0,0 +1 @@ +import{d as e,r as l,a0 as a,o as t,bG as s,e as o,h as r,C as d,l as i,w as n,g as u,a4 as p,a7 as m,a3 as c,f,j as h,aY as b,aP as y,a5 as _,a6 as j,bc as g}from"./index.DMBpWXpT.js";/* empty css */import{E as v}from"./el-dialog.DGaSOiRM.js";import{E as k,a as V}from"./el-radio.B-TDguQR.js";import{E as w}from"./el-input-number.zcrW3MHJ.js";/* empty css */import{E as x,a as C}from"./el-select.C9ddzdnq.js";import"./el-scrollbar.BJ_tYB1D.js";import"./el-popper.Cb3Eus9m.js";import"./el-tree.UTBgh5GW.js";import"./el-checkbox.8MJHthul.js";import{E}from"./el-tree-select.BGIuc0mE.js";import{E as U}from"./el-card.BhvZLWwX.js";import{E as I,a as q}from"./el-table-column.Dl1jn1Bd.js";import"./el-tooltip.l0sNRNKZ.js";import{_ as F,a as z}from"./delete.CrlEmVes.js";import{_ as A}from"./plus.BhbEy4-l.js";import{E as B,a as D}from"./el-form.DUR-mZNt.js";import{_ as O}from"./refresh.BxJIPU5v.js";import{_ as P}from"./search.DdQbLJWh.js";import"./el-form-item.l0sNRNKZ.js";import{D as R}from"./dept.o4EvKKVx.js";import{E as K}from"./index.qeCV5ckY.js";import"./use-dialog.CoOh9qjD.js";import"./isUndefined.DgmxjSXK.js";import"./refs.BiRbkTK3.js";import"./index.tvUbLRs9.js";import"./token.DWNpOE8r.js";import"./strings.DeQ3Zoz4.js";import"./isEqual.B61-3bNT.js";import"./_Uint8Array.BEOPqGcx.js";import"./debounce.l44evi-0.js";import"./index.CP01f_MK.js";import"./castArray.arHVDzqw.js";const L={class:"app-container"},T={class:"search-container"},G={class:"dialog-footer"},N=e({name:"Dept",inheritAttrs:!1,__name:"index",setup(e){const N=l(B),Q=l(B),S=l(!1),W=l([]),X=a({title:"",visible:!1}),Y=a({}),$=l(),H=l(),J=a({status:1,parentId:0,sort:1}),M=a({parentId:[{required:!0,message:"上级部门不能为空",trigger:"change"}],name:[{required:!0,message:"部门名称不能为空",trigger:"blur"}],code:[{required:!0,message:"部门编号不能为空",trigger:"blur"}],sort:[{required:!0,message:"显示排序不能为空",trigger:"blur"}]});function Z(){S.value=!0,R.getList(Y).then((e=>{$.value=e,S.value=!1}))}function ee(){N.value.resetFields(),Z()}function le(e){W.value=e.map((e=>e.id))}async function ae(e,l){const a=await R.getOptions();H.value=[{value:0,label:"顶级部门",children:a}],X.visible=!0,l?(X.title="修改部门",R.getFormData(l).then((e=>{Object.assign(J,e)}))):(X.title="新增部门",J.parentId=e??0)}function te(){Q.value.validate((e=>{if(e){S.value=!0;const e=J.id;e?R.update(e,J).then((()=>{b.success("修改成功"),oe(),Z()})).finally((()=>S.value=!1)):R.add(J).then((()=>{b.success("新增成功"),oe(),Z()})).finally((()=>S.value=!1))}}))}function se(e){const l=[e||W.value].join(",");l?y.confirm("确认删除已选中的数据项?","警告",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{S.value=!0,R.deleteByIds(l).then((()=>{b.success("删除成功"),ee()})).finally((()=>S.value=!1))}),(()=>{b.info("已取消删除")})):b.warning("请勾选删除项")}function oe(){X.visible=!1,Q.value.resetFields(),Q.value.clearValidate(),J.id=void 0,J.parentId=0,J.status=1,J.sort=1}return t((()=>{Z()})),(e,l)=>{const a=_,t=D,b=x,y=C,R=P,re=j,de=O,ie=B,ne=A,ue=F,pe=I,me=K,ce=z,fe=q,he=U,be=E,ye=w,_e=k,je=V,ge=v,ve=s("hasPerm"),ke=g;return o(),r("div",L,[d("div",T,[i(ie,{ref_key:"queryFormRef",ref:N,model:u(Y),inline:!0},{default:n((()=>[i(t,{label:"关键字",prop:"keywords"},{default:n((()=>[i(a,{modelValue:u(Y).keywords,"onUpdate:modelValue":l[0]||(l[0]=e=>u(Y).keywords=e),placeholder:"部门名称",onKeyup:p(Z,["enter"])},null,8,["modelValue"])])),_:1}),i(t,{label:"部门状态",prop:"status"},{default:n((()=>[i(y,{modelValue:u(Y).status,"onUpdate:modelValue":l[1]||(l[1]=e=>u(Y).status=e),placeholder:"全部",clearable:"",class:"!w-[100px]"},{default:n((()=>[i(b,{value:1,label:"正常"}),i(b,{value:0,label:"禁用"})])),_:1},8,["modelValue"])])),_:1}),i(t,null,{default:n((()=>[i(re,{class:"filter-item",type:"primary",onClick:Z},{default:n((()=>[i(R),m(" 搜索 ")])),_:1}),i(re,{onClick:ee},{default:n((()=>[i(de),m("重置 ")])),_:1})])),_:1})])),_:1},8,["model"])]),i(he,{shadow:"never",class:"table-container"},{header:n((()=>[c((o(),f(re,{type:"success",onClick:l[2]||(l[2]=e=>ae(0,void 0))},{default:n((()=>[i(ne),m("新增")])),_:1})),[[ve,["sys:dept:add"]]]),c((o(),f(re,{type:"danger",disabled:0===u(W).length,onClick:l[3]||(l[3]=e=>se())},{default:n((()=>[i(ue),m("删除 ")])),_:1},8,["disabled"])),[[ve,["sys:dept:delete"]]])])),default:n((()=>[c((o(),f(fe,{data:u($),"row-key":"id","default-expand-all":"","tree-props":{children:"children",hasChildren:"hasChildren"},onSelectionChange:le},{default:n((()=>[i(pe,{type:"selection",width:"55",align:"center"}),i(pe,{prop:"name",label:"部门名称","min-width":"200"}),i(pe,{prop:"code",label:"部门编号",width:"200"}),i(pe,{prop:"status",label:"状态",width:"100"},{default:n((e=>[1==e.row.status?(o(),f(me,{key:0,type:"success"},{default:n((()=>[m("正常")])),_:1})):(o(),f(me,{key:1,type:"info"},{default:n((()=>[m("禁用")])),_:1}))])),_:1}),i(pe,{prop:"sort",label:"排序",width:"100"}),i(pe,{label:"操作",fixed:"right",align:"left",width:"200"},{default:n((e=>[c((o(),f(re,{type:"primary",link:"",size:"small",onClick:h((l=>ae(e.row.id,void 0)),["stop"])},{default:n((()=>[i(ne),m("新增 ")])),_:2},1032,["onClick"])),[[ve,["sys:dept:add"]]]),c((o(),f(re,{type:"primary",link:"",size:"small",onClick:h((l=>ae(e.row.parentId,e.row.id)),["stop"])},{default:n((()=>[i(ce),m("编辑 ")])),_:2},1032,["onClick"])),[[ve,["sys:dept:edit"]]]),c((o(),f(re,{type:"danger",link:"",size:"small",onClick:h((l=>se(e.row.id)),["stop"])},{default:n((()=>[i(ue),m("删除 ")])),_:2},1032,["onClick"])),[[ve,["sys:dept:delete"]]])])),_:1})])),_:1},8,["data"])),[[ke,u(S)]])])),_:1}),i(ge,{modelValue:u(X).visible,"onUpdate:modelValue":l[9]||(l[9]=e=>u(X).visible=e),title:u(X).title,width:"600px",onClosed:oe},{footer:n((()=>[d("div",G,[i(re,{type:"primary",onClick:te},{default:n((()=>[m(" 确 定 ")])),_:1}),i(re,{onClick:oe},{default:n((()=>[m(" 取 消 ")])),_:1})])])),default:n((()=>[i(ie,{ref_key:"deptFormRef",ref:Q,model:u(J),rules:u(M),"label-width":"80px"},{default:n((()=>[i(t,{label:"上级部门",prop:"parentId"},{default:n((()=>[i(be,{modelValue:u(J).parentId,"onUpdate:modelValue":l[4]||(l[4]=e=>u(J).parentId=e),placeholder:"选择上级部门",data:u(H),filterable:"","check-strictly":"","render-after-expand":!1},null,8,["modelValue","data"])])),_:1}),i(t,{label:"部门名称",prop:"name"},{default:n((()=>[i(a,{modelValue:u(J).name,"onUpdate:modelValue":l[5]||(l[5]=e=>u(J).name=e),placeholder:"请输入部门名称"},null,8,["modelValue"])])),_:1}),i(t,{label:"部门编号",prop:"code"},{default:n((()=>[i(a,{modelValue:u(J).code,"onUpdate:modelValue":l[6]||(l[6]=e=>u(J).code=e),placeholder:"请输入部门编号"},null,8,["modelValue"])])),_:1}),i(t,{label:"显示排序",prop:"sort"},{default:n((()=>[i(ye,{modelValue:u(J).sort,"onUpdate:modelValue":l[7]||(l[7]=e=>u(J).sort=e),"controls-position":"right",style:{width:"100px"},min:0},null,8,["modelValue"])])),_:1}),i(t,{label:"部门状态"},{default:n((()=>[i(je,{modelValue:u(J).status,"onUpdate:modelValue":l[8]||(l[8]=e=>u(J).status=e)},{default:n((()=>[i(_e,{label:1},{default:n((()=>[m("正常")])),_:1}),i(_e,{label:0},{default:n((()=>[m("禁用")])),_:1})])),_:1},8,["modelValue"])])),_:1})])),_:1},8,["model","rules"])])),_:1},8,["modelValue","title"])])}}});export{N as default}; diff --git a/resources/views/dist/js/index.B6fdKp2E.js b/resources/views/dist/js/index.B6fdKp2E.js new file mode 100644 index 0000000..0649b95 --- /dev/null +++ b/resources/views/dist/js/index.B6fdKp2E.js @@ -0,0 +1 @@ +function t(t){return/^(https?:|http?:|mailto:|tel:)/.test(t)}function r(t){if(!t&&"object"!=typeof t)throw new Error("error arguments","deepClone");const e=t.constructor===Array?[]:{};return Object.keys(t).forEach((o=>{t[o]&&"object"==typeof t[o]?e[o]=r(t[o]):e[o]=t[o]})),e}export{r as d,t as i}; diff --git a/resources/views/dist/js/index.B_yc3eBb.js b/resources/views/dist/js/index.B_yc3eBb.js new file mode 100644 index 0000000..c06fdcc --- /dev/null +++ b/resources/views/dist/js/index.B_yc3eBb.js @@ -0,0 +1 @@ +import{e,h as a,C as s,d as l,b4 as r,aH as t,aW as o,f as n,w as i,l as u,S as m,V as c,g as d,a7 as p,F as g,aY as f,r as h,b3 as v,aJ as w,aK as _,aZ as y,c as b,R as x,a0 as j,o as V,b5 as q,aS as k,aB as U,p as C,aL as E,b6 as R,aO as S,a4 as z,j as L,aU as K,aV as P,a5 as A,a6 as B}from"./index.DMBpWXpT.js";import{E as H,a as I}from"./el-form.DUR-mZNt.js";import{E as M,a as $,b as N,c as O}from"./el-divider.CoJV5nts.js";import{E as J}from"./el-checkbox.8MJHthul.js";import"./el-tooltip.l0sNRNKZ.js";import{E as D}from"./el-popper.Cb3Eus9m.js";import"./el-form-item.l0sNRNKZ.js";import"./el-scrollbar.BJ_tYB1D.js";import{_ as T}from"./index.DBfl569D.js";import{E as Z}from"./el-switch.BvIaL9AI.js";/* empty css */import{E as F}from"./el-image.DM0ttR5m.js";import"./el-image-viewer.CSeiPfXQ.js";import{E as G}from"./index.qeCV5ckY.js";import{_ as X}from"./_plugin-vue_export-helper.BCo6x5W8.js";import"./castArray.arHVDzqw.js";import"./_Uint8Array.BEOPqGcx.js";import"./dropdown.Dka1h-m0.js";import"./refs.BiRbkTK3.js";import"./isEqual.B61-3bNT.js";import"./isUndefined.DgmxjSXK.js";import"./position.CIWFjaHr.js";import"./debounce.l44evi-0.js";const Y={viewBox:"0 0 1024 1024",width:"1.2em",height:"1.2em"},Q=[s("path",{fill:"currentColor",d:"M224 448a32 32 0 0 0-32 32v384a32 32 0 0 0 32 32h576a32 32 0 0 0 32-32V480a32 32 0 0 0-32-32zm0-64h576a96 96 0 0 1 96 96v384a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96V480a96 96 0 0 1 96-96"},null,-1),s("path",{fill:"currentColor",d:"M512 544a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V576a32 32 0 0 1 32-32m192-160v-64a192 192 0 1 0-384 0v64zM512 64a256 256 0 0 1 256 256v128H256V320A256 256 0 0 1 512 64"},null,-1)];const W={name:"ep-lock",render:function(s,l){return e(),a("svg",Y,[...Q])}},ee={viewBox:"0 0 1024 1024",width:"1.2em",height:"1.2em"},ae=[s("path",{fill:"currentColor",d:"M512 512a192 192 0 1 0 0-384a192 192 0 0 0 0 384m0 64a256 256 0 1 1 0-512a256 256 0 0 1 0 512m320 320v-96a96 96 0 0 0-96-96H288a96 96 0 0 0-96 96v96a32 32 0 1 1-64 0v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 1 1-64 0"},null,-1)];const se={name:"ep-user",render:function(s,l){return e(),a("svg",ee,[...ae])}},le=l({__name:"index",props:{size:{type:String,required:!1}},setup(l){const h=[{label:"中文",value:r.ZH_CN},{label:"English",value:r.EN}],v=t(),{locale:w,t:_}=o();function y(e){w.value=e,v.changeLanguage(e),f.success(_("langSelect.message.success"))}return(r,t)=>{const o=T,f=M,w=$,_=N;return e(),n(_,{trigger:"click",onCommand:y},{dropdown:i((()=>[u(w,null,{default:i((()=>[(e(),a(m,null,c(h,(e=>u(f,{key:e.value,disabled:d(v).language===e.value,command:e.value},{default:i((()=>[p(g(e.label),1)])),_:2},1032,["disabled","command"]))),64))])),_:1})])),default:i((()=>[s("div",null,[u(o,{"icon-class":"language",size:l.size},null,8,["size"])])])),_:1})}}}),re={class:"login-container"},te={class:"flex-x-between absolute-lt w-full p-2"},oe={class:"flex-center"},ne={class:"text-2xl font-bold bg-gradient-to-r from-blue-500 to-teal-500 text-transparent bg-clip-text mx-1"},ie={class:"flex-center"},ue={class:"top-bar"},me={class:"login-content"},ce={key:0,class:"login-image"},de={class:"login-box"},pe=(e=>(K("data-v-340dfe3e"),e=e(),P(),e))((()=>s("h2",{class:"text-xl font-medium text-center flex-center relative"}," 登 录 ",-1))),ge={class:"flex-x-between w-full py-1"},fe=["title","href"],he=X(l({__name:"index",setup(l){const r=h(new URL( window.appSubUrl+"/img/logo.BlrjUcG7.png",import.meta.url).href),K=h(new URL( window.appSubUrl+"/img/work_wechat.zTPxZRB-.png",import.meta.url).href),P=h(new URL( window.appSubUrl+"/img/login_bg.BzmVCLXR.png",import.meta.url).href);t();const M=v().width,$=h(!1),N=w(),T=_(),X=E(),{height:Y}=v(),{t:Q}=o(),ee=h(T.theme===y.DARK),ae=h(!0),he=h(!1),ve=h(!1),we=h(),_e=h({username:"",password:""}),ye=b((()=>({username:[{required:!0,trigger:"blur",message:Q("login.message.username.required")}],password:[{required:!0,trigger:"blur",message:Q("login.message.password.required")},{min:5,message:Q("login.message.password.min"),trigger:"blur"}]})));function be(){var e;null==(e=we.value)||e.validate((async e=>{e&&(he.value=!0,N.login(_e.value).then((e=>{if(console.log("res",e),0!=e.code)return void f.error(e.msg);1==$.value?qe(_e.value.username,_e.value.password):localStorage.removeItem("ev-login_info"),q(e.data.token),f.success(e.msg);const{path:a,queryParams:s}=xe();k.push({path:a,query:s})})).catch((()=>{})).finally((()=>{he.value=!1})))}))}function xe(){const e=X.query.redirect??"/",a=new URL(e,window.location.origin),s=a.pathname,l={};return a.searchParams.forEach(((e,a)=>{"code"!=a&&"state"!=a&&(l[a]=e)})),{path:s,queryParams:l}}const je=()=>{const e=T.theme===y.DARK?y.LIGHT:y.DARK;T.changeTheme(e)};function Ve(e){e instanceof KeyboardEvent&&(ve.value=e.getModifierState("CapsLock"))}x((()=>{Y.value<600?ae.value=!1:ae.value=!0}));const qe=(e,a)=>{let s={username:e,password:a};console.log(s,e,a),localStorage.setItem("ev-login_info",JSON.stringify(s))},ke=()=>{const e=window.location.href;return`${new URL(e).origin}`},Ue=j({oauthConfigs:[]});return V((async()=>{if((async()=>{const e=await R({call_back:ke()});0==e.code&&(null==e.data&&(e.data=[]),Ue.oauthConfigs=e.data)})(),X.query.hasOwnProperty("code")&&X.query.hasOwnProperty("state")){let e=X.query.code,a=X.query.state;N.login({oauth_code:e,state:a}).then((e=>{if(console.log("res",e),0!=e.code)return void f.error(e.msg);q(e.data.token),f.success(e.msg);const{path:a,queryParams:s}=xe();k.push({path:a,query:s})})).catch((()=>{})).finally((()=>{he.value=!1}))}(()=>{let e=localStorage.getItem("ev-login_info");if(null!=e){let a=JSON.parse(e);a.username&&(_e.value.username=a.username),a.password&&(_e.value.password=a.password),$.value=!0}})()})),(l,t)=>{const o=F,f=G,h=Z,v=le,w=se,_=A,y=I,b=W,x=D,j=B,V=J,q=O,k=H;return e(),a("div",re,[s("div",te,[s("div",oe,[u(o,{src:d(r),style:{width:"30px",height:"30px"}},null,8,["src"]),s("span",ne,g(d(S).title),1),u(f,{type:"success"},{default:i((()=>[p("V"+g(window.appVersion),1)])),_:1})]),s("div",ie,[s("div",ue,[u(h,{modelValue:d(ee),"onUpdate:modelValue":t[0]||(t[0]=e=>U(ee)?ee.value=e:null),"inline-prompt":"","active-icon":"Moon","inactive-icon":"Sunny",onChange:je},null,8,["modelValue"]),u(v,{class:"ml-2 cursor-pointer"})])])]),s("div",me,[d(M)>992?(e(),a("div",ce,[u(o,{src:d(P)},null,8,["src"])])):C("",!0),s("div",de,[pe,u(k,{ref_key:"loginFormRef",ref:we,model:d(_e),rules:d(ye),class:"login-form"},{default:i((()=>[u(y,{prop:"username"},{default:i((()=>[u(_,{ref:"username",modelValue:d(_e).username,"onUpdate:modelValue":t[1]||(t[1]=e=>d(_e).username=e),placeholder:l.$t("用户名"),name:"username",size:"large",class:"h-[48px] input-with-select"},{prepend:i((()=>[u(w,{class:"mx-2"})])),_:1},8,["modelValue","placeholder"])])),_:1}),u(x,{visible:d(ve),content:l.$t("大写锁定已打开"),placement:"right"},{default:i((()=>[u(y,{prop:"password"},{default:i((()=>[u(_,{modelValue:d(_e).password,"onUpdate:modelValue":t[2]||(t[2]=e=>d(_e).password=e),placeholder:l.$t("密码"),type:"password",name:"password",onKeyup:[Ve,z(be,["enter"])],size:"large",class:"h-[48px] pr-2 input-with-select","show-password":""},{prepend:i((()=>[u(b,{class:"mx-2"})])),_:1},8,["modelValue","placeholder"])])),_:1})])),_:1},8,["visible","content"]),u(j,{loading:d(he),type:"primary",size:"large",class:"w-full",onClick:L(be,["prevent"])},{default:i((()=>[p(g(l.$t("登录")),1)])),_:1},8,["loading"]),s("div",ge,[u(V,{modelValue:d($),"onUpdate:modelValue":t[3]||(t[3]=e=>U($)?$.value=e:null),class:"rememberme"},{default:i((()=>[p(" 记住密码 ")])),_:1},8,["modelValue"])]),u(q,null,{default:i((()=>[p(" 其他登录方式 ")])),_:1}),u(y,{style:{border:"none"}},{default:i((()=>[s("span",null,[(e(!0),a(m,null,c(d(Ue).oauthConfigs,((s,l)=>(e(),a(m,null,[s.enable?(e(),a("a",{key:0,title:s.name,href:s.oauthUrl},["work_wechat"==s.img?(e(),n(o,{key:0,alt:s.name,src:d(K),class:"provider-img"},null,8,["alt","src"])):C("",!0)],8,fe)):C("",!0)],64)))),256))])])),_:1})])),_:1},8,["model","rules"])])])])}}}),[["__scopeId","data-v-340dfe3e"]]);export{he as default}; diff --git a/resources/views/dist/js/index.CP01f_MK.js b/resources/views/dist/js/index.CP01f_MK.js new file mode 100644 index 0000000..8381957 --- /dev/null +++ b/resources/views/dist/js/index.CP01f_MK.js @@ -0,0 +1 @@ +import{S as n,k as t}from"./_Uint8Array.BEOPqGcx.js";import{b as r}from"./isEqual.B61-3bNT.js";import{bT as e,cB as o,cC as u,cp as a,cD as i,cE as s,cF as c,cG as f,I as l,bL as d}from"./index.DMBpWXpT.js";var v=1,p=2;function g(n){return n==n&&!e(n)}function m(n,t){return function(r){return null!=r&&(r[n]===t&&(void 0!==t||n in Object(r)))}}function b(e){var o=function(n){for(var r=t(n),e=r.length;e--;){var o=r[e],u=n[o];r[e]=[o,u,g(u)]}return r}(e);return 1==o.length&&o[0][2]?m(o[0][0],o[0][1]):function(t){return t===e||function(t,e,o,u){var a=o.length,i=a;if(null==t)return!i;for(t=Object(t);a--;){var s=o[a];if(s[2]?s[1]!==t[s[0]]:!(s[0]in t))return!1}for(;++anull==n?void 0:n.contains(a)))||r.length&&r.includes(i),v=u&&(u.contains(a)||u.contains(i));s||c||f||l||d||v||t.value(e,o)}}l&&(document.addEventListener("mousedown",(n=>w=n)),document.addEventListener("mouseup",(n=>{for(const t of F.values())for(const{documentHandler:r}of t)r(n,w)})));const A={beforeMount(n,t){F.has(n)||F.set(n,[]),F.get(n).push({documentHandler:x(n,t),bindingFn:t.value})},updated(n,t){F.has(n)||F.set(n,[]);const r=F.get(n),e=r.findIndex((n=>n.bindingFn===t.oldValue)),o={documentHandler:x(n,t),bindingFn:t.value};e>=0?r.splice(e,1,o):r.push(o)},unmounted(n){F.delete(n)}};export{A as C,E as b}; diff --git a/resources/views/dist/js/index.CVv0gcjf.js b/resources/views/dist/js/index.CVv0gcjf.js new file mode 100644 index 0000000..d8aa07b --- /dev/null +++ b/resources/views/dist/js/index.CVv0gcjf.js @@ -0,0 +1 @@ +import{d as e,r as t,a0 as r,bD as n,au as i,e as s,f as o,w as a,C as l,l as c,g as h,a7 as u,a8 as f,h as d,S as p,V as m,a3 as b,b9 as g,F as y,k as v,p as w,aa as _,J as x,R as k,a2 as S,aY as C,E as M,a5 as T,a6 as E,bE as A,bF as R,bG as j,n as O,bH as I,D as N,bI as P,bc as B,aP as D,c as F,a4 as L,bJ as z,aH as U,aM as V}from"./index.DMBpWXpT.js";import{E as $}from"./el-dialog.DGaSOiRM.js";import{E as H}from"./el-scrollbar.BJ_tYB1D.js";import{E as q}from"./el-drawer.CpqknkfB.js";import{a as W,E as X}from"./el-form.DUR-mZNt.js";import{E as Y,a as K}from"./el-col.DOWhjITg.js";import"./el-form-item.l0sNRNKZ.js";import{E as Z}from"./el-text.8E8aFHxr.js";import{E as G}from"./el-date-picker.BPCW1w6T.js";import{E as J}from"./el-popper.Cb3Eus9m.js";/* empty css */import{E as Q,a as ee}from"./el-select.C9ddzdnq.js";import"./el-tree.UTBgh5GW.js";import{E as te,a as re}from"./el-checkbox.8MJHthul.js";import{E as ne}from"./el-tree-select.BGIuc0mE.js";import{E as ie}from"./el-input-number.zcrW3MHJ.js";/* empty css */import{E as se,a as oe}from"./el-radio.B-TDguQR.js";import"./el-tooltip.l0sNRNKZ.js";import{_ as ae}from"./index.vue_vue_type_script_setup_true_lang.CqBp_XYA.js";/* empty css */import{E as le}from"./el-card.BhvZLWwX.js";import{g as ce,E as he}from"./el-progress.BF08Xthz.js";import{E as ue}from"./el-pagination.CQTA1hq1.js";import{E as fe,a as de}from"./el-table-column.Dl1jn1Bd.js";import{E as pe}from"./el-switch.BvIaL9AI.js";import{E as me}from"./el-link.7KZopgR8.js";import{E as be}from"./el-image.DM0ttR5m.js";import"./el-image-viewer.CSeiPfXQ.js";import{E as ge}from"./el-popover.OX4vypnS.js";import{_ as ye}from"./index.DBfl569D.js";import{c as ve}from"./_commonjs-dynamic-modules.BHR_E30J.js";import{_ as we}from"./index.vue_vue_type_script_setup_true_lang.u9qT2mYo.js";import{E as _e}from"./index.qeCV5ckY.js";import{D as xe}from"./dept.o4EvKKVx.js";import{R as ke}from"./role.BVYrj-EL.js";import"./use-dialog.CoOh9qjD.js";import"./isUndefined.DgmxjSXK.js";import"./refs.BiRbkTK3.js";import"./castArray.arHVDzqw.js";import"./_Uint8Array.BEOPqGcx.js";import"./index.tvUbLRs9.js";import"./debounce.l44evi-0.js";import"./index.CP01f_MK.js";import"./isEqual.B61-3bNT.js";import"./token.DWNpOE8r.js";import"./strings.DeQ3Zoz4.js";import"./dict.CNA62ktp.js";import"./position.CIWFjaHr.js";import"./dropdown.Dka1h-m0.js";import"./_plugin-vue_export-helper.BCo6x5W8.js";const Se={style:{"padding-right":"var(--el-dialog-padding-primary)"}},Ce=e({__name:"PageModal",props:{modalConfig:{}},emits:["submitClick"],setup(e,{expose:A,emit:R}){const j=e,O=R,I=j.modalConfig.pk??"id",N=t(!1),P=t(),B=r(j.modalConfig.formItems),D=r({}),F={},L=[];for(const t of B)t.initFn&&t.initFn(t),D[t.prop]=t.initialValue??"",F[t.prop]=t.rules??[],void 0!==t.watch&&L.push((()=>{x((()=>D[t.prop]),((e,r)=>{t.watch&&t.watch(e,r,D,B)}))})),void 0!==t.computed&&L.push((()=>{k((()=>{t.computed&&(D[t.prop]=t.computed(D))}))})),void 0!==t.watchEffect&&L.push((()=>{k((()=>{t.watchEffect&&t.watchEffect(D)}))}));function z(e){for(const t in D)D.hasOwnProperty(t)&&t in e&&(D[t]=e[t]);(null==e?void 0:e.hasOwnProperty(I))&&(D[I]=e[I])}L.forEach((e=>e()));const U=n((()=>{var e;null==(e=P.value)||e.validate((e=>{e&&("function"==typeof j.modalConfig.beforeSubmit&&j.modalConfig.beforeSubmit(D),j.modalConfig.formAction(D).then((()=>{var e,t,r,n;let i="操作成功";"drawer"===j.modalConfig.component?(null==(e=j.modalConfig.drawer)?void 0:e.title)&&(i=`${null==(t=j.modalConfig.drawer)?void 0:t.title}成功`):(null==(r=j.modalConfig.dialog)?void 0:r.title)&&(i=`${null==(n=j.modalConfig.dialog)?void 0:n.title}成功`),C.success(i),O("submitClick"),V()})))}))}),3e3);function V(){var e;N.value=!1,null==(e=P.value)||e.resetFields(),S((()=>{var e;null==(e=P.value)||e.clearValidate()}))}return A({setModalVisible:function(e={}){N.value=!0,S((()=>{Object.values(e).length>0&&z(e)}))},getFormData:function(e){return void 0===e?D:D[e]??void 0},setFormData:z,setFormItemData:function(e,t){D[e]=t}}),(e,t)=>{const r=i("QuestionFilled"),n=M,x=J,k=T,S=Q,C=ee,A=se,R=oe,j=te,O=re,I=ie,L=ne,z=G,ae=Z,le=W,ce=Y,he=K,ue=X,fe=E,de=q,pe=H,me=$;return"drawer"===e.modalConfig.component?(s(),o(de,f({key:0,modelValue:N.value,"onUpdate:modelValue":t[0]||(t[0]=e=>N.value=e),"append-to-body":!0},e.modalConfig.drawer,{onClose:V}),{footer:a((()=>[l("div",null,[c(fe,{type:"primary",onClick:h(U)},{default:a((()=>[u("确 定")])),_:1},8,["onClick"]),c(fe,{onClick:V},{default:a((()=>[u("取 消")])),_:1})])])),default:a((()=>[c(ue,f({ref_key:"formRef",ref:P,"label-width":"auto"},e.modalConfig.form,{model:D,rules:F}),{default:a((()=>[c(he,{gutter:20},{default:a((()=>[(s(!0),d(p,null,m(B,(t=>b((s(),o(ce,f({key:t.prop,ref_for:!0},t.col),{default:a((()=>[c(le,{label:t.label,prop:t.prop},g({default:a((()=>["input"===t.type||void 0===t.type?(s(),o(k,f({key:0,modelValue:D[t.prop],"onUpdate:modelValue":e=>D[t.prop]=e,ref_for:!0},t.attrs),null,16,["modelValue","onUpdate:modelValue"])):"select"===t.type?(s(),o(C,f({key:1,modelValue:D[t.prop],"onUpdate:modelValue":e=>D[t.prop]=e,ref_for:!0},t.attrs),{default:a((()=>[(s(!0),d(p,null,m(t.options,(e=>(s(),o(S,f({key:e.value,ref_for:!0},e),null,16)))),128))])),_:2},1040,["modelValue","onUpdate:modelValue"])):"radio"===t.type?(s(),o(R,f({key:2,modelValue:D[t.prop],"onUpdate:modelValue":e=>D[t.prop]=e,ref_for:!0},t.attrs),{default:a((()=>[(s(!0),d(p,null,m(t.options,(e=>(s(),o(A,f({key:e.value,ref_for:!0},e),null,16)))),128))])),_:2},1040,["modelValue","onUpdate:modelValue"])):"checkbox"===t.type?(s(),o(O,f({key:3,modelValue:D[t.prop],"onUpdate:modelValue":e=>D[t.prop]=e,ref_for:!0},t.attrs),{default:a((()=>[(s(!0),d(p,null,m(t.options,(e=>(s(),o(j,f({key:e.value,ref_for:!0},e),null,16)))),128))])),_:2},1040,["modelValue","onUpdate:modelValue"])):"input-number"===t.type?(s(),o(I,f({key:4,modelValue:D[t.prop],"onUpdate:modelValue":e=>D[t.prop]=e,ref_for:!0},t.attrs),null,16,["modelValue","onUpdate:modelValue"])):"tree-select"===t.type?(s(),o(L,f({key:5,modelValue:D[t.prop],"onUpdate:modelValue":e=>D[t.prop]=e,ref_for:!0},t.attrs),null,16,["modelValue","onUpdate:modelValue"])):"date-picker"===t.type?(s(),o(z,f({key:6,modelValue:D[t.prop],"onUpdate:modelValue":e=>D[t.prop]=e,ref_for:!0},t.attrs),null,16,["modelValue","onUpdate:modelValue"])):"text"===t.type?(s(),o(ae,f({key:7,ref_for:!0},t.attrs),{default:a((()=>[u(y(D[t.prop]),1)])),_:2},1040)):"custom"===t.type?v(e.$slots,t.slotName??t.prop,{key:8,prop:t.prop,formData:D,attrs:t.attrs}):w("",!0)])),_:2},[t.tips?{name:"label",fn:a((()=>[l("span",null,[u(y(t.label)+" ",1),c(x,{placement:"bottom",effect:"light",content:t.tips,"raw-content":!0},{default:a((()=>[c(n,{style:{"vertical-align":"-0.15em"},size:"16"},{default:a((()=>[c(r)])),_:1})])),_:2},1032,["content"])])])),key:"0"}:void 0]),1032,["label","prop"])])),_:2},1040)),[[_,!t.hidden]]))),128))])),_:3})])),_:3},16,["model"])])),_:3},16,["modelValue"])):(s(),o(me,f({key:1,modelValue:N.value,"onUpdate:modelValue":t[1]||(t[1]=e=>N.value=e),"align-center":!0,"append-to-body":!0,width:"70vw"},e.modalConfig.dialog,{style:{"padding-right":"0"},onClose:V}),{footer:a((()=>[l("div",Se,[c(fe,{type:"primary",onClick:h(U)},{default:a((()=>[u("确 定")])),_:1},8,["onClick"]),c(fe,{onClick:V},{default:a((()=>[u("取 消")])),_:1})])])),default:a((()=>[c(pe,{"max-height":"60vh"},{default:a((()=>[c(ue,f({ref_key:"formRef",ref:P,"label-width":"auto"},e.modalConfig.form,{style:{"padding-right":"var(--el-dialog-padding-primary)"},model:D,rules:F}),{default:a((()=>[c(he,{gutter:20},{default:a((()=>[(s(!0),d(p,null,m(B,(t=>b((s(),o(ce,f({key:t.prop,ref_for:!0},t.col),{default:a((()=>[c(le,{label:t.label,prop:t.prop},g({default:a((()=>["input"===t.type||void 0===t.type?(s(),o(k,f({key:0,modelValue:D[t.prop],"onUpdate:modelValue":e=>D[t.prop]=e,ref_for:!0},t.attrs),null,16,["modelValue","onUpdate:modelValue"])):"select"===t.type?(s(),o(C,f({key:1,modelValue:D[t.prop],"onUpdate:modelValue":e=>D[t.prop]=e,ref_for:!0},t.attrs),{default:a((()=>[(s(!0),d(p,null,m(t.options,(e=>(s(),o(S,f({key:e.value,ref_for:!0},e),null,16)))),128))])),_:2},1040,["modelValue","onUpdate:modelValue"])):"radio"===t.type?(s(),o(R,f({key:2,modelValue:D[t.prop],"onUpdate:modelValue":e=>D[t.prop]=e,ref_for:!0},t.attrs),{default:a((()=>[(s(!0),d(p,null,m(t.options,(e=>(s(),o(A,f({key:e.value,ref_for:!0},e),null,16)))),128))])),_:2},1040,["modelValue","onUpdate:modelValue"])):"checkbox"===t.type?(s(),o(O,f({key:3,modelValue:D[t.prop],"onUpdate:modelValue":e=>D[t.prop]=e,ref_for:!0},t.attrs),{default:a((()=>[(s(!0),d(p,null,m(t.options,(e=>(s(),o(j,f({key:e.value,ref_for:!0},e),null,16)))),128))])),_:2},1040,["modelValue","onUpdate:modelValue"])):"input-number"===t.type?(s(),o(I,f({key:4,modelValue:D[t.prop],"onUpdate:modelValue":e=>D[t.prop]=e,ref_for:!0},t.attrs),null,16,["modelValue","onUpdate:modelValue"])):"tree-select"===t.type?(s(),o(L,f({key:5,modelValue:D[t.prop],"onUpdate:modelValue":e=>D[t.prop]=e,ref_for:!0},t.attrs),null,16,["modelValue","onUpdate:modelValue"])):"date-picker"===t.type?(s(),o(z,f({key:6,modelValue:D[t.prop],"onUpdate:modelValue":e=>D[t.prop]=e,ref_for:!0},t.attrs),null,16,["modelValue","onUpdate:modelValue"])):"text"===t.type?(s(),o(ae,f({key:7,ref_for:!0},t.attrs),{default:a((()=>[u(y(D[t.prop]),1)])),_:2},1040)):"custom"===t.type?v(e.$slots,t.slotName??t.prop,{key:8,prop:t.prop,formData:D,attrs:t.attrs}):w("",!0)])),_:2},[t.tips?{name:"label",fn:a((()=>[l("span",null,[u(y(t.label)+" ",1),c(x,{placement:"bottom",effect:"light",content:t.tips,"raw-content":!0},{default:a((()=>[c(n,{style:{"vertical-align":"-0.15em"},size:"16"},{default:a((()=>[c(r)])),_:1})])),_:2},1032,["content"])])])),key:"0"}:void 0]),1032,["label","prop"])])),_:2},1040)),[[_,!t.hidden]]))),128))])),_:3})])),_:3},16,["model"])])),_:3})])),_:3},16,["modelValue"]))}}});var Me={exports:{}};const Te=R(Me.exports=function e(t,r,n){function i(o,a){if(!r[o]){if(!t[o]){var l="function"==typeof ve&&ve;if(!a&&l)return l(o,!0);if(s)return s(o,!0);var c=new Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var h=r[o]={exports:{}};t[o][0].call(h.exports,(function(e){return i(t[o][1][e]||e)}),h,h.exports,e,t,r,n)}return r[o].exports}for(var s="function"==typeof ve&&ve,o=0;o{const s=this.workbook.addWorksheet(t.sheetName),o=t.dateFormats||["YYYY-MM-DD[T]HH:mm:ssZ","YYYY-MM-DD[T]HH:mm:ss","MM-DD-YYYY","YYYY-MM-DD"],l=t.map||function(e){if(""===e)return null;const t=Number(e);if(!Number.isNaN(t)&&t!==1/0)return t;const r=o.reduce(((t,r)=>{if(t)return t;const n=a(e,r,!0);return n.isValid()?n:null}),null);if(r)return new Date(r.valueOf());const n=h[e];return void 0!==n?n:e},c=i.parse(t.parserOptions).on("data",(e=>{s.addRow(e.map(l))})).on("end",(()=>{c.emit("worksheet",s)}));c.on("worksheet",r).on("error",n),e.pipe(c)}))}createInputStream(){throw new Error("`CSV#createInputStream` is deprecated. You should use `CSV#read` instead. This method will be removed in version 5.0. Please follow upgrade instruction: https://github.com/exceljs/exceljs/blob/master/UPGRADE-4.0.md")}write(e,t){return new Promise(((r,n)=>{t=t||{};const s=this.workbook.getWorksheet(t.sheetName||t.sheetId),o=i.format(t.formatterOptions);e.on("finish",(()=>{r()})),o.on("error",n),o.pipe(e);const{dateFormat:l,dateUTC:c}=t,h=t.map||(e=>{if(e){if(e.text||e.hyperlink)return e.hyperlink||e.text||"";if(e.formula||e.result)return e.result||"";if(e instanceof Date)return l?c?a.utc(e).format(l):a(e).format(l):c?a.utc(e).format():a(e).format();if(e.error)return e.error;if("object"==typeof e)return JSON.stringify(e)}return e}),u=void 0===t.includeEmptyRows||t.includeEmptyRows;let f=1;s&&s.eachRow(((e,t)=>{if(u)for(;f++2&&void 0!==arguments[2]?arguments[2]:0;if(this.worksheet=e,t)if("string"==typeof t){const e=n.decodeAddress(t);this.nativeCol=e.col+r,this.nativeColOff=0,this.nativeRow=e.row+r,this.nativeRowOff=0}else void 0!==t.nativeCol?(this.nativeCol=t.nativeCol||0,this.nativeColOff=t.nativeColOff||0,this.nativeRow=t.nativeRow||0,this.nativeRowOff=t.nativeRowOff||0):void 0!==t.col?(this.col=t.col+r,this.row=t.row+r):(this.nativeCol=0,this.nativeColOff=0,this.nativeRow=0,this.nativeRowOff=0);else this.nativeCol=0,this.nativeColOff=0,this.nativeRow=0,this.nativeRowOff=0}static asInstance(e){return e instanceof i||null==e?e:new i(e)}get col(){return this.nativeCol+Math.min(this.colWidth-1,this.nativeColOff)/this.colWidth}set col(e){this.nativeCol=Math.floor(e),this.nativeColOff=Math.floor((e-this.nativeCol)*this.colWidth)}get row(){return this.nativeRow+Math.min(this.rowHeight-1,this.nativeRowOff)/this.rowHeight}set row(e){this.nativeRow=Math.floor(e),this.nativeRowOff=Math.floor((e-this.nativeRow)*this.rowHeight)}get colWidth(){return this.worksheet&&this.worksheet.getColumn(this.nativeCol+1)&&this.worksheet.getColumn(this.nativeCol+1).isCustomWidth?Math.floor(1e4*this.worksheet.getColumn(this.nativeCol+1).width):64e4}get rowHeight(){return this.worksheet&&this.worksheet.getRow(this.nativeRow+1)&&this.worksheet.getRow(this.nativeRow+1).height?Math.floor(1e4*this.worksheet.getRow(this.nativeRow+1).height):18e4}get model(){return{nativeCol:this.nativeCol,nativeColOff:this.nativeColOff,nativeRow:this.nativeRow,nativeRowOff:this.nativeRowOff}}set model(e){this.nativeCol=e.nativeCol,this.nativeColOff=e.nativeColOff,this.nativeRow=e.nativeRow,this.nativeRowOff=e.nativeRowOff}}t.exports=i},{"../utils/col-cache":19}],3:[function(e,t,r){const n=e("../utils/col-cache"),i=e("../utils/under-dash"),s=e("./enums"),{slideFormula:o}=e("../utils/shared-formula"),a=e("./note");class l{constructor(e,t,r){if(!e||!t)throw new Error("A Cell needs a Row");this._row=e,this._column=t,n.validateAddress(r),this._address=r,this._value=c.create(l.Types.Null,this),this.style=this._mergeStyle(e.style,t.style,{}),this._mergeCount=0}get worksheet(){return this._row.worksheet}get workbook(){return this._row.worksheet.workbook}destroy(){delete this.style,delete this._value,delete this._row,delete this._column,delete this._address}get numFmt(){return this.style.numFmt}set numFmt(e){this.style.numFmt=e}get font(){return this.style.font}set font(e){this.style.font=e}get alignment(){return this.style.alignment}set alignment(e){this.style.alignment=e}get border(){return this.style.border}set border(e){this.style.border=e}get fill(){return this.style.fill}set fill(e){this.style.fill=e}get protection(){return this.style.protection}set protection(e){this.style.protection=e}_mergeStyle(e,t,r){const n=e&&e.numFmt||t&&t.numFmt;n&&(r.numFmt=n);const i=e&&e.font||t&&t.font;i&&(r.font=i);const s=e&&e.alignment||t&&t.alignment;s&&(r.alignment=s);const o=e&&e.border||t&&t.border;o&&(r.border=o);const a=e&&e.fill||t&&t.fill;a&&(r.fill=a);const l=e&&e.protection||t&&t.protection;return l&&(r.protection=l),r}get address(){return this._address}get row(){return this._row.number}get col(){return this._column.number}get $col$row(){return`$${this._column.letter}$${this.row}`}get type(){return this._value.type}get effectiveType(){return this._value.effectiveType}toCsvString(){return this._value.toCsvString()}addMergeRef(){this._mergeCount++}releaseMergeRef(){this._mergeCount--}get isMerged(){return this._mergeCount>0||this.type===l.Types.Merge}merge(e,t){this._value.release(),this._value=c.create(l.Types.Merge,this,e),t||(this.style=e.style)}unmerge(){this.type===l.Types.Merge&&(this._value.release(),this._value=c.create(l.Types.Null,this),this.style=this._mergeStyle(this._row.style,this._column.style,{}))}isMergedTo(e){return this._value.type===l.Types.Merge&&this._value.isMergedTo(e)}get master(){return this.type===l.Types.Merge?this._value.master:this}get isHyperlink(){return this._value.type===l.Types.Hyperlink}get hyperlink(){return this._value.hyperlink}get value(){return this._value.value}set value(e){this.type!==l.Types.Merge?(this._value.release(),this._value=c.create(c.getType(e),this,e)):this._value.master.value=e}get note(){return this._comment&&this._comment.note}set note(e){this._comment=new a(e)}get text(){return this._value.toString()}get html(){return i.escapeHtml(this.text)}toString(){return this.text}_upgradeToHyperlink(e){this.type===l.Types.String&&(this._value=c.create(l.Types.Hyperlink,this,{text:this._value.value,hyperlink:e}))}get formula(){return this._value.formula}get result(){return this._value.result}get formulaType(){return this._value.formulaType}get fullAddress(){const{worksheet:e}=this._row;return{sheetName:e.name,address:this.address,row:this.row,col:this.col}}get name(){return this.names[0]}set name(e){this.names=[e]}get names(){return this.workbook.definedNames.getNamesEx(this.fullAddress)}set names(e){const{definedNames:t}=this.workbook;t.removeAllNames(this.fullAddress),e.forEach((e=>{t.addEx(this.fullAddress,e)}))}addName(e){this.workbook.definedNames.addEx(this.fullAddress,e)}removeName(e){this.workbook.definedNames.removeEx(this.fullAddress,e)}removeAllNames(){this.workbook.definedNames.removeAllNames(this.fullAddress)}get _dataValidations(){return this.worksheet.dataValidations}get dataValidation(){return this._dataValidations.find(this.address)}set dataValidation(e){this._dataValidations.add(this.address,e)}get model(){const{model:e}=this._value;return e.style=this.style,this._comment&&(e.comment=this._comment.model),e}set model(e){this._value.release(),this._value=c.create(e.type,this),this._value.model=e,e.comment&&"note"===e.comment.type&&(this._comment=a.fromModel(e.comment)),e.style?this.style=e.style:this.style={}}}l.Types=s.ValueType;const c={getType:e=>null==e?l.Types.Null:e instanceof String||"string"==typeof e?l.Types.String:"number"==typeof e?l.Types.Number:"boolean"==typeof e?l.Types.Boolean:e instanceof Date?l.Types.Date:e.text&&e.hyperlink?l.Types.Hyperlink:e.formula||e.sharedFormula?l.Types.Formula:e.richText?l.Types.RichText:e.sharedString?l.Types.SharedString:e.error?l.Types.Error:l.Types.JSON,types:[{t:l.Types.Null,f:class{constructor(e){this.model={address:e.address,type:l.Types.Null}}get value(){return null}set value(e){}get type(){return l.Types.Null}get effectiveType(){return l.Types.Null}get address(){return this.model.address}set address(e){this.model.address=e}toCsvString(){return""}release(){}toString(){return""}}},{t:l.Types.Number,f:class{constructor(e,t){this.model={address:e.address,type:l.Types.Number,value:t}}get value(){return this.model.value}set value(e){this.model.value=e}get type(){return l.Types.Number}get effectiveType(){return l.Types.Number}get address(){return this.model.address}set address(e){this.model.address=e}toCsvString(){return this.model.value.toString()}release(){}toString(){return this.model.value.toString()}}},{t:l.Types.String,f:class{constructor(e,t){this.model={address:e.address,type:l.Types.String,value:t}}get value(){return this.model.value}set value(e){this.model.value=e}get type(){return l.Types.String}get effectiveType(){return l.Types.String}get address(){return this.model.address}set address(e){this.model.address=e}toCsvString(){return`"${this.model.value.replace(/"/g,'""')}"`}release(){}toString(){return this.model.value}}},{t:l.Types.Date,f:class{constructor(e,t){this.model={address:e.address,type:l.Types.Date,value:t}}get value(){return this.model.value}set value(e){this.model.value=e}get type(){return l.Types.Date}get effectiveType(){return l.Types.Date}get address(){return this.model.address}set address(e){this.model.address=e}toCsvString(){return this.model.value.toISOString()}release(){}toString(){return this.model.value.toString()}}},{t:l.Types.Hyperlink,f:class{constructor(e,t){this.model={address:e.address,type:l.Types.Hyperlink,text:t?t.text:void 0,hyperlink:t?t.hyperlink:void 0},t&&t.tooltip&&(this.model.tooltip=t.tooltip)}get value(){const e={text:this.model.text,hyperlink:this.model.hyperlink};return this.model.tooltip&&(e.tooltip=this.model.tooltip),e}set value(e){this.model={text:e.text,hyperlink:e.hyperlink},e.tooltip&&(this.model.tooltip=e.tooltip)}get text(){return this.model.text}set text(e){this.model.text=e}get hyperlink(){return this.model.hyperlink}set hyperlink(e){this.model.hyperlink=e}get type(){return l.Types.Hyperlink}get effectiveType(){return l.Types.Hyperlink}get address(){return this.model.address}set address(e){this.model.address=e}toCsvString(){return this.model.hyperlink}release(){}toString(){return this.model.text}}},{t:l.Types.Formula,f:class{constructor(e,t){this.cell=e,this.model={address:e.address,type:l.Types.Formula,shareType:t?t.shareType:void 0,ref:t?t.ref:void 0,formula:t?t.formula:void 0,sharedFormula:t?t.sharedFormula:void 0,result:t?t.result:void 0}}_copyModel(e){const t={},r=r=>{const n=e[r];n&&(t[r]=n)};return r("formula"),r("result"),r("ref"),r("shareType"),r("sharedFormula"),t}get value(){return this._copyModel(this.model)}set value(e){this.model=this._copyModel(e)}validate(e){switch(c.getType(e)){case l.Types.Null:case l.Types.String:case l.Types.Number:case l.Types.Date:break;case l.Types.Hyperlink:case l.Types.Formula:default:throw new Error("Cannot process that type of result value")}}get dependencies(){return{ranges:this.formula.match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}:[A-Z]{1,3}\d{1,4}/g),cells:this.formula.replace(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}:[A-Z]{1,3}\d{1,4}/g,"").match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}/g)}}get formula(){return this.model.formula||this._getTranslatedFormula()}set formula(e){this.model.formula=e}get formulaType(){return this.model.formula?s.FormulaType.Master:this.model.sharedFormula?s.FormulaType.Shared:s.FormulaType.None}get result(){return this.model.result}set result(e){this.model.result=e}get type(){return l.Types.Formula}get effectiveType(){const e=this.model.result;return null==e?s.ValueType.Null:e instanceof String||"string"==typeof e?s.ValueType.String:"number"==typeof e?s.ValueType.Number:e instanceof Date?s.ValueType.Date:e.text&&e.hyperlink?s.ValueType.Hyperlink:e.formula?s.ValueType.Formula:s.ValueType.Null}get address(){return this.model.address}set address(e){this.model.address=e}_getTranslatedFormula(){if(!this._translatedFormula&&this.model.sharedFormula){const{worksheet:e}=this.cell,t=e.findCell(this.model.sharedFormula);this._translatedFormula=t&&o(t.formula,t.address,this.model.address)}return this._translatedFormula}toCsvString(){return""+(this.model.result||"")}release(){}toString(){return this.model.result?this.model.result.toString():""}}},{t:l.Types.Merge,f:class{constructor(e,t){this.model={address:e.address,type:l.Types.Merge,master:t?t.address:void 0},this._master=t,t&&t.addMergeRef()}get value(){return this._master.value}set value(e){e instanceof l?(this._master&&this._master.releaseMergeRef(),e.addMergeRef(),this._master=e):this._master.value=e}isMergedTo(e){return e===this._master}get master(){return this._master}get type(){return l.Types.Merge}get effectiveType(){return this._master.effectiveType}get address(){return this.model.address}set address(e){this.model.address=e}toCsvString(){return""}release(){this._master.releaseMergeRef()}toString(){return this.value.toString()}}},{t:l.Types.JSON,f:class{constructor(e,t){this.model={address:e.address,type:l.Types.String,value:JSON.stringify(t),rawValue:t}}get value(){return this.model.rawValue}set value(e){this.model.rawValue=e,this.model.value=JSON.stringify(e)}get type(){return l.Types.String}get effectiveType(){return l.Types.String}get address(){return this.model.address}set address(e){this.model.address=e}toCsvString(){return this.model.value}release(){}toString(){return this.model.value}}},{t:l.Types.SharedString,f:class{constructor(e,t){this.model={address:e.address,type:l.Types.SharedString,value:t}}get value(){return this.model.value}set value(e){this.model.value=e}get type(){return l.Types.SharedString}get effectiveType(){return l.Types.SharedString}get address(){return this.model.address}set address(e){this.model.address=e}toCsvString(){return this.model.value.toString()}release(){}toString(){return this.model.value.toString()}}},{t:l.Types.RichText,f:class{constructor(e,t){this.model={address:e.address,type:l.Types.String,value:t}}get value(){return this.model.value}set value(e){this.model.value=e}toString(){return this.model.value.richText.map((e=>e.text)).join("")}get type(){return l.Types.RichText}get effectiveType(){return l.Types.RichText}get address(){return this.model.address}set address(e){this.model.address=e}toCsvString(){return`"${this.text.replace(/"/g,'""')}"`}release(){}}},{t:l.Types.Boolean,f:class{constructor(e,t){this.model={address:e.address,type:l.Types.Boolean,value:t}}get value(){return this.model.value}set value(e){this.model.value=e}get type(){return l.Types.Boolean}get effectiveType(){return l.Types.Boolean}get address(){return this.model.address}set address(e){this.model.address=e}toCsvString(){return this.model.value?1:0}release(){}toString(){return this.model.value.toString()}}},{t:l.Types.Error,f:class{constructor(e,t){this.model={address:e.address,type:l.Types.Error,value:t}}get value(){return this.model.value}set value(e){this.model.value=e}get type(){return l.Types.Error}get effectiveType(){return l.Types.Error}get address(){return this.model.address}set address(e){this.model.address=e}toCsvString(){return this.toString()}release(){}toString(){return this.model.value.error.toString()}}}].reduce(((e,t)=>(e[t.t]=t.f,e)),[]),create(e,t,r){const n=this.types[e];if(!n)throw new Error("Could not create Value of type "+e);return new n(t,r)}};t.exports=l},{"../utils/col-cache":19,"../utils/shared-formula":23,"../utils/under-dash":26,"./enums":7,"./note":9}],4:[function(e,t,r){const n=e("../utils/under-dash"),i=e("./enums"),s=e("../utils/col-cache");class o{constructor(e,t,r){this._worksheet=e,this._number=t,!1!==r&&(this.defn=r)}get number(){return this._number}get worksheet(){return this._worksheet}get letter(){return s.n2l(this._number)}get isCustomWidth(){return void 0!==this.width&&9!==this.width}get defn(){return{header:this._header,key:this.key,width:this.width,style:this.style,hidden:this.hidden,outlineLevel:this.outlineLevel}}set defn(e){e?(this.key=e.key,this.width=void 0!==e.width?e.width:9,this.outlineLevel=e.outlineLevel,e.style?this.style=e.style:this.style={},this.header=e.header,this._hidden=!!e.hidden):(delete this._header,delete this._key,delete this.width,this.style={},this.outlineLevel=0)}get headers(){return this._header&&this._header instanceof Array?this._header:[this._header]}get header(){return this._header}set header(e){void 0!==e?(this._header=e,this.headers.forEach(((e,t)=>{this._worksheet.getCell(t+1,this.number).value=e}))):this._header=void 0}get key(){return this._key}set key(e){(this._key&&this._worksheet.getColumnKey(this._key))===this&&this._worksheet.deleteColumnKey(this._key),this._key=e,e&&this._worksheet.setColumnKey(this._key,this)}get hidden(){return!!this._hidden}set hidden(e){this._hidden=e}get outlineLevel(){return this._outlineLevel||0}set outlineLevel(e){this._outlineLevel=e}get collapsed(){return!!(this._outlineLevel&&this._outlineLevel>=this._worksheet.properties.outlineLevelCol)}toString(){return JSON.stringify({key:this.key,width:this.width,headers:this.headers.length?this.headers:void 0})}equivalentTo(e){return this.width===e.width&&this.hidden===e.hidden&&this.outlineLevel===e.outlineLevel&&n.isEqual(this.style,e.style)}get isDefault(){if(this.isCustomWidth)return!1;if(this.hidden)return!1;if(this.outlineLevel)return!1;const e=this.style;return!e||!(e.font||e.numFmt||e.alignment||e.border||e.fill||e.protection)}get headerCount(){return this.headers.length}eachCell(e,t){const r=this.number;t||(t=e,e=null),this._worksheet.eachRow(e,((e,n)=>{t(e.getCell(r),n)}))}get values(){const e=[];return this.eachCell(((t,r)=>{t&&t.type!==i.ValueType.Null&&(e[r]=t.value)})),e}set values(e){if(!e)return;const t=this.number;let r=0;e.hasOwnProperty("0")&&(r=1),e.forEach(((e,n)=>{this._worksheet.getCell(n+r,t).value=e}))}_applyStyle(e,t){return this.style[e]=t,this.eachCell((r=>{r[e]=t})),t}get numFmt(){return this.style.numFmt}set numFmt(e){this._applyStyle("numFmt",e)}get font(){return this.style.font}set font(e){this._applyStyle("font",e)}get alignment(){return this.style.alignment}set alignment(e){this._applyStyle("alignment",e)}get protection(){return this.style.protection}set protection(e){this._applyStyle("protection",e)}get border(){return this.style.border}set border(e){this._applyStyle("border",e)}get fill(){return this.style.fill}set fill(e){this._applyStyle("fill",e)}static toModel(e){const t=[];let r=null;return e&&e.forEach(((e,n)=>{e.isDefault?r&&(r=null):r&&e.equivalentTo(r)?r.max=n+1:(r={min:n+1,max:n+1,width:void 0!==e.width?e.width:9,style:e.style,isCustomWidth:e.isCustomWidth,hidden:e.hidden,outlineLevel:e.outlineLevel,collapsed:e.collapsed},t.push(r))})),t.length?t:void 0}static fromModel(e,t){const r=[];let n=1,i=0;for(t=(t=t||[]).sort((function(e,t){return e.min-t.min}));i{t.removeCellEx(e)}))}forEach(e){n.each(this.matrixMap,((t,r)=>{t.forEach((t=>{e(r,t)}))}))}getNames(e){return this.getNamesEx(i.decodeEx(e))}getNamesEx(e){return n.map(this.matrixMap,((t,r)=>t.findCellEx(e)&&r)).filter(Boolean)}_explore(e,t){t.mark=!1;const{sheetName:r}=t,n=new o(t.row,t.col,t.row,t.col,r);let i,s;function a(i,s){const o=e.findCellAt(r,i,t.col);return!(!o||!o.mark||(n[s]=i,o.mark=!1,0))}for(s=t.row-1;a(s,"top");s--);for(s=t.row+1;a(s,"bottom");s++);function l(t,i){const o=[];for(s=n.top;s<=n.bottom;s++){const n=e.findCellAt(r,s,t);if(!n||!n.mark)return!1;o.push(n)}n[i]=t;for(let e=0;e{e.mark=!0})),{name:e,ranges:t.map((e=>e.mark&&this._explore(t,e))).filter(Boolean).map((e=>e.$shortRange))}):{name:e,ranges:[]}}normaliseMatrix(e,t){e.forEachInSheet(t,((e,t,r)=>{e&&(e.row===t&&e.col===r||(e.row=t,e.col=r,e.address=i.n2l(r)+t))}))}spliceRows(e,t,r,i){n.each(this.matrixMap,(n=>{n.spliceRows(e,t,r,i),this.normaliseMatrix(n,e)}))}spliceColumns(e,t,r,i){n.each(this.matrixMap,(n=>{n.spliceColumns(e,t,r,i),this.normaliseMatrix(n,e)}))}get model(){return n.map(this.matrixMap,((e,t)=>this.getRanges(t,e))).filter((e=>e.ranges.length))}set model(e){const t=this.matrixMap={};e.forEach((e=>{const r=t[e.name]=new s;e.ranges.forEach((e=>{a.test(e.split("!").pop()||"")&&r.addCell(e)}))}))}}},{"../utils/cell-matrix":18,"../utils/col-cache":19,"../utils/under-dash":26,"./range":10}],7:[function(e,t,r){t.exports={ValueType:{Null:0,Merge:1,Number:2,String:3,Date:4,Hyperlink:5,Formula:6,SharedString:7,RichText:8,Boolean:9,Error:10},FormulaType:{None:0,Master:1,Shared:2},RelationshipType:{None:0,OfficeDocument:1,Worksheet:2,CalcChain:3,SharedStrings:4,Styles:5,Theme:6,Hyperlink:7},DocumentType:{Xlsx:1},ReadingOrder:{LeftToRight:1,RightToLeft:2},ErrorValue:{NotApplicable:"#N/A",Ref:"#REF!",Name:"#NAME?",DivZero:"#DIV/0!",Null:"#NULL!",Value:"#VALUE!",Num:"#NUM!"}}},{}],8:[function(e,t,r){const n=e("../utils/col-cache"),i=e("./anchor");t.exports=class{constructor(e,t){this.worksheet=e,this.model=t}get model(){switch(this.type){case"background":return{type:this.type,imageId:this.imageId};case"image":return{type:this.type,imageId:this.imageId,hyperlinks:this.range.hyperlinks,range:{tl:this.range.tl.model,br:this.range.br&&this.range.br.model,ext:this.range.ext,editAs:this.range.editAs}};default:throw new Error("Invalid Image Type")}}set model(e){let{type:t,imageId:r,range:s,hyperlinks:o}=e;if(this.type=t,this.imageId=r,"image"===t)if("string"==typeof s){const e=n.decode(s);this.range={tl:new i(this.worksheet,{col:e.left,row:e.top},-1),br:new i(this.worksheet,{col:e.right,row:e.bottom},0),editAs:"oneCell"}}else this.range={tl:new i(this.worksheet,s.tl,0),br:s.br&&new i(this.worksheet,s.br,0),ext:s.ext,editAs:s.editAs,hyperlinks:o||s.hyperlinks}}}},{"../utils/col-cache":19,"./anchor":2}],9:[function(e,t,r){const n=e("../utils/under-dash");class i{constructor(e){this.note=e}get model(){let e=null;return e="string"==typeof this.note?{type:"note",note:{texts:[{text:this.note}]}}:{type:"note",note:this.note},n.deepMerge({},i.DEFAULT_CONFIGS,e)}set model(e){const{note:t}=e,{texts:r}=t;1===r.length&&1===Object.keys(r[0]).length?this.note=r[0].text:this.note=t}static fromModel(e){const t=new i;return t.model=e,t}}i.DEFAULT_CONFIGS={note:{margins:{insetmode:"auto",inset:[.13,.13,.25,.25]},protection:{locked:"True",lockText:"True"},editAs:"absolute"}},t.exports=i},{"../utils/under-dash":26}],10:[function(e,t,r){const n=e("../utils/col-cache");class i{constructor(){this.decode(arguments)}setTLBR(e,t,r,i,s){if(arguments.length<4){const i=n.decodeAddress(e),o=n.decodeAddress(t);this.model={top:Math.min(i.row,o.row),left:Math.min(i.col,o.col),bottom:Math.max(i.row,o.row),right:Math.max(i.col,o.col),sheetName:r},this.setTLBR(i.row,i.col,o.row,o.col,s)}else this.model={top:Math.min(e,r),left:Math.min(t,i),bottom:Math.max(e,r),right:Math.max(t,i),sheetName:s}}decode(e){switch(e.length){case 5:this.setTLBR(e[0],e[1],e[2],e[3],e[4]);break;case 4:this.setTLBR(e[0],e[1],e[2],e[3]);break;case 3:this.setTLBR(e[0],e[1],e[2]);break;case 2:this.setTLBR(e[0],e[1]);break;case 1:{const t=e[0];if(t instanceof i)this.model={top:t.model.top,left:t.model.left,bottom:t.model.bottom,right:t.model.right,sheetName:t.sheetName};else if(t instanceof Array)this.decode(t);else if(t.top&&t.left&&t.bottom&&t.right)this.model={top:t.top,left:t.left,bottom:t.bottom,right:t.right,sheetName:t.sheetName};else{const e=n.decodeEx(t);e.top?this.model={top:e.top,left:e.left,bottom:e.bottom,right:e.right,sheetName:e.sheetName}:this.model={top:e.row,left:e.col,bottom:e.row,right:e.col,sheetName:e.sheetName}}break}case 0:this.model={top:0,left:0,bottom:0,right:0};break;default:throw new Error("Invalid number of arguments to _getDimensions() - "+e.length)}}get top(){return this.model.top||1}set top(e){this.model.top=e}get left(){return this.model.left||1}set left(e){this.model.left=e}get bottom(){return this.model.bottom||1}set bottom(e){this.model.bottom=e}get right(){return this.model.right||1}set right(e){this.model.right=e}get sheetName(){return this.model.sheetName}set sheetName(e){this.model.sheetName=e}get _serialisedSheetName(){const{sheetName:e}=this.model;return e?/^[a-zA-Z0-9]*$/.test(e)?e+"!":`'${e}'!`:""}expand(e,t,r,n){(!this.model.top||ethis.bottom)&&(this.bottom=r),(!this.model.right||n>this.right)&&(this.right=n)}expandRow(e){if(e){const{dimensions:t,number:r}=e;t&&this.expand(r,t.min,r,t.max)}}expandToAddress(e){const t=n.decodeEx(e);this.expand(t.row,t.col,t.row,t.col)}get tl(){return n.n2l(this.left)+this.top}get $t$l(){return`$${n.n2l(this.left)}$${this.top}`}get br(){return n.n2l(this.right)+this.bottom}get $b$r(){return`$${n.n2l(this.right)}$${this.bottom}`}get range(){return`${this._serialisedSheetName+this.tl}:${this.br}`}get $range(){return`${this._serialisedSheetName+this.$t$l}:${this.$b$r}`}get shortRange(){return this.count>1?this.range:this._serialisedSheetName+this.tl}get $shortRange(){return this.count>1?this.$range:this._serialisedSheetName+this.$t$l}get count(){return(1+this.bottom-this.top)*(1+this.right-this.left)}toString(){return this.range}intersects(e){return!(e.sheetName&&this.sheetName&&e.sheetName!==this.sheetName||e.bottomthis.bottom||e.rightthis.right)}contains(e){const t=n.decodeEx(e);return this.containsEx(t)}containsEx(e){return(!e.sheetName||!this.sheetName||e.sheetName===this.sheetName)&&e.row>=this.top&&e.row<=this.bottom&&e.col>=this.left&&e.col<=this.right}forEachAddress(e){for(let t=this.left;t<=this.right;t++)for(let r=this.top;r<=this.bottom;r++)e(n.encodeAddress(r,t),r,t)}}t.exports=i},{"../utils/col-cache":19}],11:[function(e,t,r){const n=e("../utils/under-dash"),i=e("./enums"),s=e("../utils/col-cache"),o=e("./cell");t.exports=class{constructor(e,t){this._worksheet=e,this._number=t,this._cells=[],this.style={},this.outlineLevel=0}get number(){return this._number}get worksheet(){return this._worksheet}commit(){this._worksheet._commitRow(this)}destroy(){delete this._worksheet,delete this._cells,delete this.style}findCell(e){return this._cells[e-1]}getCellEx(e){let t=this._cells[e.col-1];if(!t){const r=this._worksheet.getColumn(e.col);t=new o(this,r,e.address),this._cells[e.col-1]=t}return t}getCell(e){if("string"==typeof e){const t=this._worksheet.getColumnKey(e);e=t?t.number:s.l2n(e)}return this._cells[e-1]||this.getCellEx({address:s.encodeAddress(this._number,e),row:this._number,col:e})}splice(e,t){const r=e+t;for(var n=arguments.length,i=new Array(n>2?n-2:0),s=2;s0)for(l=a;l>=r;l--)c=this._cells[l-1],c?(h=this.getCell(l+o),h.value=c.value,h.style=c.style,h._comment=c._comment):this._cells[l+o-1]=void 0;for(l=0;l{e&&e.type!==i.ValueType.Null&&t(e,r+1)}))}addPageBreak(e,t){const r=this._worksheet,n=Math.max(0,e-1)||0,i=Math.max(0,t-1)||16838,s={id:this._number,max:i,man:1};n&&(s.min=n),r.rowBreaks.push(s)}get values(){const e=[];return this._cells.forEach((t=>{t&&t.type!==i.ValueType.Null&&(e[t.col]=t.value)})),e}set values(e){if(this._cells=[],e)if(e instanceof Array){let t=0;e.hasOwnProperty("0")&&(t=1),e.forEach(((e,r)=>{void 0!==e&&(this.getCellEx({address:s.encodeAddress(this._number,r+t),row:this._number,col:r+t}).value=e)}))}else this._worksheet.eachColumnKey(((t,r)=>{void 0!==e[r]&&(this.getCellEx({address:s.encodeAddress(this._number,t.number),row:this._number,col:t.number}).value=e[r])}))}get hasValues(){return n.some(this._cells,(e=>e&&e.type!==i.ValueType.Null))}get cellCount(){return this._cells.length}get actualCellCount(){let e=0;return this.eachCell((()=>{e++})),e}get dimensions(){let e=0,t=0;return this._cells.forEach((r=>{r&&r.type!==i.ValueType.Null&&((!e||e>r.col)&&(e=r.col),t0?{min:e,max:t}:null}_applyStyle(e,t){return this.style[e]=t,this._cells.forEach((r=>{r&&(r[e]=t)})),t}get numFmt(){return this.style.numFmt}set numFmt(e){this._applyStyle("numFmt",e)}get font(){return this.style.font}set font(e){this._applyStyle("font",e)}get alignment(){return this.style.alignment}set alignment(e){this._applyStyle("alignment",e)}get protection(){return this.style.protection}set protection(e){this._applyStyle("protection",e)}get border(){return this.style.border}set border(e){this._applyStyle("border",e)}get fill(){return this.style.fill}set fill(e){this._applyStyle("fill",e)}get hidden(){return!!this._hidden}set hidden(e){this._hidden=e}get outlineLevel(){return this._outlineLevel||0}set outlineLevel(e){this._outlineLevel=e}get collapsed(){return!!(this._outlineLevel&&this._outlineLevel>=this._worksheet.properties.outlineLevelRow)}get model(){const e=[];let t=0,r=0;return this._cells.forEach((n=>{if(n){const i=n.model;i&&((!t||t>n.col)&&(t=n.col),r{switch(e.type){case o.Types.Merge:break;default:{let r;if(e.address)r=s.decodeAddress(e.address);else if(t){const{row:e}=t,n=t.col+1;r={row:e,col:n,address:s.encodeAddress(e,n),$col$row:`$${s.n2l(n)}$${e}`}}t=r,this.getCellEx(r).model=e;break}}})),e.height?this.height=e.height:delete this.height,this.hidden=e.hidden,this.outlineLevel=e.outlineLevel||0,this.style=e.style&&JSON.parse(JSON.stringify(e.style))||{}}}},{"../utils/col-cache":19,"../utils/under-dash":26,"./cell":3,"./enums":7}],12:[function(e,t,r){const n=e("../utils/col-cache");class i{constructor(e,t,r){this.table=e,this.column=t,this.index=r}_set(e,t){this.table.cacheState(),this.column[e]=t}get name(){return this.column.name}set name(e){this._set("name",e)}get filterButton(){return this.column.filterButton}set filterButton(e){this.column.filterButton=e}get style(){return this.column.style}set style(e){this.column.style=e}get totalsRowLabel(){return this.column.totalsRowLabel}set totalsRowLabel(e){this._set("totalsRowLabel",e)}get totalsRowFunction(){return this.column.totalsRowFunction}set totalsRowFunction(e){this._set("totalsRowFunction",e)}get totalsRowResult(){return this.column.totalsRowResult}set totalsRowResult(e){this._set("totalsRowResult",e)}get totalsRowFormula(){return this.column.totalsRowFormula}set totalsRowFormula(e){this._set("totalsRowFormula",e)}}t.exports=class{constructor(e,t){this.worksheet=e,t&&(this.table=t,this.validate(),this.store())}getFormula(e){switch(e.totalsRowFunction){case"none":return null;case"average":return`SUBTOTAL(101,${this.table.name}[${e.name}])`;case"countNums":return`SUBTOTAL(102,${this.table.name}[${e.name}])`;case"count":return`SUBTOTAL(103,${this.table.name}[${e.name}])`;case"max":return`SUBTOTAL(104,${this.table.name}[${e.name}])`;case"min":return`SUBTOTAL(105,${this.table.name}[${e.name}])`;case"stdDev":return`SUBTOTAL(106,${this.table.name}[${e.name}])`;case"var":return`SUBTOTAL(107,${this.table.name}[${e.name}])`;case"sum":return`SUBTOTAL(109,${this.table.name}[${e.name}])`;case"custom":return e.totalsRowFormula;default:throw new Error("Invalid Totals Row Function: "+e.totalsRowFunction)}}get width(){return this.table.columns.length}get height(){return this.table.rows.length}get filterHeight(){return this.height+(this.table.headerRow?1:0)}get tableHeight(){return this.filterHeight+(this.table.totalsRow?1:0)}validate(){const{table:e}=this,t=(e,t,r)=>{void 0===e[t]&&(e[t]=r)};t(e,"headerRow",!0),t(e,"totalsRow",!1),t(e,"style",{}),t(e.style,"theme","TableStyleMedium2"),t(e.style,"showFirstColumn",!1),t(e.style,"showLastColumn",!1),t(e.style,"showRowStripes",!1),t(e.style,"showColumnStripes",!1);const r=(e,t)=>{if(!e)throw new Error(t)};r(e.ref,"Table must have ref"),r(e.columns,"Table must have column definitions"),r(e.rows,"Table must have row definitions"),e.tl=n.decodeAddress(e.ref);const{row:i,col:s}=e.tl;r(i>0,"Table must be on valid row"),r(s>0,"Table must be on valid col");const{width:o,filterHeight:a,tableHeight:l}=this;e.autoFilterRef=n.encode(i,s,i+a-1,s+o-1),e.tableRef=n.encode(i,s,i+l-1,s+o-1),e.columns.forEach(((e,n)=>{r(e.name,`Column ${n} must have a name`),0===n?t(e,"totalsRowLabel","Total"):(t(e,"totalsRowFunction","none"),e.totalsRowFormula=this.getFormula(e))}))}store(){const e=(e,t)=>{t&&Object.keys(t).forEach((r=>{e[r]=t[r]}))},{worksheet:t,table:r}=this,{row:n,col:i}=r.tl;let s=0;if(r.headerRow){const o=t.getRow(n+s++);r.columns.forEach(((t,r)=>{const{style:n,name:s}=t,a=o.getCell(i+r);a.value=s,e(a,n)}))}if(r.rows.forEach((o=>{const a=t.getRow(n+s++);o.forEach(((t,n)=>{const s=a.getCell(i+n);s.value=t,e(s,r.columns[n].style)}))})),r.totalsRow){const o=t.getRow(n+s++);r.columns.forEach(((t,r)=>{const n=o.getCell(i+r);if(0===r)n.value=t.totalsRowLabel;else{const e=this.getFormula(t);n.value=e?{formula:t.totalsRowFormula,result:t.totalsRowResult}:null}e(n,t.style)}))}}load(e){const{table:t}=this,{row:r,col:n}=t.tl;let i=0;if(t.headerRow){const s=e.getRow(r+i++);t.columns.forEach(((e,t)=>{s.getCell(n+t).value=e.name}))}if(t.rows.forEach((t=>{const s=e.getRow(r+i++);t.forEach(((e,t)=>{s.getCell(n+t).value=e}))})),t.totalsRow){const s=e.getRow(r+i++);t.columns.forEach(((e,t)=>{const r=s.getCell(n+t);0===t?r.value=e.totalsRowLabel:this.getFormula(e)&&(r.value={formula:e.totalsRowFormula,result:e.totalsRowResult})}))}}get model(){return this.table}set model(e){this.table=e}cacheState(){this._cache||(this._cache={ref:this.ref,width:this.width,tableHeight:this.tableHeight})}commit(){if(!this._cache)return;this.validate();const e=n.decodeAddress(this._cache.ref);if(this.ref!==this._cache.ref)for(let t=0;t1&&void 0!==arguments[1]?arguments[1]:1;this.cacheState(),this.table.rows.splice(e,t)}getColumn(e){const t=this.table.columns[e];return new i(this,t,e)}addColumn(e,t,r){this.cacheState(),void 0===r?(this.table.columns.push(e),this.table.rows.forEach(((e,r)=>{e.push(t[r])}))):(this.table.columns.splice(r,0,e),this.table.rows.forEach(((e,n)=>{e.splice(r,0,t[n])})))}removeColumns(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;this.cacheState(),this.table.columns.splice(e,t),this.table.rows.forEach((r=>{r.splice(e,t)}))}_assign(e,t,r){this.cacheState(),e[t]=r}get ref(){return this.table.ref}set ref(e){this._assign(this.table,"ref",e)}get name(){return this.table.name}set name(e){this.table.name=e}get displayName(){return this.table.displyName||this.table.name}set displayNamename(e){this.table.displayName=e}get headerRow(){return this.table.headerRow}set headerRow(e){this._assign(this.table,"headerRow",e)}get totalsRow(){return this.table.totalsRow}set totalsRow(e){this._assign(this.table,"totalsRow",e)}get theme(){return this.table.style.name}set theme(e){this.table.style.name=e}get showFirstColumn(){return this.table.style.showFirstColumn}set showFirstColumn(e){this.table.style.showFirstColumn=e}get showLastColumn(){return this.table.style.showLastColumn}set showLastColumn(e){this.table.style.showLastColumn=e}get showRowStripes(){return this.table.style.showRowStripes}set showRowStripes(e){this.table.style.showRowStripes=e}get showColumnStripes(){return this.table.style.showColumnStripes}set showColumnStripes(e){this.table.style.showColumnStripes=e}}},{"../utils/col-cache":19}],13:[function(e,t,r){const n=e("./worksheet"),i=e("./defined-names"),s=e("../xlsx/xlsx"),o=e("../csv/csv");t.exports=class{constructor(){this.category="",this.company="",this.created=new Date,this.description="",this.keywords="",this.manager="",this.modified=this.created,this.properties={},this.calcProperties={},this._worksheets=[],this.subject="",this.title="",this.views=[],this.media=[],this._definedNames=new i}get xlsx(){return this._xlsx||(this._xlsx=new s(this)),this._xlsx}get csv(){return this._csv||(this._csv=new o(this)),this._csv}get nextId(){for(let e=1;e(t&&t.orderNo)>e?t.orderNo:e),0),s=Object.assign({},t,{id:r,name:e,orderNo:i+1,workbook:this}),o=new n(s);return this._worksheets[r]=o,o}removeWorksheetEx(e){delete this._worksheets[e.id]}removeWorksheet(e){const t=this.getWorksheet(e);t&&t.destroy()}getWorksheet(e){return void 0===e?this._worksheets.find(Boolean):"number"==typeof e?this._worksheets[e]:"string"==typeof e?this._worksheets.find((t=>t&&t.name===e)):void 0}get worksheets(){return this._worksheets.slice(1).sort(((e,t)=>e.orderNo-t.orderNo)).filter(Boolean)}eachSheet(e){this.worksheets.forEach((t=>{e(t,t.id)}))}get definedNames(){return this._definedNames}clearThemes(){this._themes=void 0}addImage(e){const t=this.media.length;return this.media.push(Object.assign({},e,{type:"image"})),t}getImage(e){return this.media[e]}get model(){return{creator:this.creator||"Unknown",lastModifiedBy:this.lastModifiedBy||"Unknown",lastPrinted:this.lastPrinted,created:this.created,modified:this.modified,properties:this.properties,worksheets:this.worksheets.map((e=>e.model)),sheets:this.worksheets.map((e=>e.model)).filter(Boolean),definedNames:this._definedNames.model,views:this.views,company:this.company,manager:this.manager,title:this.title,subject:this.subject,keywords:this.keywords,category:this.category,description:this.description,language:this.language,revision:this.revision,contentStatus:this.contentStatus,themes:this._themes,media:this.media,calcProperties:this.calcProperties}}set model(e){this.creator=e.creator,this.lastModifiedBy=e.lastModifiedBy,this.lastPrinted=e.lastPrinted,this.created=e.created,this.modified=e.modified,this.company=e.company,this.manager=e.manager,this.title=e.title,this.subject=e.subject,this.keywords=e.keywords,this.category=e.category,this.description=e.description,this.language=e.language,this.revision=e.revision,this.contentStatus=e.contentStatus,this.properties=e.properties,this.calcProperties=e.calcProperties,this._worksheets=[],e.worksheets.forEach((t=>{const{id:r,name:i,state:s}=t,o=e.sheets&&e.sheets.findIndex((e=>e.id===r));(this._worksheets[r]=new n({id:r,name:i,orderNo:o,state:s,workbook:this})).model=t})),this._definedNames.model=e.definedNames,this.views=e.views,this._themes=e.themes,this.media=e.media||[]}}},{"../csv/csv":1,"../xlsx/xlsx":144,"./defined-names":6,"./worksheet":14}],14:[function(e,t,r){const n=e("../utils/under-dash"),i=e("../utils/col-cache"),s=e("./range"),o=e("./row"),a=e("./column"),l=e("./enums"),c=e("./image"),h=e("./table"),u=e("./data-validations"),f=e("../utils/encryptor"),{copyStyle:d}=e("../utils/copy-style");t.exports=class{constructor(e){e=e||{},this._workbook=e.workbook,this.id=e.id,this.orderNo=e.orderNo,this.name=e.name,this.state=e.state||"visible",this._rows=[],this._columns=null,this._keys={},this._merges={},this.rowBreaks=[],this.properties=Object.assign({},{defaultRowHeight:15,dyDescent:55,outlineLevelCol:0,outlineLevelRow:0},e.properties),this.pageSetup=Object.assign({},{margins:{left:.7,right:.7,top:.75,bottom:.75,header:.3,footer:.3},orientation:"portrait",horizontalDpi:4294967295,verticalDpi:4294967295,fitToPage:!(!e.pageSetup||!e.pageSetup.fitToWidth&&!e.pageSetup.fitToHeight||e.pageSetup.scale),pageOrder:"downThenOver",blackAndWhite:!1,draft:!1,cellComments:"None",errors:"displayed",scale:100,fitToWidth:1,fitToHeight:1,paperSize:void 0,showRowColHeaders:!1,showGridLines:!1,firstPageNumber:void 0,horizontalCentered:!1,verticalCentered:!1,rowBreaks:null,colBreaks:null},e.pageSetup),this.headerFooter=Object.assign({},{differentFirst:!1,differentOddEven:!1,oddHeader:null,oddFooter:null,evenHeader:null,evenFooter:null,firstHeader:null,firstFooter:null},e.headerFooter),this.dataValidations=new u,this.views=e.views||[],this.autoFilter=e.autoFilter||null,this._media=[],this.sheetProtection=null,this.tables={},this.conditionalFormattings=[]}get name(){return this._name}set name(e){if(void 0===e&&(e="sheet"+this.id),this._name!==e){if("string"!=typeof e)throw new Error("The name has to be a string.");if(""===e)throw new Error("The name can't be empty.");if("History"===e)throw new Error('The name "History" is protected. Please use a different name.');if(/[*?:/\\[\]]/.test(e))throw new Error(`Worksheet name ${e} cannot include any of the following characters: * ? : \\ / [ ]`);if(/(^')|('$)/.test(e))throw new Error("The first or last character of worksheet name cannot be a single quotation mark: "+e);if(e&&e.length>31&&(console.warn(`Worksheet name ${e} exceeds 31 chars. This will be truncated`),e=e.substring(0,31)),this._workbook._worksheets.find((t=>t&&t.name.toLowerCase()===e.toLowerCase())))throw new Error("Worksheet name already exists: "+e);this._name=e}}get workbook(){return this._workbook}destroy(){this._workbook.removeWorksheetEx(this)}get dimensions(){const e=new s;return this._rows.forEach((t=>{if(t){const r=t.dimensions;r&&e.expand(t.number,r.min,t.number,r.max)}})),e}get columns(){return this._columns}set columns(e){this._headerRowCount=e.reduce(((e,t)=>{const r=(t.header?1:t.headers&&t.headers.length)||0;return Math.max(e,r)}),0);let t=1;const r=this._columns=[];e.forEach((e=>{const n=new a(this,t++,!1);r.push(n),n.defn=e}))}getColumnKey(e){return this._keys[e]}setColumnKey(e,t){this._keys[e]=t}deleteColumnKey(e){delete this._keys[e]}eachColumnKey(e){n.each(this._keys,e)}getColumn(e){if("string"==typeof e){const t=this._keys[e];if(t)return t;e=i.l2n(e)}if(this._columns||(this._columns=[]),e>this._columns.length){let t=this._columns.length+1;for(;t<=e;)this._columns.push(new a(this,t++))}return this._columns[e-1]}spliceColumns(e,t){const r=this._rows.length;for(var n=arguments.length,i=new Array(n>2?n-2:0),s=2;s0)for(let c=0;c{r.push(e[c]||null)}));const n=this.getRow(c+1);n.splice.apply(n,r)}else this._rows.forEach((r=>{r&&r.splice(e,t)}));const o=i.length-t,a=e+t,l=this._columns.length;if(o<0)for(let c=e+i.length;c<=l;c++)this.getColumn(c).defn=this.getColumn(c-o).defn;else if(o>0)for(let c=l;c>=a;c--)this.getColumn(c+o).defn=this.getColumn(c).defn;for(let c=e;c{e=Math.max(e,t.cellCount)})),e}get actualColumnCount(){const e=[];let t=0;return this.eachRow((r=>{r.eachCell((r=>{let{col:n}=r;e[n]||(e[n]=!0,t++)}))})),t}_commitRow(){}get _lastRowNumber(){const e=this._rows;let t=e.length;for(;t>0&&void 0===e[t-1];)t--;return t}get _nextRow(){return this._lastRowNumber+1}get lastRow(){if(this._rows.length)return this._rows[this._rows.length-1]}findRow(e){return this._rows[e-1]}findRows(e,t){return this._rows.slice(e-1,e-1+t)}get rowCount(){return this._lastRowNumber}get actualRowCount(){let e=0;return this.eachRow((()=>{e++})),e}getRow(e){let t=this._rows[e-1];return t||(t=this._rows[e-1]=new o(this,e)),t}getRows(e,t){if(t<1)return;const r=[];for(let n=e;n1&&void 0!==arguments[1]?arguments[1]:"n";const r=this._nextRow,n=this.getRow(r);return n.values=e,this._setStyleOption(r,"i"===t[0]?t:"n"),n}addRows(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"n";const r=[];return e.forEach((e=>{r.push(this.addRow(e,t))})),r}insertRow(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"n";return this.spliceRows(e,0,t),this._setStyleOption(e,r),this.getRow(e)}insertRows(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"n";if(this.spliceRows(e,0,...t),"n"!==r)for(let n=0;n1&&void 0!==arguments[1]?arguments[1]:"n";"o"===t[0]&&void 0!==this.findRow(e+1)?this._copyStyle(e+1,e,"+"===t[1]):"i"===t[0]&&void 0!==this.findRow(e-1)&&this._copyStyle(e-1,e,"+"===t[1])}_copyStyle(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const n=this.getRow(e),i=this.getRow(t);i.style=d(n.style),n.eachCell({includeEmpty:r},((e,t)=>{i.getCell(t).style=d(e.style)})),i.height=n.height}duplicateRow(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const n=this._rows[e-1],i=new Array(t).fill(n.values);this.spliceRows(e+1,r?0:t,...i);for(let s=0;s{t.getCell(r).style=e.style}))}}spliceRows(e,t){const r=e+t;for(var n=arguments.length,i=new Array(n>2?n-2:0),s=2;s{e.getCell(r).style=t.style})),this._rows[c-1]=void 0}else this._rows[c+a-1]=void 0;else if(a>0)for(c=l;c>=r;c--)if(h=this._rows[c-1],h){const e=this.getRow(c+a);e.values=h.values,e.style=h.style,e.height=h.height,h.eachCell({includeEmpty:!0},((t,r)=>{if(e.getCell(r).style=t.style,"MergeValue"===t._value.constructor.name){const e=this.getRow(t._row._number+o).getCell(r),n=t._value._master,i=this.getRow(n._row._number+o).getCell(n._column._number);e.merge(i)}}))}else this._rows[c+a-1]=void 0;for(c=0;c{e&&e.hasValues&&t(e,e.number)}))}getSheetValues(){const e=[];return this._rows.forEach((t=>{t&&(e[t.number]=t.values)})),e}findCell(e,t){const r=i.getAddress(e,t),n=this._rows[r.row-1];return n?n.findCell(r.col):void 0}getCell(e,t){const r=i.getAddress(e,t);return this.getRow(r.row).getCellEx(r)}mergeCells(){for(var e=arguments.length,t=new Array(e),r=0;r{if(t.intersects(e))throw new Error("Cannot merge already merged cells")}));const r=this.getCell(e.top,e.left);for(let n=e.top;n<=e.bottom;n++)for(let i=e.left;i<=e.right;i++)(n>e.top||i>e.left)&&this.getCell(n,i).merge(r,t);this._merges[r.address]=e}_unMergeMaster(e){const t=this._merges[e.address];if(t){for(let e=t.top;e<=t.bottom;e++)for(let r=t.left;r<=t.right;r++)this.getCell(e,r).unmerge();delete this._merges[e.address]}}get hasMerges(){return n.some(this._merges,Boolean)}unMergeCells(){for(var e=arguments.length,t=new Array(e),r=0;r3&&void 0!==arguments[3]?arguments[3]:"shared";const s=i.decode(e),{top:o,left:a,bottom:l,right:c}=s,h=c-a+1,u=i.encodeAddress(o,a),f="shared"===n;let d;d="function"==typeof r?r:Array.isArray(r)?Array.isArray(r[0])?(e,t)=>r[e-o][t-a]:(e,t)=>r[(e-o)*h+(t-a)]:()=>{};let p=!0;for(let i=o;i<=l;i++)for(let r=a;r<=c;r++)p?(this.getCell(i,r).value={shareType:n,formula:t,ref:e,result:d(i,r)},p=!1):this.getCell(i,r).value=f?{sharedFormula:u,result:d(i,r)}:d(i,r)}addImage(e,t){const r={type:"image",imageId:e,range:t};this._media.push(new c(this,r))}getImages(){return this._media.filter((e=>"image"===e.type))}addBackgroundImage(e){const t={type:"background",imageId:e};this._media.push(new c(this,t))}getBackgroundImageId(){const e=this._media.find((e=>"background"===e.type));return e&&e.imageId}protect(e,t){return new Promise((r=>{this.sheetProtection={sheet:!0},t&&"spinCount"in t&&(t.spinCount=Number.isFinite(t.spinCount)?Math.round(Math.max(0,t.spinCount)):1e5),e&&(this.sheetProtection.algorithmName="SHA-512",this.sheetProtection.saltValue=f.randomBytes(16).toString("base64"),this.sheetProtection.spinCount=t&&"spinCount"in t?t.spinCount:1e5,this.sheetProtection.hashValue=f.convertPasswordToHash(e,"SHA512",this.sheetProtection.saltValue,this.sheetProtection.spinCount)),t&&(this.sheetProtection=Object.assign(this.sheetProtection,t),!e&&"spinCount"in t&&delete this.sheetProtection.spinCount),r()}))}unprotect(){this.sheetProtection=null}addTable(e){const t=new h(this,e);return this.tables[e.name]=t,t}getTable(e){return this.tables[e]}removeTable(e){delete this.tables[e]}getTables(){return Object.values(this.tables)}addConditionalFormatting(e){this.conditionalFormattings.push(e)}removeConditionalFormatting(e){"number"==typeof e?this.conditionalFormattings.splice(e,1):this.conditionalFormattings=e instanceof Function?this.conditionalFormattings.filter(e):[]}get tabColor(){return console.trace("worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor"),this.properties.tabColor}set tabColor(e){console.trace("worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor"),this.properties.tabColor=e}get model(){const e={id:this.id,name:this.name,dataValidations:this.dataValidations.model,properties:this.properties,state:this.state,pageSetup:this.pageSetup,headerFooter:this.headerFooter,rowBreaks:this.rowBreaks,views:this.views,autoFilter:this.autoFilter,media:this._media.map((e=>e.model)),sheetProtection:this.sheetProtection,tables:Object.values(this.tables).map((e=>e.model)),conditionalFormattings:this.conditionalFormattings};e.cols=a.toModel(this.columns);const t=e.rows=[],r=e.dimensions=new s;return this._rows.forEach((e=>{const n=e&&e.model;n&&(r.expand(n.number,n.min,n.number,n.max),t.push(n))})),e.merges=[],n.each(this._merges,(t=>{e.merges.push(t.range)})),e}_parseRows(e){this._rows=[],e.rows.forEach((e=>{const t=new o(this,e.number);this._rows[t.number-1]=t,t.model=e}))}_parseMergeCells(e){n.each(e.mergeCells,(e=>{this.mergeCellsWithoutStyle(e)}))}set model(e){this.name=e.name,this._columns=a.fromModel(this,e.cols),this._parseRows(e),this._parseMergeCells(e),this.dataValidations=new u(e.dataValidations),this.properties=e.properties,this.pageSetup=e.pageSetup,this.headerFooter=e.headerFooter,this.views=e.views,this.autoFilter=e.autoFilter,this._media=e.media.map((e=>new c(this,e))),this.sheetProtection=e.sheetProtection,this.tables=e.tables.reduce(((e,t)=>{const r=new h;return r.model=t,e[t.name]=r,e}),{}),this.conditionalFormattings=e.conditionalFormattings}}},{"../utils/col-cache":19,"../utils/copy-style":20,"../utils/encryptor":21,"../utils/under-dash":26,"./column":4,"./data-validations":5,"./enums":7,"./image":8,"./range":10,"./row":11,"./table":12}],15:[function(e,t,r){e("core-js/modules/es.promise"),e("core-js/modules/es.promise.finally"),e("core-js/modules/es.object.assign"),e("core-js/modules/es.object.keys"),e("core-js/modules/es.object.values"),e("core-js/modules/es.symbol"),e("core-js/modules/es.symbol.async-iterator"),e("core-js/modules/es.array.iterator"),e("core-js/modules/es.array.includes"),e("core-js/modules/es.array.find-index"),e("core-js/modules/es.array.find"),e("core-js/modules/es.string.from-code-point"),e("core-js/modules/es.string.includes"),e("core-js/modules/es.number.is-nan"),e("regenerator-runtime/runtime");const n={Workbook:e("./doc/workbook")},i=e("./doc/enums");Object.keys(i).forEach((e=>{n[e]=i[e]})),t.exports=n},{"./doc/enums":7,"./doc/workbook":13,"core-js/modules/es.array.find":359,"core-js/modules/es.array.find-index":358,"core-js/modules/es.array.includes":360,"core-js/modules/es.array.iterator":361,"core-js/modules/es.number.is-nan":363,"core-js/modules/es.object.assign":364,"core-js/modules/es.object.keys":366,"core-js/modules/es.object.values":367,"core-js/modules/es.promise":372,"core-js/modules/es.promise.finally":371,"core-js/modules/es.string.from-code-point":376,"core-js/modules/es.string.includes":377,"core-js/modules/es.symbol":381,"core-js/modules/es.symbol.async-iterator":378,"regenerator-runtime/runtime":492}],16:[function(e,t,r){const n="undefined"==typeof TextDecoder?null:new TextDecoder("utf-8");r.bufferToString=function(e){return"string"==typeof e?e:n?n.decode(e):e.toString()}},{}],17:[function(e,t,r){const n="undefined"==typeof TextEncoder?null:new TextEncoder("utf-8"),{Buffer:i}=e("buffer");r.stringToBuffer=function(e){return"string"!=typeof e?e:n?i.from(n.encode(e).buffer):i.from(e)}},{buffer:220}],18:[function(e,t,r){const n=e("./under-dash"),i=e("./col-cache");t.exports=class{constructor(e){this.template=e,this.sheets={}}addCell(e){this.addCellEx(i.decodeEx(e))}getCell(e){return this.findCellEx(i.decodeEx(e),!0)}findCell(e){return this.findCellEx(i.decodeEx(e),!1)}findCellAt(e,t,r){const n=this.sheets[e],i=n&&n[t];return i&&i[r]}addCellEx(e){if(e.top)for(let t=e.top;t<=e.bottom;t++)for(let r=e.left;r<=e.right;r++)this.getCellAt(e.sheetName,t,r);else this.findCellEx(e,!0)}getCellEx(e){return this.findCellEx(e,!0)}findCellEx(e,t){const r=this.findSheet(e,t),n=this.findSheetRow(r,e,t);return this.findRowCell(n,e,t)}getCellAt(e,t,r){const n=this.sheets[e]||(this.sheets[e]=[]),s=n[t]||(n[t]=[]);return s[r]||(s[r]={sheetName:e,address:i.n2l(r)+t,row:t,col:r})}removeCellEx(e){const t=this.findSheet(e);if(!t)return;const r=this.findSheetRow(t,e);r&&delete r[e.col]}forEachInSheet(e,t){const r=this.sheets[e];r&&r.forEach(((e,r)=>{e&&e.forEach(((e,n)=>{e&&t(e,r,n)}))}))}forEach(e){n.each(this.sheets,((t,r)=>{this.forEachInSheet(r,e)}))}map(e){const t=[];return this.forEach((r=>{t.push(e(r))})),t}findSheet(e,t){const r=e.sheetName;return this.sheets[r]?this.sheets[r]:t?this.sheets[r]=[]:void 0}findSheetRow(e,t,r){const{row:n}=t;return e&&e[n]?e[n]:r?e[n]=[]:void 0}findRowCell(e,t,r){const{col:n}=t;return e&&e[n]?e[n]:r?e[n]=this.template?Object.assign(t,JSON.parse(JSON.stringify(this.template))):t:void 0}spliceRows(e,t,r,n){const i=this.sheets[e];if(i){const e=[];for(let t=0;t{n.splice(t,r,...e)}))}}}},{"./col-cache":19,"./under-dash":26}],19:[function(e,t,r){const n=/^[A-Z]+\d+$/,i={_dictionary:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],_l2nFill:0,_l2n:{},_n2l:[],_level:e=>e<=26?1:e<=676?2:3,_fill(e){let t,r,n,i,s,o=1;if(e>=4)throw new Error("Out of bounds. Excel supports columns from 1 to 16384");if(this._l2nFill<1&&e>=1){for(;o<=26;)t=this._dictionary[o-1],this._n2l[o]=t,this._l2n[t]=o,o++;this._l2nFill=1}if(this._l2nFill<2&&e>=2){for(o=27;o<=702;)r=o-27,n=r%26,i=Math.floor(r/26),t=this._dictionary[i]+this._dictionary[n],this._n2l[o]=t,this._l2n[t]=o,o++;this._l2nFill=2}if(this._l2nFill<3&&e>=3){for(o=703;o<=16384;)r=o-703,n=r%26,i=Math.floor(r/26)%26,s=Math.floor(r/676),t=this._dictionary[s]+this._dictionary[i]+this._dictionary[n],this._n2l[o]=t,this._l2n[t]=o,o++;this._l2nFill=3}},l2n(e){if(this._l2n[e]||this._fill(e.length),!this._l2n[e])throw new Error("Out of bounds. Invalid column letter: "+e);return this._l2n[e]},n2l(e){if(e<1||e>16384)throw new Error(e+" is out of bounds. Excel supports columns from 1 to 16384");return this._n2l[e]||this._fill(this._level(e)),this._n2l[e]},_hash:{},validateAddress(e){if(!n.test(e))throw new Error("Invalid Address: "+e);return!0},decodeAddress(e){const t=e.length<5&&this._hash[e];if(t)return t;let r=!1,n="",i=0,s=!1,o="",a=0;for(let c,h=0;h=65&&c<=90)r=!0,n+=e[h],i=26*i+c-64;else if(c>=48&&c<=57)s=!0,o+=e[h],a=10*a+c-48;else if(s&&r&&36!==c)break;if(r){if(i>16384)throw new Error("Out of bounds. Invalid column letter: "+n)}else i=void 0;s||(a=void 0);const l={address:e=n+o,col:i,row:a,$col$row:`$${n}$${o}`};return i<=100&&a<=100&&(this._hash[e]=l,this._hash[l.$col$row]=l),l},getAddress(e,t){if(t){const r=this.n2l(t)+e;return this.decodeAddress(r)}return this.decodeAddress(e)},decode(e){const t=e.split(":");if(2===t.length){const e=this.decodeAddress(t[0]),r=this.decodeAddress(t[1]),n={top:Math.min(e.row,r.row),left:Math.min(e.col,r.col),bottom:Math.max(e.row,r.row),right:Math.max(e.col,r.col)};return n.tl=this.n2l(n.left)+n.top,n.br=this.n2l(n.right)+n.bottom,n.dimensions=`${n.tl}:${n.br}`,n}return this.decodeAddress(e)},decodeEx(e){const t=e.match(/(?:(?:(?:'((?:[^']|'')*)')|([^'^ !]*))!)?(.*)/),r=t[1]||t[2],n=t[3],i=n.split(":");if(i.length>1){let e=this.decodeAddress(i[0]),t=this.decodeAddress(i[1]);const n=Math.min(e.row,t.row),s=Math.min(e.col,t.col),o=Math.max(e.row,t.row),a=Math.max(e.col,t.col);return e=this.n2l(s)+n,t=this.n2l(a)+o,{top:n,left:s,bottom:o,right:a,sheetName:r,tl:{address:e,col:s,row:n,$col$row:`$${this.n2l(s)}$${n}`,sheetName:r},br:{address:t,col:a,row:o,$col$row:`$${this.n2l(a)}$${o}`,sheetName:r},dimensions:`${e}:${t}`}}if(n.startsWith("#"))return r?{sheetName:r,error:n}:{error:n};const s=this.decodeAddress(n);return r?{sheetName:r,...s}:s},encodeAddress:(e,t)=>i.n2l(t)+e,encode(){switch(arguments.length){case 2:return i.encodeAddress(arguments[0],arguments[1]);case 4:return`${i.encodeAddress(arguments[0],arguments[1])}:${i.encodeAddress(arguments[2],arguments[3])}`;default:throw new Error("Can only encode with 2 or 4 arguments")}},inRange(e,t){const[r,n,,i,s]=e,[o,a]=t;return o>=r&&o<=i&&a>=n&&a<=s}};t.exports=i},{}],20:[function(e,t,r){const n=(e,t)=>({...e,...t.reduce(((t,r)=>(e[r]&&(t[r]={...e[r]}),t)),{})}),i=function(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];e[r]&&(t[r]=n(e[r],i))};r.copyStyle=e=>{if(!e)return e;if(t=e,0===Object.keys(t).length)return{};var t;const r={...e};return i(e,r,"font",["color"]),i(e,r,"alignment"),i(e,r,"protection"),e.border&&(i(e,r,"border"),i(e.border,r.border,"top",["color"]),i(e.border,r.border,"left",["color"]),i(e.border,r.border,"bottom",["color"]),i(e.border,r.border,"right",["color"]),i(e.border,r.border,"diagonal",["color"])),e.fill&&(i(e,r,"fill",["fgColor","bgColor","center"]),e.fill.stops&&(r.fill.stops=e.fill.stops.map((e=>n(e,["color"]))))),r}},{}],21:[function(e,t,r){(function(r){(function(){const n=e("crypto"),i={hash(e){const t=n.createHash(e);for(var i=arguments.length,s=new Array(i>1?i-1:0),o=1;on.randomBytes(e)};t.exports=i}).call(this)}).call(this,e("buffer").Buffer)},{buffer:220,crypto:390}],22:[function(e,t,r){const{SaxesParser:n}=e("saxes"),{PassThrough:i}=e("readable-stream"),{bufferToString:s}=e("./browser-buffer-decode");t.exports=async function*(e){e.pipe&&!e[Symbol.asyncIterator]&&(e=e.pipe(new i));const t=new n;let r;t.on("error",(e=>{r=e}));let o=[];t.on("opentag",(e=>o.push({eventType:"opentag",value:e}))),t.on("text",(e=>o.push({eventType:"text",value:e}))),t.on("closetag",(e=>o.push({eventType:"closetag",value:e})));for await(const n of e){if(t.write(s(n)),r)throw r;yield o,o=[]}}},{"./browser-buffer-decode":16,"readable-stream":491,saxes:496}],23:[function(e,t,r){const n=e("./col-cache"),i=/(([a-z_\-0-9]*)!)?([a-z0-9_$]{2,})([(])?/gi,s=/^([$])?([a-z]+)([$])?([1-9][0-9]*)$/i;t.exports={slideFormula:function(e,t,r){const o=n.decode(t),a=n.decode(r);return e.replace(i,((e,t,r,i,l)=>{if(l)return e;const c=s.exec(i);if(c){const r=c[1],i=c[2].toUpperCase(),s=c[3],l=c[4];if(i.length>3||3===i.length&&i>"XFD")return e;let h=n.l2n(i),u=parseInt(l,10);return r||(h+=a.col-o.col),s||(u+=a.row-o.row),(t||"")+(r||"")+n.n2l(h)+(s||"")+u}return e}))}}},{"./col-cache":19}],24:[function(e,t,r){(function(r,n){(function(){const i=e("readable-stream"),s=e("./utils"),o=e("./string-buf");class a{constructor(e,t){this._data=e,this._encoding=t}get length(){return this.toBuffer().length}copy(e,t,r,n){return this.toBuffer().copy(e,t,r,n)}toBuffer(){return this._buffer||(this._buffer=n.from(this._data,this._encoding)),this._buffer}}class l{constructor(e){this._data=e}get length(){return this._data.length}copy(e,t,r,n){return this._data._buf.copy(e,t,r,n)}toBuffer(){return this._data.toBuffer()}}class c{constructor(e){this._data=e}get length(){return this._data.length}copy(e,t,r,n){this._data.copy(e,t,r,n)}toBuffer(){return this._data}}class h{constructor(e){this.size=e,this.buffer=n.alloc(e),this.iRead=0,this.iWrite=0}toBuffer(){if(0===this.iRead&&this.iWrite===this.size)return this.buffer;const e=n.alloc(this.iWrite-this.iRead);return this.buffer.copy(e,0,this.iRead,this.iWrite),e}get length(){return this.iWrite-this.iRead}get eod(){return this.iRead===this.iWrite}get full(){return this.iWrite===this.size}read(e){let t;return 0===e?null:void 0===e||e>=this.length?(t=this.toBuffer(),this.iRead=this.iWrite,t):(t=n.alloc(e),this.buffer.copy(t,0,this.iRead,e),this.iRead+=e,t)}write(e,t,r){const n=Math.min(r,this.size-this.iWrite);return e.copy(this.buffer,this.iWrite,t,t+n),this.iWrite+=n,n}}const u=function(e){e=e||{},this.bufSize=e.bufSize||1048576,this.buffers=[],this.batch=e.batch||!1,this.corked=!1,this.inPos=0,this.outPos=0,this.pipes=[],this.paused=!1,this.encoding=null};s.inherits(u,i.Duplex,{toBuffer(){switch(this.buffers.length){case 0:return null;case 1:return this.buffers[0].toBuffer();default:return n.concat(this.buffers.map((e=>e.toBuffer())))}},_getWritableBuffer(){if(this.buffers.length){const e=this.buffers[this.buffers.length-1];if(!e.full)return e}const e=new h(this.bufSize);return this.buffers.push(e),e},async _pipe(e){await Promise.all(this.pipes.map((function(t){return new Promise((r=>{t.write(e.toBuffer(),(()=>{r()}))}))})))},_writeToBuffers(e){let t=0;const r=e.length;for(;t1;)this._pipe(this.buffers.shift());else this.corked?(this._writeToBuffers(h),r.nextTick(i)):(await this._pipe(h),i());else this.paused||this.emit("data",h.toBuffer()),this._writeToBuffers(h),this.emit("readable");return!0},cork(){this.corked=!0},_flush(){if(this.pipes.length)for(;this.buffers.length;)this._pipe(this.buffers.shift())},uncork(){this.corked=!1,this._flush()},end(e,t,r){const n=e=>{e?r(e):(this._flush(),this.pipes.forEach((e=>{e.end()})),this.emit("finish"))};e?this.write(e,t,n):n()},read(e){let t;if(e){for(t=[];e&&this.buffers.length&&!this.buffers[0].eod;){const r=this.buffers[0],n=r.read(e);e-=n.length,t.push(n),r.eod&&r.full&&this.buffers.shift()}return n.concat(t)}return t=this.buffers.map((e=>e.toBuffer())).filter(Boolean),this.buffers=[],n.concat(t)},setEncoding(e){this.encoding=e},pause(){this.paused=!0},resume(){this.paused=!1},isPaused(){return!!this.paused},pipe(e){this.pipes.push(e),!this.paused&&this.buffers.length&&this.end()},unpipe(e){this.pipes=this.pipes.filter((t=>t!==e))},unshift(){throw new Error("Not Implemented")},wrap(){throw new Error("Not Implemented")}}),t.exports=u}).call(this)}).call(this,e("_process"),e("buffer").Buffer)},{"./string-buf":25,"./utils":27,_process:467,buffer:220,"readable-stream":491}],25:[function(e,t,r){(function(e){(function(){t.exports=class{constructor(t){this._buf=e.alloc(t&&t.size||16384),this._encoding=t&&t.encoding||"utf8",this._inPos=0,this._buffer=void 0}get length(){return this._inPos}get capacity(){return this._buf.length}get buffer(){return this._buf}toBuffer(){return this._buffer||(this._buffer=e.alloc(this.length),this._buf.copy(this._buffer,0,0,this.length)),this._buffer}reset(e){e=e||0,this._buffer=void 0,this._inPos=e}_grow(t){let r=2*this._buf.length;for(;r=this._buf.length-4;)this._grow(this._inPos+e.length),t=this._inPos+this._buf.write(e,this._inPos,this._encoding);this._inPos=t}addStringBuf(e){e.length&&(this._buffer=void 0,this.length+e.length>this.capacity&&this._grow(this.length+e.length),e._buf.copy(this._buf,this._inPos,0,e.length),this._inPos+=e.length)}}}).call(this)}).call(this,e("buffer").Buffer)},{buffer:220}],26:[function(e,t,r){const{toString:n}=Object.prototype,i=/["&<>]/,s={each:function(e,t){e&&(Array.isArray(e)?e.forEach(t):Object.keys(e).forEach((r=>{t(e[r],r)})))},some:function(e,t){return!!e&&(Array.isArray(e)?e.some(t):Object.keys(e).some((r=>t(e[r],r))))},every:function(e,t){return!e||(Array.isArray(e)?e.every(t):Object.keys(e).every((r=>t(e[r],r))))},map:function(e,t){return e?Array.isArray(e)?e.map(t):Object.keys(e).map((r=>t(e[r],r))):[]},keyBy:(e,t)=>e.reduce(((e,r)=>(e[r[t]]=r,e)),{}),isEqual:function(e,t){const r=typeof e,n=typeof t,i=Array.isArray(e),o=Array.isArray(t);let a;if(r!==n)return!1;if("object"==typeof e){if(i||o)return!(!i||!o)&&e.length===t.length&&e.every(((e,r)=>{const n=t[r];return s.isEqual(e,n)}));if(null===e||null===t)return e===t;if(a=Object.keys(e),Object.keys(t).length!==a.length)return!1;for(const e of a)if(!t.hasOwnProperty(e))return!1;return s.every(e,((e,r)=>{const n=t[r];return s.isEqual(e,n)}))}return e===t},escapeHtml(e){const t=i.exec(e);if(!t)return e;let r="",n="",s=0,o=t.index;for(;o":n=">";break;default:continue}s!==o&&(r+=e.substring(s,o)),s=o+1,r+=n}return s!==o?r+e.substring(s,o):r},strcmp:(e,t)=>et?1:0,isUndefined:e=>"[object Undefined]"===n.call(e),isObject:e=>"[object Object]"===n.call(e),deepMerge(){const e=arguments[0]||{},{length:t}=arguments;let r,n,i;function o(t,o){r=e[o],i=Array.isArray(t),s.isObject(t)||i?(i?(i=!1,n=r&&Array.isArray(r)?r:[]):n=r&&s.isObject(r)?r:{},e[o]=s.deepMerge(n,t)):s.isUndefined(t)||(e[o]=t)}for(let a=0;a&'"\x7F\x00-\x08\x0B-\x0C\x0E-\x1F]/,o={nop(){},promiseImmediate:e=>new Promise((t=>{r.setImmediate?n((()=>{t(e)})):setTimeout((()=>{t(e)}),1)})),inherits:function(e,t,r,n){e.super_=t,n||(n=r,r=null),r&&Object.keys(r).forEach((t=>{Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}));const i={constructor:{value:e,enumerable:!1,writable:!1,configurable:!0}};n&&Object.keys(n).forEach((e=>{i[e]=Object.getOwnPropertyDescriptor(n,e)})),e.prototype=Object.create(t.prototype,i)},dateToExcel:(e,t)=>25569+e.getTime()/864e5-(t?1462:0),excelToDate(e,t){const r=Math.round(24*(e-25569+(t?1462:0))*3600*1e3);return new Date(r)},parsePath(e){const t=e.lastIndexOf("/");return{path:e.substring(0,t),name:e.substring(t+1)}},getRelsPath(e){const t=o.parsePath(e);return`${t.path}/_rels/${t.name}.rels`},xmlEncode(e){const t=s.exec(e);if(!t)return e;let r="",n="",i=0,o=t.index;for(;o=11&&13!==t)){n="";break}continue}i!==o&&(r+=e.substring(i,o)),i=o+1,n&&(r+=n)}return i!==o?r+e.substring(i,o):r},xmlDecode:e=>e.replace(/&([a-z]*);/g,(e=>{switch(e){case"<":return"<";case">":return">";case"&":return"&";case"'":return"'";case""":return'"';default:return e}})),validInt(e){const t=parseInt(e,10);return Number.isNaN(t)?0:t},isDateFmt:e=>!!e&&null!==(e=(e=e.replace(/\[[^\]]*]/g,"")).replace(/"[^"]*"/g,"")).match(/[ymdhMsb]+/),fs:{exists:e=>new Promise((t=>{i.access(e,i.constants.F_OK,(e=>{t(!e)}))}))},toIsoDateString:e=>e.toIsoString().subsstr(0,10),parseBoolean:e=>!0===e||"true"===e||1===e||"1"===e};t.exports=o}).call(this)}).call(this,void 0!==A?A:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},e("timers").setImmediate)},{fs:216,timers:523}],28:[function(e,t,r){const n=e("./under-dash"),i=e("./utils");function s(e,t,r){e.push(` ${t}="${i.xmlEncode(r.toString())}"`)}function o(e,t){if(t){const r=[];n.each(t,((e,t)=>{void 0!==e&&s(r,t,e)})),e.push(r.join(""))}}class a{constructor(){this._xml=[],this._stack=[],this._rollbacks=[]}get tos(){return this._stack.length?this._stack[this._stack.length-1]:void 0}get cursor(){return this._xml.length}openXml(e){const t=this._xml;t.push("\n")}openNode(e,t){const r=this.tos,n=this._xml;r&&this.open&&n.push(">"),this._stack.push(e),n.push("<"),n.push(e),o(n,t),this.leaf=!0,this.open=!0}addAttribute(e,t){if(!this.open)throw new Error("Cannot write attributes to node if it is not open");void 0!==t&&s(this._xml,e,t)}addAttributes(e){if(!this.open)throw new Error("Cannot write attributes to node if it is not open");o(this._xml,e)}writeText(e){const t=this._xml;this.open&&(t.push(">"),this.open=!1),this.leaf=!1,t.push(i.xmlEncode(e.toString()))}writeXml(e){this.open&&(this._xml.push(">"),this.open=!1),this.leaf=!1,this._xml.push(e)}closeNode(){const e=this._stack.pop(),t=this._xml;this.leaf?t.push("/>"):(t.push("")),this.open=!1,this.leaf=!1}leafNode(e,t,r){this.openNode(e,t),void 0!==r&&this.writeText(r),this.closeNode()}closeAll(){for(;this._stack.length;)this.closeNode()}addRollback(){return this._rollbacks.push({xml:this._xml.length,stack:this._stack.length,leaf:this.leaf,open:this.open}),this.cursor}commit(){this._rollbacks.pop()}rollback(){const e=this._rollbacks.pop();this._xml.length>e.xml&&this._xml.splice(e.xml,this._xml.length-e.xml),this._stack.length>e.stack&&this._stack.splice(e.stack,this._stack.length-e.stack),this.leaf=e.leaf,this.open=e.open}get xml(){return this.closeAll(),this._xml.join("")}}a.StdDocAttributes={version:"1.0",encoding:"UTF-8",standalone:"yes"},t.exports=a},{"./under-dash":26,"./utils":27}],29:[function(e,t,r){(function(r){(function(){const n=e("events"),i=e("jszip"),s=e("./stream-buf"),{stringToBuffer:o}=e("./browser-buffer-encode");class a extends n.EventEmitter{constructor(e){super(),this.options=Object.assign({type:"nodebuffer",compression:"DEFLATE"},e),this.zip=new i,this.stream=new s}append(e,t){t.hasOwnProperty("base64")&&t.base64?this.zip.file(t.name,e,{base64:!0}):(r.browser&&"string"==typeof e&&(e=o(e)),this.zip.file(t.name,e))}async finalize(){const e=await this.zip.generateAsync(this.options);this.stream.end(e),this.emit("finish")}read(e){return this.stream.read(e)}setEncoding(e){return this.stream.setEncoding(e)}pause(){return this.stream.pause()}resume(){return this.stream.resume()}isPaused(){return this.stream.isPaused()}pipe(e,t){return this.stream.pipe(e,t)}unpipe(e){return this.stream.unpipe(e)}unshift(e){return this.stream.unshift(e)}wrap(e){return this.stream.wrap(e)}}t.exports={ZipWriter:a}}).call(this)}).call(this,e("_process"))},{"./browser-buffer-encode":17,"./stream-buf":24,_process:467,events:422,jszip:441}],30:[function(e,t,r){t.exports={0:{f:"General"},1:{f:"0"},2:{f:"0.00"},3:{f:"#,##0"},4:{f:"#,##0.00"},9:{f:"0%"},10:{f:"0.00%"},11:{f:"0.00E+00"},12:{f:"# ?/?"},13:{f:"# ??/??"},14:{f:"mm-dd-yy"},15:{f:"d-mmm-yy"},16:{f:"d-mmm"},17:{f:"mmm-yy"},18:{f:"h:mm AM/PM"},19:{f:"h:mm:ss AM/PM"},20:{f:"h:mm"},21:{f:"h:mm:ss"},22:{f:'m/d/yy "h":mm'},27:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},28:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},29:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},30:{"zh-tw":"m/d/yy ","zh-cn":"m-d-yy","ja-jp":"m/d/yy","ko-kr":"mm-dd-yy"},31:{"zh-tw":'yyyy"年"m"月"d"日"',"zh-cn":'yyyy"年"m"月"d"日"',"ja-jp":'yyyy"年"m"月"d"日"',"ko-kr":'yyyy"년" mm"월" dd"일"'},32:{"zh-tw":'hh"時"mm"分"',"zh-cn":'h"时"mm"分"',"ja-jp":'h"時"mm"分"',"ko-kr":'h"시" mm"분"'},33:{"zh-tw":'hh"時"mm"分"ss"秒"',"zh-cn":'h"时"mm"分"ss"秒"',"ja-jp":'h"時"mm"分"ss"秒"',"ko-kr":'h"시" mm"분" ss"초"'},34:{"zh-tw":'上午/下午 hh"時"mm"分"',"zh-cn":'上午/下午 h"时"mm"分"',"ja-jp":'yyyy"年"m"月"',"ko-kr":"yyyy-mm-dd"},35:{"zh-tw":'上午/下午 hh"時"mm"分"ss"秒"',"zh-cn":'上午/下午 h"时"mm"分"ss"秒"',"ja-jp":'m"月"d"日"',"ko-kr":"yyyy-mm-dd"},36:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},37:{f:"#,##0 ;(#,##0)"},38:{f:"#,##0 ;[Red](#,##0)"},39:{f:"#,##0.00 ;(#,##0.00)"},40:{f:"#,##0.00 ;[Red](#,##0.00)"},45:{f:"mm:ss"},46:{f:"[h]:mm:ss"},47:{f:"mmss.0"},48:{f:"##0.0E+0"},49:{f:"@"},50:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},51:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},52:{"zh-tw":'上午/下午 hh"時"mm"分"',"zh-cn":'yyyy"年"m"月"',"ja-jp":'yyyy"年"m"月"',"ko-kr":"yyyy-mm-dd"},53:{"zh-tw":'上午/下午 hh"時"mm"分"ss"秒"',"zh-cn":'m"月"d"日"',"ja-jp":'m"月"d"日"',"ko-kr":"yyyy-mm-dd"},54:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},55:{"zh-tw":'上午/下午 hh"時"mm"分"',"zh-cn":'上午/下午 h"时"mm"分"',"ja-jp":'yyyy"年"m"月"',"ko-kr":"yyyy-mm-dd"},56:{"zh-tw":'上午/下午 hh"時"mm"分"ss"秒"',"zh-cn":'上午/下午 h"时"mm"分"ss"秒"',"ja-jp":'m"月"d"日"',"ko-kr":"yyyy-mm-dd"},57:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},58:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},59:{"th-th":"t0"},60:{"th-th":"t0.00"},61:{"th-th":"t#,##0"},62:{"th-th":"t#,##0.00"},67:{"th-th":"t0%"},68:{"th-th":"t0.00%"},69:{"th-th":"t# ?/?"},70:{"th-th":"t# ??/??"},81:{"th-th":"d/m/bb"}}},{}],31:[function(e,t,r){t.exports={OfficeDocument:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument",Worksheet:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet",CalcChain:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/calcChain",SharedStrings:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings",Styles:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles",Theme:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme",Hyperlink:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",Image:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",CoreProperties:"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties",ExtenderProperties:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties",Comments:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments",VmlDrawing:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing",Table:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/table"}},{}],32:[function(e,t,r){const n=e("../../utils/parse-sax"),i=e("../../utils/xml-stream");class s{prepare(){}render(){}parseOpen(e){}parseText(e){}parseClose(e){}reconcile(e,t){}reset(){this.model=null,this.map&&Object.values(this.map).forEach((e=>{e instanceof s?e.reset():e.xform&&e.xform.reset()}))}mergeModel(e){this.model=Object.assign(this.model||{},e)}async parse(e){for await(const t of e)for(const{eventType:e,value:r}of t)if("opentag"===e)this.parseOpen(r);else if("text"===e)this.parseText(r);else if("closetag"===e&&!this.parseClose(r.name))return this.model;return this.model}async parseStream(e){return this.parse(n(e))}get xml(){return this.toXml(this.model)}toXml(e){const t=new i;return this.render(t,e),t.xml}static toAttribute(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(void 0===e){if(r)return t}else if(r||e!==t)return e.toString()}static toStringAttribute(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return s.toAttribute(e,t,r)}static toStringValue(e,t){return void 0===e?t:e}static toBoolAttribute(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(void 0===e){if(r)return t}else if(r||e!==t)return e?"1":"0"}static toBoolValue(e,t){return void 0===e?t:"1"===e}static toIntAttribute(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return s.toAttribute(e,t,r)}static toIntValue(e,t){return void 0===e?t:parseInt(e,10)}static toFloatAttribute(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return s.toAttribute(e,t,r)}static toFloatValue(e,t){return void 0===e?t:parseFloat(e)}}t.exports=s},{"../../utils/parse-sax":22,"../../utils/xml-stream":28}],33:[function(e,t,r){const n=e("../base-xform"),i=e("../../../utils/col-cache");function s(e){try{return i.decodeEx(e),!0}catch(t){return!1}}function o(e){const t=[];let r=!1,n="";return e.split(",").forEach((e=>{if(!e)return;const i=(e.match(/'/g)||[]).length;if(!i)return void(r?n+=e+",":s(e)&&t.push(e));const o=i%2==0;!r&&o&&s(e)?t.push(e):r&&!o?(r=!1,s(n+e)&&t.push(n+e),n=""):(r=!0,n+=e+",")})),t}t.exports=class extends n{render(e,t){e.openNode("definedName",{name:t.name,localSheetId:t.localSheetId}),e.writeText(t.ranges.join(",")),e.closeNode()}parseOpen(e){return"definedName"===e.name&&(this._parsedName=e.attributes.name,this._parsedLocalSheetId=e.attributes.localSheetId,this._parsedText=[],!0)}parseText(e){this._parsedText.push(e)}parseClose(){return this.model={name:this._parsedName,ranges:o(this._parsedText.join(""))},void 0!==this._parsedLocalSheetId&&(this.model.localSheetId=parseInt(this._parsedLocalSheetId,10)),!1}}},{"../../../utils/col-cache":19,"../base-xform":32}],34:[function(e,t,r){const n=e("../../../utils/utils"),i=e("../base-xform");t.exports=class extends i{render(e,t){e.leafNode("sheet",{sheetId:t.id,name:t.name,state:t.state,"r:id":t.rId})}parseOpen(e){return"sheet"===e.name&&(this.model={name:n.xmlDecode(e.attributes.name),id:parseInt(e.attributes.sheetId,10),state:e.attributes.state,rId:e.attributes["r:id"]},!0)}parseText(){}parseClose(){return!1}}},{"../../../utils/utils":27,"../base-xform":32}],35:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{render(e,t){e.leafNode("calcPr",{calcId:171027,fullCalcOnLoad:t.fullCalcOnLoad?1:void 0})}parseOpen(e){return"calcPr"===e.name&&(this.model={},!0)}parseText(){}parseClose(){return!1}}},{"../base-xform":32}],36:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{render(e,t){e.leafNode("workbookPr",{date1904:t.date1904?1:void 0,defaultThemeVersion:164011,filterPrivacy:1})}parseOpen(e){return"workbookPr"===e.name&&(this.model={date1904:"1"===e.attributes.date1904},!0)}parseText(){}parseClose(){return!1}}},{"../base-xform":32}],37:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{render(e,t){const r={xWindow:t.x||0,yWindow:t.y||0,windowWidth:t.width||12e3,windowHeight:t.height||24e3,firstSheet:t.firstSheet,activeTab:t.activeTab};t.visibility&&"visible"!==t.visibility&&(r.visibility=t.visibility),e.leafNode("workbookView",r)}parseOpen(e){if("workbookView"===e.name){const t=this.model={},r=function(e,r,n){const i=void 0!==r?t[e]=r:n;void 0!==i&&(t[e]=i)},n=function(e,r,n){const i=void 0!==r?t[e]=parseInt(r,10):n;void 0!==i&&(t[e]=i)};return n("x",e.attributes.xWindow,0),n("y",e.attributes.yWindow,0),n("width",e.attributes.windowWidth,25e3),n("height",e.attributes.windowHeight,1e4),r("visibility",e.attributes.visibility,"visible"),n("activeTab",e.attributes.activeTab,void 0),n("firstSheet",e.attributes.firstSheet,void 0),!0}return!1}parseText(){}parseClose(){return!1}}},{"../base-xform":32}],38:[function(e,t,r){const n=e("../../../utils/under-dash"),i=e("../../../utils/col-cache"),s=e("../../../utils/xml-stream"),o=e("../base-xform"),a=e("../static-xform"),l=e("../list-xform"),c=e("./defined-name-xform"),h=e("./sheet-xform"),u=e("./workbook-view-xform"),f=e("./workbook-properties-xform"),d=e("./workbook-calc-properties-xform");class p extends o{constructor(){super(),this.map={fileVersion:p.STATIC_XFORMS.fileVersion,workbookPr:new f,bookViews:new l({tag:"bookViews",count:!1,childXform:new u}),sheets:new l({tag:"sheets",count:!1,childXform:new h}),definedNames:new l({tag:"definedNames",count:!1,childXform:new c}),calcPr:new d}}prepare(e){e.sheets=e.worksheets;const t=[];let r=0;e.sheets.forEach((e=>{if(e.pageSetup&&e.pageSetup.printArea&&e.pageSetup.printArea.split("&&").forEach((n=>{const i=n.split(":"),s={name:"_xlnm.Print_Area",ranges:[`'${e.name}'!$${i[0]}:$${i[1]}`],localSheetId:r};t.push(s)})),e.pageSetup&&(e.pageSetup.printTitlesRow||e.pageSetup.printTitlesColumn)){const n=[];if(e.pageSetup.printTitlesColumn){const t=e.pageSetup.printTitlesColumn.split(":");n.push(`'${e.name}'!$${t[0]}:$${t[1]}`)}if(e.pageSetup.printTitlesRow){const t=e.pageSetup.printTitlesRow.split(":");n.push(`'${e.name}'!$${t[0]}:$${t[1]}`)}const i={name:"_xlnm.Print_Titles",ranges:n,localSheetId:r};t.push(i)}r++})),t.length&&(e.definedNames=e.definedNames.concat(t)),(e.media||[]).forEach(((e,t)=>{e.name=e.type+(t+1)}))}render(e,t){e.openXml(s.StdDocAttributes),e.openNode("workbook",p.WORKBOOK_ATTRIBUTES),this.map.fileVersion.render(e),this.map.workbookPr.render(e,t.properties),this.map.bookViews.render(e,t.views),this.map.sheets.render(e,t.sheets),this.map.definedNames.render(e,t.definedNames),this.map.calcPr.render(e,t.calcProperties),e.closeNode()}parseOpen(e){return this.parser?(this.parser.parseOpen(e),!0):("workbook"===e.name||(this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e)),!0)}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){return this.parser?(this.parser.parseClose(e)||(this.parser=void 0),!0):"workbook"!==e||(this.model={sheets:this.map.sheets.model,properties:this.map.workbookPr.model||{},views:this.map.bookViews.model,calcProperties:{}},this.map.definedNames.model&&(this.model.definedNames=this.map.definedNames.model),!1)}reconcile(e){const t=(e.workbookRels||[]).reduce(((e,t)=>(e[t.Id]=t,e)),{}),r=[];let s,o=0;(e.sheets||[]).forEach((n=>{const i=t[n.rId];i&&(s=e.worksheetHash["xl/"+i.Target.replace(/^(\s|\/xl\/)+/,"")],s&&(s.name=n.name,s.id=n.id,s.state=n.state,r[o++]=s))}));const a=[];n.each(e.definedNames,(e=>{if("_xlnm.Print_Area"===e.name){if(s=r[e.localSheetId],s){s.pageSetup||(s.pageSetup={});const t=i.decodeEx(e.ranges[0]);s.pageSetup.printArea=s.pageSetup.printArea?`${s.pageSetup.printArea}&&${t.dimensions}`:t.dimensions}}else if("_xlnm.Print_Titles"===e.name){if(s=r[e.localSheetId],s){s.pageSetup||(s.pageSetup={});const t=e.ranges.join(","),r=/\$/g,n=/\$\d+:\$\d+/,i=t.match(n);if(i&&i.length){const e=i[0];s.pageSetup.printTitlesRow=e.replace(r,"")}const o=/\$[A-Z]+:\$[A-Z]+/,a=t.match(o);if(a&&a.length){const e=a[0];s.pageSetup.printTitlesColumn=e.replace(r,"")}}}else a.push(e)})),e.definedNames=a,e.media.forEach(((e,t)=>{e.index=t}))}}p.WORKBOOK_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x15","xmlns:x15":"http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"},p.STATIC_XFORMS={fileVersion:new a({tag:"fileVersion",$:{appName:"xl",lastEdited:5,lowestEdited:5,rupBuild:9303}})},t.exports=p},{"../../../utils/col-cache":19,"../../../utils/under-dash":26,"../../../utils/xml-stream":28,"../base-xform":32,"../list-xform":71,"../static-xform":120,"./defined-name-xform":33,"./sheet-xform":34,"./workbook-calc-properties-xform":35,"./workbook-properties-xform":36,"./workbook-view-xform":37}],39:[function(e,t,r){const n=e("../strings/rich-text-xform"),i=e("../../../utils/utils"),s=e("../base-xform"),o=t.exports=function(e){this.model=e};i.inherits(o,s,{get tag(){return"r"},get richTextXform(){return this._richTextXform||(this._richTextXform=new n),this._richTextXform},render(e,t){t=t||this.model,e.openNode("comment",{ref:t.ref,authorId:0}),e.openNode("text"),t&&t.note&&t.note.texts&&t.note.texts.forEach((t=>{this.richTextXform.render(e,t)})),e.closeNode(),e.closeNode()},parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case"comment":return this.model={type:"note",note:{texts:[]},...e.attributes},!0;case"r":return this.parser=this.richTextXform,this.parser.parseOpen(e),!0;default:return!1}},parseText(e){this.parser&&this.parser.parseText(e)},parseClose(e){switch(e){case"comment":return!1;case"r":return this.model.note.texts.push(this.parser.model),this.parser=void 0,!0;default:return this.parser&&this.parser.parseClose(e),!0}}})},{"../../../utils/utils":27,"../base-xform":32,"../strings/rich-text-xform":122}],40:[function(e,t,r){const n=e("../../../utils/xml-stream"),i=e("../../../utils/utils"),s=e("../base-xform"),o=e("./comment-xform"),a=t.exports=function(){this.map={comment:new o}};i.inherits(a,s,{COMMENTS_ATTRIBUTES:{xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main"}},{render(e,t){t=t||this.model,e.openXml(n.StdDocAttributes),e.openNode("comments",a.COMMENTS_ATTRIBUTES),e.openNode("authors"),e.leafNode("author",null,"Author"),e.closeNode(),e.openNode("commentList"),t.comments.forEach((t=>{this.map.comment.render(e,t)})),e.closeNode(),e.closeNode()},parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case"commentList":return this.model={comments:[]},!0;case"comment":return this.parser=this.map.comment,this.parser.parseOpen(e),!0;default:return!1}},parseText(e){this.parser&&this.parser.parseText(e)},parseClose(e){switch(e){case"commentList":return!1;case"comment":return this.model.comments.push(this.parser.model),this.parser=void 0,!0;default:return this.parser&&this.parser.parseClose(e),!0}}})},{"../../../utils/utils":27,"../../../utils/xml-stream":28,"../base-xform":32,"./comment-xform":39}],41:[function(e,t,r){const n=e("../../base-xform");t.exports=class extends n{constructor(e){super(),this._model=e}get tag(){return this._model&&this._model.tag}render(e,t,r){(t===r[2]||"x:SizeWithCells"===this.tag&&t===r[1])&&e.leafNode(this.tag)}parseOpen(e){return e.name===this.tag&&(this.model={},this.model[this.tag]=!0,!0)}parseText(){}parseClose(){return!1}}},{"../../base-xform":32}],42:[function(e,t,r){const n=e("../../base-xform");t.exports=class extends n{constructor(e){super(),this._model=e}get tag(){return this._model&&this._model.tag}render(e,t){e.leafNode(this.tag,null,t)}parseOpen(e){return e.name===this.tag&&(this.text="",!0)}parseText(e){this.text=e}parseClose(){return!1}}},{"../../base-xform":32}],43:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{get tag(){return"x:Anchor"}getAnchorRect(e){const t=Math.floor(e.left),r=Math.floor(68*(e.left-t)),n=Math.floor(e.top),i=Math.floor(18*(e.top-n)),s=Math.floor(e.right),o=Math.floor(68*(e.right-s)),a=Math.floor(e.bottom);return[t,r,n,i,s,o,a,Math.floor(18*(e.bottom-a))]}getDefaultRect(e){const t=e.col,r=Math.max(e.row-2,0);return[t,6,r,14,t+2,2,r+4,16]}render(e,t){const r=t.anchor?this.getAnchorRect(t.anchor):this.getDefaultRect(t.refAddress);e.leafNode("x:Anchor",null,r.join(", "))}parseOpen(e){return e.name===this.tag&&(this.text="",!0)}parseText(e){this.text=e}parseClose(){return!1}}},{"../base-xform":32}],44:[function(e,t,r){const n=e("../base-xform"),i=e("./vml-anchor-xform"),s=e("./style/vml-protection-xform"),o=e("./style/vml-position-xform"),a=["twoCells","oneCells","absolute"];t.exports=class extends n{constructor(){super(),this.map={"x:Anchor":new i,"x:Locked":new s({tag:"x:Locked"}),"x:LockText":new s({tag:"x:LockText"}),"x:SizeWithCells":new o({tag:"x:SizeWithCells"}),"x:MoveWithCells":new o({tag:"x:MoveWithCells"})}}get tag(){return"x:ClientData"}render(e,t){const{protection:r,editAs:n}=t.note;e.openNode(this.tag,{ObjectType:"Note"}),this.map["x:MoveWithCells"].render(e,n,a),this.map["x:SizeWithCells"].render(e,n,a),this.map["x:Anchor"].render(e,t),this.map["x:Locked"].render(e,r.locked),e.leafNode("x:AutoFill",null,"False"),this.map["x:LockText"].render(e,r.lockText),e.leafNode("x:Row",null,t.refAddress.row-1),e.leafNode("x:Column",null,t.refAddress.col-1),e.closeNode()}parseOpen(e){return e.name===this.tag?(this.reset(),this.model={anchor:[],protection:{},editAs:""}):(this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e)),!0}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){return this.parser?(this.parser.parseClose(e)||(this.parser=void 0),!0):e!==this.tag||(this.normalizeModel(),!1)}normalizeModel(){const e=Object.assign({},this.map["x:MoveWithCells"].model,this.map["x:SizeWithCells"].model),t=Object.keys(e).length;this.model.editAs=a[t],this.model.anchor=this.map["x:Anchor"].text,this.model.protection.locked=this.map["x:Locked"].text,this.model.protection.lockText=this.map["x:LockText"].text}}},{"../base-xform":32,"./style/vml-position-xform":41,"./style/vml-protection-xform":42,"./vml-anchor-xform":43}],45:[function(e,t,r){const n=e("../../../utils/xml-stream"),i=e("../base-xform"),s=e("./vml-shape-xform");class o extends i{constructor(){super(),this.map={"v:shape":new s}}get tag(){return"xml"}render(e,t){e.openXml(n.StdDocAttributes),e.openNode(this.tag,o.DRAWING_ATTRIBUTES),e.openNode("o:shapelayout",{"v:ext":"edit"}),e.leafNode("o:idmap",{"v:ext":"edit",data:1}),e.closeNode(),e.openNode("v:shapetype",{id:"_x0000_t202",coordsize:"21600,21600","o:spt":202,path:"m,l,21600r21600,l21600,xe"}),e.leafNode("v:stroke",{joinstyle:"miter"}),e.leafNode("v:path",{gradientshapeok:"t","o:connecttype":"rect"}),e.closeNode(),t.comments.forEach(((t,r)=>{this.map["v:shape"].render(e,t,r)})),e.closeNode()}parseOpen(e){return this.parser?(this.parser.parseOpen(e),!0):(e.name===this.tag?(this.reset(),this.model={comments:[]}):(this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e)),!0)}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){return this.parser?(this.parser.parseClose(e)||(this.model.comments.push(this.parser.model),this.parser=void 0),!0):e!==this.tag}reconcile(e,t){e.anchors.forEach((e=>{e.br?this.map["xdr:twoCellAnchor"].reconcile(e,t):this.map["xdr:oneCellAnchor"].reconcile(e,t)}))}}o.DRAWING_ATTRIBUTES={"xmlns:v":"urn:schemas-microsoft-com:vml","xmlns:o":"urn:schemas-microsoft-com:office:office","xmlns:x":"urn:schemas-microsoft-com:office:excel"},t.exports=o},{"../../../utils/xml-stream":28,"../base-xform":32,"./vml-shape-xform":46}],46:[function(e,t,r){const n=e("../base-xform"),i=e("./vml-textbox-xform"),s=e("./vml-client-data-xform");class o extends n{constructor(){super(),this.map={"v:textbox":new i,"x:ClientData":new s}}get tag(){return"v:shape"}render(e,t,r){e.openNode("v:shape",o.V_SHAPE_ATTRIBUTES(t,r)),e.leafNode("v:fill",{color2:"infoBackground [80]"}),e.leafNode("v:shadow",{color:"none [81]",obscured:"t"}),e.leafNode("v:path",{"o:connecttype":"none"}),this.map["v:textbox"].render(e,t),this.map["x:ClientData"].render(e,t),e.closeNode()}parseOpen(e){return this.parser?(this.parser.parseOpen(e),!0):(e.name===this.tag?(this.reset(),this.model={margins:{insetmode:e.attributes["o:insetmode"]},anchor:"",editAs:"",protection:{}}):(this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e)),!0)}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){return this.parser?(this.parser.parseClose(e)||(this.parser=void 0),!0):e!==this.tag||(this.model.margins.inset=this.map["v:textbox"].model&&this.map["v:textbox"].model.inset,this.model.protection=this.map["x:ClientData"].model&&this.map["x:ClientData"].model.protection,this.model.anchor=this.map["x:ClientData"].model&&this.map["x:ClientData"].model.anchor,this.model.editAs=this.map["x:ClientData"].model&&this.map["x:ClientData"].model.editAs,!1)}}o.V_SHAPE_ATTRIBUTES=(e,t)=>({id:"_x0000_s"+(1025+t),type:"#_x0000_t202",style:"position:absolute; margin-left:105.3pt;margin-top:10.5pt;width:97.8pt;height:59.1pt;z-index:1;visibility:hidden",fillcolor:"infoBackground [80]",strokecolor:"none [81]","o:insetmode":e.note.margins&&e.note.margins.insetmode}),t.exports=o},{"../base-xform":32,"./vml-client-data-xform":44,"./vml-textbox-xform":47}],47:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{get tag(){return"v:textbox"}conversionUnit(e,t,r){return`${parseFloat(e)*t.toFixed(2)}${r}`}reverseConversionUnit(e){return(e||"").split(",").map((e=>Number(parseFloat(this.conversionUnit(parseFloat(e),.1,"")).toFixed(2))))}render(e,t){const r={style:"mso-direction-alt:auto"};if(t&&t.note){let{inset:e}=t.note&&t.note.margins;Array.isArray(e)&&(e=e.map((e=>this.conversionUnit(e,10,"mm"))).join(",")),e&&(r.inset=e)}e.openNode("v:textbox",r),e.leafNode("div",{style:"text-align:left"}),e.closeNode()}parseOpen(e){return e.name!==this.tag||(this.model={inset:this.reverseConversionUnit(e.attributes.inset)},!0)}parseText(){}parseClose(e){return e!==this.tag}}},{"../base-xform":32}],48:[function(e,t,r){const n=e("./base-xform");t.exports=class extends n{createNewModel(e){return{}}parseOpen(e){return this.parser=this.parser||this.map[e.name],this.parser?(this.parser.parseOpen(e),!0):e.name===this.tag&&(this.model=this.createNewModel(e),!0)}parseText(e){this.parser&&this.parser.parseText(e)}onParserClose(e,t){this.model[e]=t.model}parseClose(e){return this.parser?(this.parser.parseClose(e)||(this.onParserClose(e,this.parser),this.parser=void 0),!0):e!==this.tag}}},{"./base-xform":32}],49:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{render(e,t){e.openNode("HeadingPairs"),e.openNode("vt:vector",{size:2,baseType:"variant"}),e.openNode("vt:variant"),e.leafNode("vt:lpstr",void 0,"Worksheets"),e.closeNode(),e.openNode("vt:variant"),e.leafNode("vt:i4",void 0,t.length),e.closeNode(),e.closeNode(),e.closeNode()}parseOpen(e){return"HeadingPairs"===e.name}parseText(){}parseClose(e){return"HeadingPairs"!==e}}},{"../base-xform":32}],50:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{render(e,t){e.openNode("TitlesOfParts"),e.openNode("vt:vector",{size:t.length,baseType:"lpstr"}),t.forEach((t=>{e.leafNode("vt:lpstr",void 0,t.name)})),e.closeNode(),e.closeNode()}parseOpen(e){return"TitlesOfParts"===e.name}parseText(){}parseClose(e){return"TitlesOfParts"!==e}}},{"../base-xform":32}],51:[function(e,t,r){const n=e("../../../utils/xml-stream"),i=e("../base-xform"),s=e("../simple/string-xform"),o=e("./app-heading-pairs-xform"),a=e("./app-titles-of-parts-xform");class l extends i{constructor(){super(),this.map={Company:new s({tag:"Company"}),Manager:new s({tag:"Manager"}),HeadingPairs:new o,TitleOfParts:new a}}render(e,t){e.openXml(n.StdDocAttributes),e.openNode("Properties",l.PROPERTY_ATTRIBUTES),e.leafNode("Application",void 0,"Microsoft Excel"),e.leafNode("DocSecurity",void 0,"0"),e.leafNode("ScaleCrop",void 0,"false"),this.map.HeadingPairs.render(e,t.worksheets),this.map.TitleOfParts.render(e,t.worksheets),this.map.Company.render(e,t.company||""),this.map.Manager.render(e,t.manager),e.leafNode("LinksUpToDate",void 0,"false"),e.leafNode("SharedDoc",void 0,"false"),e.leafNode("HyperlinksChanged",void 0,"false"),e.leafNode("AppVersion",void 0,"16.0300"),e.closeNode()}parseOpen(e){return this.parser?(this.parser.parseOpen(e),!0):"Properties"===e.name||(this.parser=this.map[e.name],!!this.parser&&(this.parser.parseOpen(e),!0))}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){return this.parser?(this.parser.parseClose(e)||(this.parser=void 0),!0):"Properties"!==e||(this.model={worksheets:this.map.TitleOfParts.model,company:this.map.Company.model,manager:this.map.Manager.model},!1)}}l.DateFormat=function(e){return e.toISOString().replace(/[.]\d{3,6}/,"")},l.DateAttrs={"xsi:type":"dcterms:W3CDTF"},l.PROPERTY_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties","xmlns:vt":"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"},t.exports=l},{"../../../utils/xml-stream":28,"../base-xform":32,"../simple/string-xform":119,"./app-heading-pairs-xform":49,"./app-titles-of-parts-xform":50}],52:[function(e,t,r){const n=e("../../../utils/xml-stream"),i=e("../base-xform");class s extends i{render(e,t){e.openXml(n.StdDocAttributes),e.openNode("Types",s.PROPERTY_ATTRIBUTES);const r={};(t.media||[]).forEach((t=>{if("image"===t.type){const n=t.extension;r[n]||(r[n]=!0,e.leafNode("Default",{Extension:n,ContentType:"image/"+n}))}})),e.leafNode("Default",{Extension:"rels",ContentType:"application/vnd.openxmlformats-package.relationships+xml"}),e.leafNode("Default",{Extension:"xml",ContentType:"application/xml"}),e.leafNode("Override",{PartName:"/xl/workbook.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"}),t.worksheets.forEach((t=>{const r=`/xl/worksheets/sheet${t.id}.xml`;e.leafNode("Override",{PartName:r,ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"})})),e.leafNode("Override",{PartName:"/xl/theme/theme1.xml",ContentType:"application/vnd.openxmlformats-officedocument.theme+xml"}),e.leafNode("Override",{PartName:"/xl/styles.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"}),t.sharedStrings&&t.sharedStrings.count&&e.leafNode("Override",{PartName:"/xl/sharedStrings.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"}),t.tables&&t.tables.forEach((t=>{e.leafNode("Override",{PartName:"/xl/tables/"+t.target,ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml"})})),t.drawings&&t.drawings.forEach((t=>{e.leafNode("Override",{PartName:`/xl/drawings/${t.name}.xml`,ContentType:"application/vnd.openxmlformats-officedocument.drawing+xml"})})),t.commentRefs&&(e.leafNode("Default",{Extension:"vml",ContentType:"application/vnd.openxmlformats-officedocument.vmlDrawing"}),t.commentRefs.forEach((t=>{let{commentName:r}=t;e.leafNode("Override",{PartName:`/xl/${r}.xml`,ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml"})}))),e.leafNode("Override",{PartName:"/docProps/core.xml",ContentType:"application/vnd.openxmlformats-package.core-properties+xml"}),e.leafNode("Override",{PartName:"/docProps/app.xml",ContentType:"application/vnd.openxmlformats-officedocument.extended-properties+xml"}),e.closeNode()}parseOpen(){return!1}parseText(){}parseClose(){return!1}}s.PROPERTY_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/package/2006/content-types"},t.exports=s},{"../../../utils/xml-stream":28,"../base-xform":32}],53:[function(e,t,r){const n=e("../../../utils/xml-stream"),i=e("../base-xform"),s=e("../simple/date-xform"),o=e("../simple/string-xform"),a=e("../simple/integer-xform");class l extends i{constructor(){super(),this.map={"dc:creator":new o({tag:"dc:creator"}),"dc:title":new o({tag:"dc:title"}),"dc:subject":new o({tag:"dc:subject"}),"dc:description":new o({tag:"dc:description"}),"dc:identifier":new o({tag:"dc:identifier"}),"dc:language":new o({tag:"dc:language"}),"cp:keywords":new o({tag:"cp:keywords"}),"cp:category":new o({tag:"cp:category"}),"cp:lastModifiedBy":new o({tag:"cp:lastModifiedBy"}),"cp:lastPrinted":new s({tag:"cp:lastPrinted",format:l.DateFormat}),"cp:revision":new a({tag:"cp:revision"}),"cp:version":new o({tag:"cp:version"}),"cp:contentStatus":new o({tag:"cp:contentStatus"}),"cp:contentType":new o({tag:"cp:contentType"}),"dcterms:created":new s({tag:"dcterms:created",attrs:l.DateAttrs,format:l.DateFormat}),"dcterms:modified":new s({tag:"dcterms:modified",attrs:l.DateAttrs,format:l.DateFormat})}}render(e,t){e.openXml(n.StdDocAttributes),e.openNode("cp:coreProperties",l.CORE_PROPERTY_ATTRIBUTES),this.map["dc:creator"].render(e,t.creator),this.map["dc:title"].render(e,t.title),this.map["dc:subject"].render(e,t.subject),this.map["dc:description"].render(e,t.description),this.map["dc:identifier"].render(e,t.identifier),this.map["dc:language"].render(e,t.language),this.map["cp:keywords"].render(e,t.keywords),this.map["cp:category"].render(e,t.category),this.map["cp:lastModifiedBy"].render(e,t.lastModifiedBy),this.map["cp:lastPrinted"].render(e,t.lastPrinted),this.map["cp:revision"].render(e,t.revision),this.map["cp:version"].render(e,t.version),this.map["cp:contentStatus"].render(e,t.contentStatus),this.map["cp:contentType"].render(e,t.contentType),this.map["dcterms:created"].render(e,t.created),this.map["dcterms:modified"].render(e,t.modified),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case"cp:coreProperties":case"coreProperties":return!0;default:if(this.parser=this.map[e.name],this.parser)return this.parser.parseOpen(e),!0;throw new Error("Unexpected xml node in parseOpen: "+JSON.stringify(e))}}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.parser=void 0),!0;switch(e){case"cp:coreProperties":case"coreProperties":return this.model={creator:this.map["dc:creator"].model,title:this.map["dc:title"].model,subject:this.map["dc:subject"].model,description:this.map["dc:description"].model,identifier:this.map["dc:identifier"].model,language:this.map["dc:language"].model,keywords:this.map["cp:keywords"].model,category:this.map["cp:category"].model,lastModifiedBy:this.map["cp:lastModifiedBy"].model,lastPrinted:this.map["cp:lastPrinted"].model,revision:this.map["cp:revision"].model,contentStatus:this.map["cp:contentStatus"].model,contentType:this.map["cp:contentType"].model,created:this.map["dcterms:created"].model,modified:this.map["dcterms:modified"].model},!1;default:throw new Error("Unexpected xml node in parseClose: "+e)}}}l.DateFormat=function(e){return e.toISOString().replace(/[.]\d{3}/,"")},l.DateAttrs={"xsi:type":"dcterms:W3CDTF"},l.CORE_PROPERTY_ATTRIBUTES={"xmlns:cp":"http://schemas.openxmlformats.org/package/2006/metadata/core-properties","xmlns:dc":"http://purl.org/dc/elements/1.1/","xmlns:dcterms":"http://purl.org/dc/terms/","xmlns:dcmitype":"http://purl.org/dc/dcmitype/","xmlns:xsi":"http://www.w3.org/2001/XMLSchema-instance"},t.exports=l},{"../../../utils/xml-stream":28,"../base-xform":32,"../simple/date-xform":117,"../simple/integer-xform":118,"../simple/string-xform":119}],54:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{render(e,t){e.leafNode("Relationship",t)}parseOpen(e){return"Relationship"===e.name&&(this.model=e.attributes,!0)}parseText(){}parseClose(){return!1}}},{"../base-xform":32}],55:[function(e,t,r){const n=e("../../../utils/xml-stream"),i=e("../base-xform"),s=e("./relationship-xform");class o extends i{constructor(){super(),this.map={Relationship:new s}}render(e,t){t=t||this._values,e.openXml(n.StdDocAttributes),e.openNode("Relationships",o.RELATIONSHIPS_ATTRIBUTES),t.forEach((t=>{this.map.Relationship.render(e,t)})),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;if("Relationships"===e.name)return this.model=[],!0;if(this.parser=this.map[e.name],this.parser)return this.parser.parseOpen(e),!0;throw new Error("Unexpected xml node in parseOpen: "+JSON.stringify(e))}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.model.push(this.parser.model),this.parser=void 0),!0;if("Relationships"===e)return!1;throw new Error("Unexpected xml node in parseClose: "+e)}}o.RELATIONSHIPS_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/package/2006/relationships"},t.exports=o},{"../../../utils/xml-stream":28,"../base-xform":32,"./relationship-xform":54}],56:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{parseOpen(e){return this.parser?(this.parser.parseOpen(e),!0):(e.name===this.tag?(this.reset(),this.model={range:{editAs:e.attributes.editAs||"oneCell"}}):(this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e)),!0)}parseText(e){this.parser&&this.parser.parseText(e)}reconcilePicture(e,t){if(e&&e.rId){const r=t.rels[e.rId].Target.match(/.*\/media\/(.+[.][a-zA-Z]{3,4})/);if(r){const e=r[1],n=t.mediaIndex[e];return t.media[n]}}}}},{"../base-xform":32}],57:[function(e,t,r){const n=e("../base-xform"),i=e("./blip-xform");t.exports=class extends n{constructor(){super(),this.map={"a:blip":new i}}get tag(){return"xdr:blipFill"}render(e,t){e.openNode(this.tag),this.map["a:blip"].render(e,t),e.openNode("a:stretch"),e.leafNode("a:fillRect"),e.closeNode(),e.closeNode()}parseOpen(e){return this.parser?(this.parser.parseOpen(e),!0):(e.name===this.tag?this.reset():(this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e)),!0)}parseText(){}parseClose(e){return this.parser?(this.parser.parseClose(e)||(this.parser=void 0),!0):e!==this.tag||(this.model=this.map["a:blip"].model,!1)}}},{"../base-xform":32,"./blip-xform":58}],58:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{get tag(){return"a:blip"}render(e,t){e.leafNode(this.tag,{"xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","r:embed":t.rId,cstate:"print"})}parseOpen(e){return e.name!==this.tag||(this.model={rId:e.attributes["r:embed"]},!0)}parseText(){}parseClose(e){return e!==this.tag}}},{"../base-xform":32}],59:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{get tag(){return"xdr:cNvPicPr"}render(e){e.openNode(this.tag),e.leafNode("a:picLocks",{noChangeAspect:"1"}),e.closeNode()}parseOpen(e){return e.name,this.tag,!0}parseText(){}parseClose(e){return e!==this.tag}}},{"../base-xform":32}],60:[function(e,t,r){const n=e("../base-xform"),i=e("./hlink-click-xform"),s=e("./ext-lst-xform");t.exports=class extends n{constructor(){super(),this.map={"a:hlinkClick":new i,"a:extLst":new s}}get tag(){return"xdr:cNvPr"}render(e,t){e.openNode(this.tag,{id:t.index,name:"Picture "+t.index}),this.map["a:hlinkClick"].render(e,t),this.map["a:extLst"].render(e,t),e.closeNode()}parseOpen(e){return this.parser?(this.parser.parseOpen(e),!0):(e.name===this.tag?this.reset():(this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e)),!0)}parseText(){}parseClose(e){return this.parser?(this.parser.parseClose(e)||(this.parser=void 0),!0):e!==this.tag||(this.model=this.map["a:hlinkClick"].model,!1)}}},{"../base-xform":32,"./ext-lst-xform":63,"./hlink-click-xform":65}],61:[function(e,t,r){const n=e("../base-xform"),i=e("../simple/integer-xform");t.exports=class extends n{constructor(e){super(),this.tag=e.tag,this.map={"xdr:col":new i({tag:"xdr:col",zero:!0}),"xdr:colOff":new i({tag:"xdr:colOff",zero:!0}),"xdr:row":new i({tag:"xdr:row",zero:!0}),"xdr:rowOff":new i({tag:"xdr:rowOff",zero:!0})}}render(e,t){e.openNode(this.tag),this.map["xdr:col"].render(e,t.nativeCol),this.map["xdr:colOff"].render(e,t.nativeColOff),this.map["xdr:row"].render(e,t.nativeRow),this.map["xdr:rowOff"].render(e,t.nativeRowOff),e.closeNode()}parseOpen(e){return this.parser?(this.parser.parseOpen(e),!0):(e.name===this.tag?this.reset():(this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e)),!0)}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){return this.parser?(this.parser.parseClose(e)||(this.parser=void 0),!0):e!==this.tag||(this.model={nativeCol:this.map["xdr:col"].model,nativeColOff:this.map["xdr:colOff"].model,nativeRow:this.map["xdr:row"].model,nativeRowOff:this.map["xdr:rowOff"].model},!1)}}},{"../base-xform":32,"../simple/integer-xform":118}],62:[function(e,t,r){const n=e("../../../utils/col-cache"),i=e("../../../utils/xml-stream"),s=e("../base-xform"),o=e("./two-cell-anchor-xform"),a=e("./one-cell-anchor-xform");class l extends s{constructor(){super(),this.map={"xdr:twoCellAnchor":new o,"xdr:oneCellAnchor":new a}}prepare(e){e.anchors.forEach(((e,t)=>{var r;e.anchorType=("string"==typeof(r=e).range?n.decode(r.range):r.range).br?"xdr:twoCellAnchor":"xdr:oneCellAnchor",this.map[e.anchorType].prepare(e,{index:t})}))}get tag(){return"xdr:wsDr"}render(e,t){e.openXml(i.StdDocAttributes),e.openNode(this.tag,l.DRAWING_ATTRIBUTES),t.anchors.forEach((t=>{this.map[t.anchorType].render(e,t)})),e.closeNode()}parseOpen(e){return this.parser?(this.parser.parseOpen(e),!0):(e.name===this.tag?(this.reset(),this.model={anchors:[]}):(this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e)),!0)}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){return this.parser?(this.parser.parseClose(e)||(this.model.anchors.push(this.parser.model),this.parser=void 0),!0):e!==this.tag}reconcile(e,t){e.anchors.forEach((e=>{e.br?this.map["xdr:twoCellAnchor"].reconcile(e,t):this.map["xdr:oneCellAnchor"].reconcile(e,t)}))}}l.DRAWING_ATTRIBUTES={"xmlns:xdr":"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing","xmlns:a":"http://schemas.openxmlformats.org/drawingml/2006/main"},t.exports=l},{"../../../utils/col-cache":19,"../../../utils/xml-stream":28,"../base-xform":32,"./one-cell-anchor-xform":67,"./two-cell-anchor-xform":70}],63:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{get tag(){return"a:extLst"}render(e){e.openNode(this.tag),e.openNode("a:ext",{uri:"{FF2B5EF4-FFF2-40B4-BE49-F238E27FC236}"}),e.leafNode("a16:creationId",{"xmlns:a16":"http://schemas.microsoft.com/office/drawing/2014/main",id:"{00000000-0008-0000-0000-000002000000}"}),e.closeNode(),e.closeNode()}parseOpen(e){return e.name,this.tag,!0}parseText(){}parseClose(e){return e!==this.tag}}},{"../base-xform":32}],64:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{constructor(e){super(),this.tag=e.tag,this.map={}}render(e,t){e.openNode(this.tag);const r=Math.floor(9525*t.width),n=Math.floor(9525*t.height);e.addAttribute("cx",r),e.addAttribute("cy",n),e.closeNode()}parseOpen(e){return e.name===this.tag&&(this.model={width:parseInt(e.attributes.cx||"0",10)/9525,height:parseInt(e.attributes.cy||"0",10)/9525},!0)}parseText(){}parseClose(){return!1}}},{"../base-xform":32}],65:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{get tag(){return"a:hlinkClick"}render(e,t){t.hyperlinks&&t.hyperlinks.rId&&e.leafNode(this.tag,{"xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","r:id":t.hyperlinks.rId,tooltip:t.hyperlinks.tooltip})}parseOpen(e){return e.name!==this.tag||(this.model={hyperlinks:{rId:e.attributes["r:id"],tooltip:e.attributes.tooltip}},!0)}parseText(){}parseClose(){return!1}}},{"../base-xform":32}],66:[function(e,t,r){const n=e("../base-xform"),i=e("./c-nv-pr-xform"),s=e("./c-nv-pic-pr-xform");t.exports=class extends n{constructor(){super(),this.map={"xdr:cNvPr":new i,"xdr:cNvPicPr":new s}}get tag(){return"xdr:nvPicPr"}render(e,t){e.openNode(this.tag),this.map["xdr:cNvPr"].render(e,t),this.map["xdr:cNvPicPr"].render(e,t),e.closeNode()}parseOpen(e){return this.parser?(this.parser.parseOpen(e),!0):(e.name===this.tag?this.reset():(this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e)),!0)}parseText(){}parseClose(e){return this.parser?(this.parser.parseClose(e)||(this.parser=void 0),!0):e!==this.tag||(this.model=this.map["xdr:cNvPr"].model,!1)}}},{"../base-xform":32,"./c-nv-pic-pr-xform":59,"./c-nv-pr-xform":60}],67:[function(e,t,r){const n=e("./base-cell-anchor-xform"),i=e("../static-xform"),s=e("./cell-position-xform"),o=e("./ext-xform"),a=e("./pic-xform");t.exports=class extends n{constructor(){super(),this.map={"xdr:from":new s({tag:"xdr:from"}),"xdr:ext":new o({tag:"xdr:ext"}),"xdr:pic":new a,"xdr:clientData":new i({tag:"xdr:clientData"})}}get tag(){return"xdr:oneCellAnchor"}prepare(e,t){this.map["xdr:pic"].prepare(e.picture,t)}render(e,t){e.openNode(this.tag,{editAs:t.range.editAs||"oneCell"}),this.map["xdr:from"].render(e,t.range.tl),this.map["xdr:ext"].render(e,t.range.ext),this.map["xdr:pic"].render(e,t.picture),this.map["xdr:clientData"].render(e,{}),e.closeNode()}parseClose(e){return this.parser?(this.parser.parseClose(e)||(this.parser=void 0),!0):e!==this.tag||(this.model.range.tl=this.map["xdr:from"].model,this.model.range.ext=this.map["xdr:ext"].model,this.model.picture=this.map["xdr:pic"].model,!1)}reconcile(e,t){e.medium=this.reconcilePicture(e.picture,t)}}},{"../static-xform":120,"./base-cell-anchor-xform":56,"./cell-position-xform":61,"./ext-xform":64,"./pic-xform":68}],68:[function(e,t,r){const n=e("../base-xform"),i=e("../static-xform"),s=e("./blip-fill-xform"),o=e("./nv-pic-pr-xform"),a=e("./sp-pr");t.exports=class extends n{constructor(){super(),this.map={"xdr:nvPicPr":new o,"xdr:blipFill":new s,"xdr:spPr":new i(a)}}get tag(){return"xdr:pic"}prepare(e,t){e.index=t.index+1}render(e,t){e.openNode(this.tag),this.map["xdr:nvPicPr"].render(e,t),this.map["xdr:blipFill"].render(e,t),this.map["xdr:spPr"].render(e,t),e.closeNode()}parseOpen(e){return this.parser?(this.parser.parseOpen(e),!0):(e.name===this.tag?this.reset():(this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e)),!0)}parseText(){}parseClose(e){return this.parser?(this.parser.parseClose(e)||(this.mergeModel(this.parser.model),this.parser=void 0),!0):e!==this.tag}}},{"../base-xform":32,"../static-xform":120,"./blip-fill-xform":57,"./nv-pic-pr-xform":66,"./sp-pr":69}],69:[function(e,t,r){t.exports={tag:"xdr:spPr",c:[{tag:"a:xfrm",c:[{tag:"a:off",$:{x:"0",y:"0"}},{tag:"a:ext",$:{cx:"0",cy:"0"}}]},{tag:"a:prstGeom",$:{prst:"rect"},c:[{tag:"a:avLst"}]}]}},{}],70:[function(e,t,r){const n=e("./base-cell-anchor-xform"),i=e("../static-xform"),s=e("./cell-position-xform"),o=e("./pic-xform");t.exports=class extends n{constructor(){super(),this.map={"xdr:from":new s({tag:"xdr:from"}),"xdr:to":new s({tag:"xdr:to"}),"xdr:pic":new o,"xdr:clientData":new i({tag:"xdr:clientData"})}}get tag(){return"xdr:twoCellAnchor"}prepare(e,t){this.map["xdr:pic"].prepare(e.picture,t)}render(e,t){e.openNode(this.tag,{editAs:t.range.editAs||"oneCell"}),this.map["xdr:from"].render(e,t.range.tl),this.map["xdr:to"].render(e,t.range.br),this.map["xdr:pic"].render(e,t.picture),this.map["xdr:clientData"].render(e,{}),e.closeNode()}parseClose(e){return this.parser?(this.parser.parseClose(e)||(this.parser=void 0),!0):e!==this.tag||(this.model.range.tl=this.map["xdr:from"].model,this.model.range.br=this.map["xdr:to"].model,this.model.picture=this.map["xdr:pic"].model,!1)}reconcile(e,t){e.medium=this.reconcilePicture(e.picture,t)}}},{"../static-xform":120,"./base-cell-anchor-xform":56,"./cell-position-xform":61,"./pic-xform":68}],71:[function(e,t,r){const n=e("./base-xform");t.exports=class extends n{constructor(e){super(),this.tag=e.tag,this.always=!!e.always,this.count=e.count,this.empty=e.empty,this.$count=e.$count||"count",this.$=e.$,this.childXform=e.childXform,this.maxItems=e.maxItems}prepare(e,t){const{childXform:r}=this;e&&e.forEach(((e,n)=>{t.index=n,r.prepare(e,t)}))}render(e,t){if(this.always||t&&t.length){e.openNode(this.tag,this.$),this.count&&e.addAttribute(this.$count,t&&t.length||0);const{childXform:r}=this;(t||[]).forEach(((t,n)=>{r.render(e,t,n)})),e.closeNode()}else this.empty&&e.leafNode(this.tag)}parseOpen(e){return this.parser?(this.parser.parseOpen(e),!0):e.name===this.tag?(this.model=[],!0):!!this.childXform.parseOpen(e)&&(this.parser=this.childXform,!0)}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser){if(!this.parser.parseClose(e)&&(this.model.push(this.parser.model),this.parser=void 0,this.maxItems&&this.model.length>this.maxItems))throw new Error(`Max ${this.childXform.tag} count (${this.maxItems}) exceeded`);return!0}return!1}reconcile(e,t){if(e){const{childXform:r}=this;e.forEach((e=>{r.reconcile(e,t)}))}}}},{"./base-xform":32}],72:[function(e,t,r){const n=e("../../../utils/col-cache"),i=e("../base-xform");t.exports=class extends i{get tag(){return"autoFilter"}render(e,t){if(t)if("string"==typeof t)e.leafNode("autoFilter",{ref:t});else{const r=function(e){return"string"==typeof e?e:n.getAddress(e.row,e.column).address},i=r(t.from),s=r(t.to);i&&s&&e.leafNode("autoFilter",{ref:`${i}:${s}`})}}parseOpen(e){"autoFilter"===e.name&&(this.model=e.attributes.ref)}}},{"../../../utils/col-cache":19,"../base-xform":32}],73:[function(e,t,r){const n=e("../../../utils/utils"),i=e("../base-xform"),s=e("../../../doc/range"),o=e("../../../doc/enums"),a=e("../strings/rich-text-xform");function l(e){if(null==e)return o.ValueType.Null;if(e instanceof String||"string"==typeof e)return o.ValueType.String;if("number"==typeof e)return o.ValueType.Number;if("boolean"==typeof e)return o.ValueType.Boolean;if(e instanceof Date)return o.ValueType.Date;if(e.text&&e.hyperlink)return o.ValueType.Hyperlink;if(e.formula)return o.ValueType.Formula;if(e.error)return o.ValueType.Error;throw new Error("I could not understand type of value")}t.exports=class extends i{constructor(){super(),this.richTextXForm=new a}get tag(){return"c"}prepare(e,t){const r=t.styles.addStyleModel(e.style||{},(n=e).type===o.ValueType.Formula?l(n.result):n.type);var n;switch(r&&(e.styleId=r),e.comment&&t.comments.push({...e.comment,ref:e.address}),e.type){case o.ValueType.String:case o.ValueType.RichText:t.sharedStrings&&(e.ssId=t.sharedStrings.add(e.value));break;case o.ValueType.Date:t.date1904&&(e.date1904=!0);break;case o.ValueType.Hyperlink:t.sharedStrings&&void 0!==e.text&&null!==e.text&&(e.ssId=t.sharedStrings.add(e.text)),t.hyperlinks.push({address:e.address,target:e.hyperlink,tooltip:e.tooltip});break;case o.ValueType.Merge:t.merges.add(e);break;case o.ValueType.Formula:if(t.date1904&&(e.date1904=!0),"shared"===e.shareType&&(e.si=t.siFormulae++),e.formula)t.formulae[e.address]=e;else if(e.sharedFormula){const r=t.formulae[e.sharedFormula];if(!r)throw new Error("Shared Formula master must exist above and or left of clone for cell "+e.address);void 0===r.si?(r.shareType="shared",r.si=t.siFormulae++,r.range=new s(r.address,e.address)):r.range&&r.range.expandToAddress(e.address),e.si=r.si}}}renderFormula(e,t){let r=null;switch(t.shareType){case"shared":r={t:"shared",ref:t.ref||t.range.range,si:t.si};break;case"array":r={t:"array",ref:t.ref};break;default:void 0!==t.si&&(r={t:"shared",si:t.si})}switch(l(t.result)){case o.ValueType.Null:e.leafNode("f",r,t.formula);break;case o.ValueType.String:e.addAttribute("t","str"),e.leafNode("f",r,t.formula),e.leafNode("v",null,t.result);break;case o.ValueType.Number:e.leafNode("f",r,t.formula),e.leafNode("v",null,t.result);break;case o.ValueType.Boolean:e.addAttribute("t","b"),e.leafNode("f",r,t.formula),e.leafNode("v",null,t.result?1:0);break;case o.ValueType.Error:e.addAttribute("t","e"),e.leafNode("f",r,t.formula),e.leafNode("v",null,t.result.error);break;case o.ValueType.Date:e.leafNode("f",r,t.formula),e.leafNode("v",null,n.dateToExcel(t.result,t.date1904));break;default:throw new Error("I could not understand type of value")}}render(e,t){if(t.type!==o.ValueType.Null||t.styleId){switch(e.openNode("c"),e.addAttribute("r",t.address),t.styleId&&e.addAttribute("s",t.styleId),t.type){case o.ValueType.Null:break;case o.ValueType.Number:e.leafNode("v",null,t.value);break;case o.ValueType.Boolean:e.addAttribute("t","b"),e.leafNode("v",null,t.value?"1":"0");break;case o.ValueType.Error:e.addAttribute("t","e"),e.leafNode("v",null,t.value.error);break;case o.ValueType.String:case o.ValueType.RichText:void 0!==t.ssId?(e.addAttribute("t","s"),e.leafNode("v",null,t.ssId)):t.value&&t.value.richText?(e.addAttribute("t","inlineStr"),e.openNode("is"),t.value.richText.forEach((t=>{this.richTextXForm.render(e,t)})),e.closeNode("is")):(e.addAttribute("t","str"),e.leafNode("v",null,t.value));break;case o.ValueType.Date:e.leafNode("v",null,n.dateToExcel(t.value,t.date1904));break;case o.ValueType.Hyperlink:void 0!==t.ssId?(e.addAttribute("t","s"),e.leafNode("v",null,t.ssId)):(e.addAttribute("t","str"),e.leafNode("v",null,t.text));break;case o.ValueType.Formula:this.renderFormula(e,t);case o.ValueType.Merge:}e.closeNode()}}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case"c":return this.model={address:e.attributes.r},this.t=e.attributes.t,e.attributes.s&&(this.model.styleId=parseInt(e.attributes.s,10)),!0;case"f":return this.currentNode="f",this.model.si=e.attributes.si,this.model.shareType=e.attributes.t,this.model.ref=e.attributes.ref,!0;case"v":return this.currentNode="v",!0;case"t":return this.currentNode="t",!0;case"r":return this.parser=this.richTextXForm,this.parser.parseOpen(e),!0;default:return!1}}parseText(e){if(this.parser)this.parser.parseText(e);else switch(this.currentNode){case"f":this.model.formula=this.model.formula?this.model.formula+e:e;break;case"v":case"t":this.model.value&&this.model.value.richText?this.model.value.richText.text=this.model.value.richText.text?this.model.value.richText.text+e:e:this.model.value=this.model.value?this.model.value+e:e}}parseClose(e){switch(e){case"c":{const{model:e}=this;if(e.formula||e.shareType)e.type=o.ValueType.Formula,e.value&&("str"===this.t?e.result=n.xmlDecode(e.value):"b"===this.t?e.result=0!==parseInt(e.value,10):"e"===this.t?e.result={error:e.value}:e.result=parseFloat(e.value),e.value=void 0);else if(void 0!==e.value)switch(this.t){case"s":e.type=o.ValueType.String,e.value=parseInt(e.value,10);break;case"str":e.type=o.ValueType.String,e.value=n.xmlDecode(e.value);break;case"inlineStr":e.type=o.ValueType.String;break;case"b":e.type=o.ValueType.Boolean,e.value=0!==parseInt(e.value,10);break;case"e":e.type=o.ValueType.Error,e.value={error:e.value};break;default:e.type=o.ValueType.Number,e.value=parseFloat(e.value)}else e.styleId?e.type=o.ValueType.Null:e.type=o.ValueType.Merge;return!1}case"f":case"v":case"is":return this.currentNode=void 0,!0;case"t":return this.parser?(this.parser.parseClose(e),!0):(this.currentNode=void 0,!0);case"r":return this.model.value=this.model.value||{},this.model.value.richText=this.model.value.richText||[],this.model.value.richText.push(this.parser.model),this.parser=void 0,this.currentNode=void 0,!0;default:return!!this.parser&&(this.parser.parseClose(e),!0)}}reconcile(e,t){const r=e.styleId&&t.styles&&t.styles.getStyleModel(e.styleId);switch(r&&(e.style=r),void 0!==e.styleId&&(e.styleId=void 0),e.type){case o.ValueType.String:"number"==typeof e.value&&t.sharedStrings&&(e.value=t.sharedStrings.getString(e.value)),e.value.richText&&(e.type=o.ValueType.RichText);break;case o.ValueType.Number:r&&n.isDateFmt(r.numFmt)&&(e.type=o.ValueType.Date,e.value=n.excelToDate(e.value,t.date1904));break;case o.ValueType.Formula:void 0!==e.result&&r&&n.isDateFmt(r.numFmt)&&(e.result=n.excelToDate(e.result,t.date1904)),"shared"===e.shareType&&(e.ref?t.formulae[e.si]=e.address:(e.sharedFormula=t.formulae[e.si],delete e.shareType),delete e.si)}const i=t.hyperlinkMap[e.address];i&&(e.type===o.ValueType.Formula?(e.text=e.result,e.result=void 0):(e.text=e.value,e.value=void 0),e.type=o.ValueType.Hyperlink,e.hyperlink=i);const s=t.commentsMap&&t.commentsMap[e.address];s&&(e.comment=s)}}},{"../../../doc/enums":7,"../../../doc/range":10,"../../../utils/utils":27,"../base-xform":32,"../strings/rich-text-xform":122}],74:[function(e,t,r){const n=e("../../base-xform");t.exports=class extends n{get tag(){return"x14:cfIcon"}render(e,t){e.leafNode(this.tag,{iconSet:t.iconSet,iconId:t.iconId})}parseOpen(e){let{attributes:t}=e;this.model={iconSet:t.iconSet,iconId:n.toIntValue(t.iconId)}}parseClose(e){return e!==this.tag}}},{"../../base-xform":32}],75:[function(e,t,r){const{v4:n}=e("uuid"),i=e("../../base-xform"),s=e("../../composite-xform"),o=e("./databar-ext-xform"),a=e("./icon-set-ext-xform"),l={"3Triangles":!0,"3Stars":!0,"5Boxes":!0};class c extends s{constructor(){super(),this.map={"x14:dataBar":this.databarXform=new o,"x14:iconSet":this.iconSetXform=new a}}get tag(){return"x14:cfRule"}static isExt(e){return"dataBar"===e.type?o.isExt(e):!("iconSet"!==e.type||!e.custom&&!l[e.iconSet])}prepare(e){c.isExt(e)&&(e.x14Id=`{${n()}}`.toUpperCase())}render(e,t){if(c.isExt(t))switch(t.type){case"dataBar":this.renderDataBar(e,t);break;case"iconSet":this.renderIconSet(e,t)}}renderDataBar(e,t){e.openNode(this.tag,{type:"dataBar",id:t.x14Id}),this.databarXform.render(e,t),e.closeNode()}renderIconSet(e,t){e.openNode(this.tag,{type:"iconSet",priority:t.priority,id:t.x14Id||`{${n()}}`}),this.iconSetXform.render(e,t),e.closeNode()}createNewModel(e){let{attributes:t}=e;return{type:t.type,x14Id:t.id,priority:i.toIntValue(t.priority)}}onParserClose(e,t){Object.assign(this.model,t.model)}}t.exports=c},{"../../base-xform":32,"../../composite-xform":48,"./databar-ext-xform":79,"./icon-set-ext-xform":81,uuid:528}],76:[function(e,t,r){const n=e("../../composite-xform"),i=e("./f-ext-xform");t.exports=class extends n{constructor(){super(),this.map={"xm:f":this.fExtXform=new i}}get tag(){return"x14:cfvo"}render(e,t){e.openNode(this.tag,{type:t.type}),void 0!==t.value&&this.fExtXform.render(e,t.value),e.closeNode()}createNewModel(e){return{type:e.attributes.type}}onParserClose(e,t){"xm:f"===e&&(this.model.value=t.model?parseFloat(t.model):0)}}},{"../../composite-xform":48,"./f-ext-xform":80}],77:[function(e,t,r){const n=e("../../composite-xform"),i=e("./sqref-ext-xform"),s=e("./cf-rule-ext-xform");t.exports=class extends n{constructor(){super(),this.map={"xm:sqref":this.sqRef=new i,"x14:cfRule":this.cfRule=new s}}get tag(){return"x14:conditionalFormatting"}prepare(e,t){e.rules.forEach((e=>{this.cfRule.prepare(e,t)}))}render(e,t){t.rules.some(s.isExt)&&(e.openNode(this.tag,{"xmlns:xm":"http://schemas.microsoft.com/office/excel/2006/main"}),t.rules.filter(s.isExt).forEach((t=>this.cfRule.render(e,t))),this.sqRef.render(e,t.ref),e.closeNode())}createNewModel(){return{rules:[]}}onParserClose(e,t){switch(e){case"xm:sqref":this.model.ref=t.model;break;case"x14:cfRule":this.model.rules.push(t.model)}}}},{"../../composite-xform":48,"./cf-rule-ext-xform":75,"./sqref-ext-xform":82}],78:[function(e,t,r){const n=e("../../composite-xform"),i=e("./cf-rule-ext-xform"),s=e("./conditional-formatting-ext-xform");t.exports=class extends n{constructor(){super(),this.map={"x14:conditionalFormatting":this.cfXform=new s}}get tag(){return"x14:conditionalFormattings"}hasContent(e){return void 0===e.hasExtContent&&(e.hasExtContent=e.some((e=>e.rules.some(i.isExt)))),e.hasExtContent}prepare(e,t){e.forEach((e=>{this.cfXform.prepare(e,t)}))}render(e,t){this.hasContent(t)&&(e.openNode(this.tag),t.forEach((t=>this.cfXform.render(e,t))),e.closeNode())}createNewModel(){return[]}onParserClose(e,t){this.model.push(t.model)}}},{"../../composite-xform":48,"./cf-rule-ext-xform":75,"./conditional-formatting-ext-xform":77}],79:[function(e,t,r){const n=e("../../base-xform"),i=e("../../composite-xform"),s=e("../../style/color-xform"),o=e("./cfvo-ext-xform");t.exports=class extends i{constructor(){super(),this.map={"x14:cfvo":this.cfvoXform=new o,"x14:borderColor":this.borderColorXform=new s("x14:borderColor"),"x14:negativeBorderColor":this.negativeBorderColorXform=new s("x14:negativeBorderColor"),"x14:negativeFillColor":this.negativeFillColorXform=new s("x14:negativeFillColor"),"x14:axisColor":this.axisColorXform=new s("x14:axisColor")}}static isExt(e){return!e.gradient}get tag(){return"x14:dataBar"}render(e,t){e.openNode(this.tag,{minLength:n.toIntAttribute(t.minLength,0,!0),maxLength:n.toIntAttribute(t.maxLength,100,!0),border:n.toBoolAttribute(t.border,!1),gradient:n.toBoolAttribute(t.gradient,!0),negativeBarColorSameAsPositive:n.toBoolAttribute(t.negativeBarColorSameAsPositive,!0),negativeBarBorderColorSameAsPositive:n.toBoolAttribute(t.negativeBarBorderColorSameAsPositive,!0),axisPosition:n.toAttribute(t.axisPosition,"auto"),direction:n.toAttribute(t.direction,"leftToRight")}),t.cfvo.forEach((t=>{this.cfvoXform.render(e,t)})),this.borderColorXform.render(e,t.borderColor),this.negativeBorderColorXform.render(e,t.negativeBorderColor),this.negativeFillColorXform.render(e,t.negativeFillColor),this.axisColorXform.render(e,t.axisColor),e.closeNode()}createNewModel(e){let{attributes:t}=e;return{cfvo:[],minLength:n.toIntValue(t.minLength,0),maxLength:n.toIntValue(t.maxLength,100),border:n.toBoolValue(t.border,!1),gradient:n.toBoolValue(t.gradient,!0),negativeBarColorSameAsPositive:n.toBoolValue(t.negativeBarColorSameAsPositive,!0),negativeBarBorderColorSameAsPositive:n.toBoolValue(t.negativeBarBorderColorSameAsPositive,!0),axisPosition:n.toStringValue(t.axisPosition,"auto"),direction:n.toStringValue(t.direction,"leftToRight")}}onParserClose(e,t){const[,r]=e.split(":");"cfvo"===r?this.model.cfvo.push(t.model):this.model[r]=t.model}}},{"../../base-xform":32,"../../composite-xform":48,"../../style/color-xform":128,"./cfvo-ext-xform":76}],80:[function(e,t,r){const n=e("../../base-xform");t.exports=class extends n{get tag(){return"xm:f"}render(e,t){e.leafNode(this.tag,null,t)}parseOpen(){this.model=""}parseText(e){this.model+=e}parseClose(e){return e!==this.tag}}},{"../../base-xform":32}],81:[function(e,t,r){const n=e("../../base-xform"),i=e("../../composite-xform"),s=e("./cfvo-ext-xform"),o=e("./cf-icon-ext-xform");t.exports=class extends i{constructor(){super(),this.map={"x14:cfvo":this.cfvoXform=new s,"x14:cfIcon":this.cfIconXform=new o}}get tag(){return"x14:iconSet"}render(e,t){e.openNode(this.tag,{iconSet:n.toStringAttribute(t.iconSet),reverse:n.toBoolAttribute(t.reverse,!1),showValue:n.toBoolAttribute(t.showValue,!0),custom:n.toBoolAttribute(t.icons,!1)}),t.cfvo.forEach((t=>{this.cfvoXform.render(e,t)})),t.icons&&t.icons.forEach(((t,r)=>{t.iconId=r,this.cfIconXform.render(e,t)})),e.closeNode()}createNewModel(e){let{attributes:t}=e;return{cfvo:[],iconSet:n.toStringValue(t.iconSet,"3TrafficLights"),reverse:n.toBoolValue(t.reverse,!1),showValue:n.toBoolValue(t.showValue,!0)}}onParserClose(e,t){const[,r]=e.split(":");switch(r){case"cfvo":this.model.cfvo.push(t.model);break;case"cfIcon":this.model.icons||(this.model.icons=[]),this.model.icons.push(t.model);break;default:this.model[r]=t.model}}}},{"../../base-xform":32,"../../composite-xform":48,"./cf-icon-ext-xform":74,"./cfvo-ext-xform":76}],82:[function(e,t,r){const n=e("../../base-xform");t.exports=class extends n{get tag(){return"xm:sqref"}render(e,t){e.leafNode(this.tag,null,t)}parseOpen(){this.model=""}parseText(e){this.model+=e}parseClose(e){return e!==this.tag}}},{"../../base-xform":32}],83:[function(e,t,r){const n=e("../../base-xform"),i=e("../../composite-xform"),s=e("../../../../doc/range"),o=e("./databar-xform"),a=e("./ext-lst-ref-xform"),l=e("./formula-xform"),c=e("./color-scale-xform"),h=e("./icon-set-xform"),u={"3Triangles":!0,"3Stars":!0,"5Boxes":!0},f=e=>{const{type:t,operator:r}=e;switch(t){case"containsText":case"containsBlanks":case"notContainsBlanks":case"containsErrors":case"notContainsErrors":return{type:"containsText",operator:t};default:return{type:t,operator:r}}};class d extends i{constructor(){super(),this.map={dataBar:this.databarXform=new o,extLst:this.extLstRefXform=new a,formula:this.formulaXform=new l,colorScale:this.colorScaleXform=new c,iconSet:this.iconSetXform=new h}}get tag(){return"cfRule"}static isPrimitive(e){return"iconSet"!==e.type||!e.custom&&!u[e.iconSet]}render(e,t){switch(t.type){case"expression":this.renderExpression(e,t);break;case"cellIs":this.renderCellIs(e,t);break;case"top10":this.renderTop10(e,t);break;case"aboveAverage":this.renderAboveAverage(e,t);break;case"dataBar":this.renderDataBar(e,t);break;case"colorScale":this.renderColorScale(e,t);break;case"iconSet":this.renderIconSet(e,t);break;case"containsText":this.renderText(e,t);break;case"timePeriod":this.renderTimePeriod(e,t)}}renderExpression(e,t){e.openNode(this.tag,{type:"expression",dxfId:t.dxfId,priority:t.priority}),this.formulaXform.render(e,t.formulae[0]),e.closeNode()}renderCellIs(e,t){e.openNode(this.tag,{type:"cellIs",dxfId:t.dxfId,priority:t.priority,operator:t.operator}),t.formulae.forEach((t=>{this.formulaXform.render(e,t)})),e.closeNode()}renderTop10(e,t){e.leafNode(this.tag,{type:"top10",dxfId:t.dxfId,priority:t.priority,percent:n.toBoolAttribute(t.percent,!1),bottom:n.toBoolAttribute(t.bottom,!1),rank:n.toIntValue(t.rank,10,!0)})}renderAboveAverage(e,t){e.leafNode(this.tag,{type:"aboveAverage",dxfId:t.dxfId,priority:t.priority,aboveAverage:n.toBoolAttribute(t.aboveAverage,!0)})}renderDataBar(e,t){e.openNode(this.tag,{type:"dataBar",priority:t.priority}),this.databarXform.render(e,t),this.extLstRefXform.render(e,t),e.closeNode()}renderColorScale(e,t){e.openNode(this.tag,{type:"colorScale",priority:t.priority}),this.colorScaleXform.render(e,t),e.closeNode()}renderIconSet(e,t){d.isPrimitive(t)&&(e.openNode(this.tag,{type:"iconSet",priority:t.priority}),this.iconSetXform.render(e,t),e.closeNode())}renderText(e,t){e.openNode(this.tag,{type:t.operator,dxfId:t.dxfId,priority:t.priority,operator:n.toStringAttribute(t.operator,"containsText")});const r=(e=>{if(e.formulae&&e.formulae[0])return e.formulae[0];const t=new s(e.ref),{tl:r}=t;switch(e.operator){case"containsText":return`NOT(ISERROR(SEARCH("${e.text}",${r})))`;case"containsBlanks":return`LEN(TRIM(${r}))=0`;case"notContainsBlanks":return`LEN(TRIM(${r}))>0`;case"containsErrors":return`ISERROR(${r})`;case"notContainsErrors":return`NOT(ISERROR(${r}))`;default:return}})(t);r&&this.formulaXform.render(e,r),e.closeNode()}renderTimePeriod(e,t){e.openNode(this.tag,{type:"timePeriod",dxfId:t.dxfId,priority:t.priority,timePeriod:t.timePeriod});const r=(e=>{if(e.formulae&&e.formulae[0])return e.formulae[0];const t=new s(e.ref),{tl:r}=t;switch(e.timePeriod){case"thisWeek":return`AND(TODAY()-ROUNDDOWN(${r},0)<=WEEKDAY(TODAY())-1,ROUNDDOWN(${r},0)-TODAY()<=7-WEEKDAY(TODAY()))`;case"lastWeek":return`AND(TODAY()-ROUNDDOWN(${r},0)>=(WEEKDAY(TODAY())),TODAY()-ROUNDDOWN(${r},0)<(WEEKDAY(TODAY())+7))`;case"nextWeek":return`AND(ROUNDDOWN(${r},0)-TODAY()>(7-WEEKDAY(TODAY())),ROUNDDOWN(${r},0)-TODAY()<(15-WEEKDAY(TODAY())))`;case"yesterday":return`FLOOR(${r},1)=TODAY()-1`;case"today":return`FLOOR(${r},1)=TODAY()`;case"tomorrow":return`FLOOR(${r},1)=TODAY()+1`;case"last7Days":return`AND(TODAY()-FLOOR(${r},1)<=6,FLOOR(${r},1)<=TODAY())`;case"lastMonth":return`AND(MONTH(${r})=MONTH(EDATE(TODAY(),0-1)),YEAR(${r})=YEAR(EDATE(TODAY(),0-1)))`;case"thisMonth":return`AND(MONTH(${r})=MONTH(TODAY()),YEAR(${r})=YEAR(TODAY()))`;case"nextMonth":return`AND(MONTH(${r})=MONTH(EDATE(TODAY(),0+1)),YEAR(${r})=YEAR(EDATE(TODAY(),0+1)))`;default:return}})(t);r&&this.formulaXform.render(e,r),e.closeNode()}createNewModel(e){let{attributes:t}=e;return{...f(t),dxfId:n.toIntValue(t.dxfId),priority:n.toIntValue(t.priority),timePeriod:t.timePeriod,percent:n.toBoolValue(t.percent),bottom:n.toBoolValue(t.bottom),rank:n.toIntValue(t.rank),aboveAverage:n.toBoolValue(t.aboveAverage)}}onParserClose(e,t){switch(e){case"dataBar":case"extLst":case"colorScale":case"iconSet":Object.assign(this.model,t.model);break;case"formula":this.model.formulae=this.model.formulae||[],this.model.formulae.push(t.model)}}}t.exports=d},{"../../../../doc/range":10,"../../base-xform":32,"../../composite-xform":48,"./color-scale-xform":85,"./databar-xform":88,"./ext-lst-ref-xform":89,"./formula-xform":90,"./icon-set-xform":91}],84:[function(e,t,r){const n=e("../../base-xform");t.exports=class extends n{get tag(){return"cfvo"}render(e,t){e.leafNode(this.tag,{type:t.type,val:t.value})}parseOpen(e){this.model={type:e.attributes.type,value:n.toFloatValue(e.attributes.val)}}parseClose(e){return e!==this.tag}}},{"../../base-xform":32}],85:[function(e,t,r){const n=e("../../composite-xform"),i=e("../../style/color-xform"),s=e("./cfvo-xform");t.exports=class extends n{constructor(){super(),this.map={cfvo:this.cfvoXform=new s,color:this.colorXform=new i}}get tag(){return"colorScale"}render(e,t){e.openNode(this.tag),t.cfvo.forEach((t=>{this.cfvoXform.render(e,t)})),t.color.forEach((t=>{this.colorXform.render(e,t)})),e.closeNode()}createNewModel(e){return{cfvo:[],color:[]}}onParserClose(e,t){this.model[e].push(t.model)}}},{"../../composite-xform":48,"../../style/color-xform":128,"./cfvo-xform":84}],86:[function(e,t,r){const n=e("../../composite-xform"),i=e("./cf-rule-xform");t.exports=class extends n{constructor(){super(),this.map={cfRule:new i}}get tag(){return"conditionalFormatting"}render(e,t){t.rules.some(i.isPrimitive)&&(e.openNode(this.tag,{sqref:t.ref}),t.rules.forEach((r=>{i.isPrimitive(r)&&(r.ref=t.ref,this.map.cfRule.render(e,r))})),e.closeNode())}createNewModel(e){let{attributes:t}=e;return{ref:t.sqref,rules:[]}}onParserClose(e,t){this.model.rules.push(t.model)}}},{"../../composite-xform":48,"./cf-rule-xform":83}],87:[function(e,t,r){const n=e("../../base-xform"),i=e("./conditional-formatting-xform");t.exports=class extends n{constructor(){super(),this.cfXform=new i}get tag(){return"conditionalFormatting"}reset(){this.model=[]}prepare(e,t){let r=e.reduce(((e,t)=>Math.max(e,...t.rules.map((e=>e.priority||0)))),1);e.forEach((e=>{e.rules.forEach((e=>{e.priority||(e.priority=r++),e.style&&(e.dxfId=t.styles.addDxfStyle(e.style))}))}))}render(e,t){t.forEach((t=>{this.cfXform.render(e,t)}))}parseOpen(e){return this.parser?(this.parser.parseOpen(e),!0):"conditionalFormatting"===e.name&&(this.parser=this.cfXform,this.parser.parseOpen(e),!0)}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){return!(!this.parser||!this.parser.parseClose(e)&&(this.model.push(this.parser.model),this.parser=void 0,1))}reconcile(e,t){e.forEach((e=>{e.rules.forEach((e=>{void 0!==e.dxfId&&(e.style=t.styles.getDxfStyle(e.dxfId),delete e.dxfId)}))}))}}},{"../../base-xform":32,"./conditional-formatting-xform":86}],88:[function(e,t,r){const n=e("../../composite-xform"),i=e("../../style/color-xform"),s=e("./cfvo-xform");t.exports=class extends n{constructor(){super(),this.map={cfvo:this.cfvoXform=new s,color:this.colorXform=new i}}get tag(){return"dataBar"}render(e,t){e.openNode(this.tag),t.cfvo.forEach((t=>{this.cfvoXform.render(e,t)})),this.colorXform.render(e,t.color),e.closeNode()}createNewModel(){return{cfvo:[]}}onParserClose(e,t){switch(e){case"cfvo":this.model.cfvo.push(t.model);break;case"color":this.model.color=t.model}}}},{"../../composite-xform":48,"../../style/color-xform":128,"./cfvo-xform":84}],89:[function(e,t,r){const n=e("../../base-xform"),i=e("../../composite-xform");class s extends n{get tag(){return"x14:id"}render(e,t){e.leafNode(this.tag,null,t)}parseOpen(){this.model=""}parseText(e){this.model+=e}parseClose(e){return e!==this.tag}}class o extends i{constructor(){super(),this.map={"x14:id":this.idXform=new s}}get tag(){return"ext"}render(e,t){e.openNode(this.tag,{uri:"{B025F937-C7B1-47D3-B67F-A62EFF666E3E}","xmlns:x14":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"}),this.idXform.render(e,t.x14Id),e.closeNode()}createNewModel(){return{}}onParserClose(e,t){this.model.x14Id=t.model}}t.exports=class extends i{constructor(){super(),this.map={ext:new o}}get tag(){return"extLst"}render(e,t){e.openNode(this.tag),this.map.ext.render(e,t),e.closeNode()}createNewModel(){return{}}onParserClose(e,t){Object.assign(this.model,t.model)}}},{"../../base-xform":32,"../../composite-xform":48}],90:[function(e,t,r){const n=e("../../base-xform");t.exports=class extends n{get tag(){return"formula"}render(e,t){e.leafNode(this.tag,null,t)}parseOpen(){this.model=""}parseText(e){this.model+=e}parseClose(e){return e!==this.tag}}},{"../../base-xform":32}],91:[function(e,t,r){const n=e("../../base-xform"),i=e("../../composite-xform"),s=e("./cfvo-xform");t.exports=class extends i{constructor(){super(),this.map={cfvo:this.cfvoXform=new s}}get tag(){return"iconSet"}render(e,t){e.openNode(this.tag,{iconSet:n.toStringAttribute(t.iconSet,"3TrafficLights"),reverse:n.toBoolAttribute(t.reverse,!1),showValue:n.toBoolAttribute(t.showValue,!0)}),t.cfvo.forEach((t=>{this.cfvoXform.render(e,t)})),e.closeNode()}createNewModel(e){let{attributes:t}=e;return{iconSet:n.toStringValue(t.iconSet,"3TrafficLights"),reverse:n.toBoolValue(t.reverse),showValue:n.toBoolValue(t.showValue),cfvo:[]}}onParserClose(e,t){this.model[e].push(t.model)}}},{"../../base-xform":32,"../../composite-xform":48,"./cfvo-xform":84}],92:[function(e,t,r){const n=e("../../../utils/utils"),i=e("../base-xform");t.exports=class extends i{get tag(){return"col"}prepare(e,t){const r=t.styles.addStyleModel(e.style||{});r&&(e.styleId=r)}render(e,t){e.openNode("col"),e.addAttribute("min",t.min),e.addAttribute("max",t.max),t.width&&e.addAttribute("width",t.width),t.styleId&&e.addAttribute("style",t.styleId),t.hidden&&e.addAttribute("hidden","1"),t.bestFit&&e.addAttribute("bestFit","1"),t.outlineLevel&&e.addAttribute("outlineLevel",t.outlineLevel),t.collapsed&&e.addAttribute("collapsed","1"),e.addAttribute("customWidth","1"),e.closeNode()}parseOpen(e){if("col"===e.name){const t=this.model={min:parseInt(e.attributes.min||"0",10),max:parseInt(e.attributes.max||"0",10),width:void 0===e.attributes.width?void 0:parseFloat(e.attributes.width||"0")};return e.attributes.style&&(t.styleId=parseInt(e.attributes.style,10)),n.parseBoolean(e.attributes.hidden)&&(t.hidden=!0),n.parseBoolean(e.attributes.bestFit)&&(t.bestFit=!0),e.attributes.outlineLevel&&(t.outlineLevel=parseInt(e.attributes.outlineLevel,10)),n.parseBoolean(e.attributes.collapsed)&&(t.collapsed=!0),!0}return!1}parseText(){}parseClose(){return!1}reconcile(e,t){e.styleId&&(e.style=t.styles.getStyleModel(e.styleId))}}},{"../../../utils/utils":27,"../base-xform":32}],93:[function(e,t,r){const n=e("../../../utils/under-dash"),i=e("../../../utils/utils"),s=e("../../../utils/col-cache"),o=e("../base-xform"),a=e("../../../doc/range");function l(e,t,r,n){const i=t[r];void 0!==i?e[r]=i:void 0!==n&&(e[r]=n)}function c(e,t,r,n){const s=t[r];void 0!==s&&(e[r]=i.parseBoolean(s))}t.exports=class extends o{get tag(){return"dataValidations"}render(e,t){const r=function(e){const t=n.map(e,((e,t)=>({address:t,dataValidation:e,marked:!1}))).sort(((e,t)=>n.strcmp(e.address,t.address))),r=n.keyBy(t,"address"),i=(t,r,i)=>{for(let o=0;o{if(!t.marked){const o=s.decodeEx(t.address);if(o.dimensions)return r[o.dimensions].marked=!0,{...t.dataValidation,sqref:t.address};let a=1,l=s.encodeAddress(o.row+a,o.col);for(;e[l]&&n.isEqual(t.dataValidation,e[l]);)a++,l=s.encodeAddress(o.row+a,o.col);let c=1;for(;i(o,a,o.col+c);)c++;for(let e=0;e1||c>1){const e=o.row+(a-1),r=o.col+(c-1);return{...t.dataValidation,sqref:`${t.address}:${s.encodeAddress(e,r)}`}}return{...t.dataValidation,sqref:t.address}}return null})).filter(Boolean)}(t);r.length&&(e.openNode("dataValidations",{count:r.length}),r.forEach((t=>{e.openNode("dataValidation"),"any"!==t.type&&(e.addAttribute("type",t.type),t.operator&&"list"!==t.type&&"between"!==t.operator&&e.addAttribute("operator",t.operator),t.allowBlank&&e.addAttribute("allowBlank","1")),t.showInputMessage&&e.addAttribute("showInputMessage","1"),t.promptTitle&&e.addAttribute("promptTitle",t.promptTitle),t.prompt&&e.addAttribute("prompt",t.prompt),t.showErrorMessage&&e.addAttribute("showErrorMessage","1"),t.errorStyle&&e.addAttribute("errorStyle",t.errorStyle),t.errorTitle&&e.addAttribute("errorTitle",t.errorTitle),t.error&&e.addAttribute("error",t.error),e.addAttribute("sqref",t.sqref),(t.formulae||[]).forEach(((r,n)=>{e.openNode("formula"+(n+1)),"date"===t.type?e.writeText(i.dateToExcel(new Date(r))):e.writeText(r),e.closeNode()})),e.closeNode()})),e.closeNode())}parseOpen(e){switch(e.name){case"dataValidations":return this.model={},!0;case"dataValidation":{this._address=e.attributes.sqref;const t={type:e.attributes.type||"any",formulae:[]};switch(e.attributes.type&&c(t,e.attributes,"allowBlank"),c(t,e.attributes,"showInputMessage"),c(t,e.attributes,"showErrorMessage"),t.type){case"any":case"list":case"custom":break;default:l(t,e.attributes,"operator","between")}return l(t,e.attributes,"promptTitle"),l(t,e.attributes,"prompt"),l(t,e.attributes,"errorStyle"),l(t,e.attributes,"errorTitle"),l(t,e.attributes,"error"),this._dataValidation=t,!0}case"formula1":case"formula2":return this._formula=[],!0;default:return!1}}parseText(e){this._formula&&this._formula.push(e)}parseClose(e){switch(e){case"dataValidations":return!1;case"dataValidation":return this._dataValidation.formulae&&this._dataValidation.formulae.length||(delete this._dataValidation.formulae,delete this._dataValidation.operator),(this._address.split(/\s+/g)||[]).forEach((e=>{e.includes(":")?new a(e).forEachAddress((e=>{this.model[e]=this._dataValidation})):this.model[e]=this._dataValidation})),!0;case"formula1":case"formula2":{let e=this._formula.join("");switch(this._dataValidation.type){case"whole":case"textLength":e=parseInt(e,10);break;case"decimal":e=parseFloat(e);break;case"date":e=i.excelToDate(parseFloat(e))}return this._dataValidation.formulae.push(e),this._formula=void 0,!0}default:return!0}}}},{"../../../doc/range":10,"../../../utils/col-cache":19,"../../../utils/under-dash":26,"../../../utils/utils":27,"../base-xform":32}],94:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{get tag(){return"dimension"}render(e,t){t&&e.leafNode("dimension",{ref:t})}parseOpen(e){return"dimension"===e.name&&(this.model=e.attributes.ref,!0)}parseText(){}parseClose(){return!1}}},{"../base-xform":32}],95:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{get tag(){return"drawing"}render(e,t){t&&e.leafNode(this.tag,{"r:id":t.rId})}parseOpen(e){return e.name===this.tag&&(this.model={rId:e.attributes["r:id"]},!0)}parseText(){}parseClose(){return!1}}},{"../base-xform":32}],96:[function(e,t,r){const n=e("../composite-xform"),i=e("./cf-ext/conditional-formattings-ext-xform");class s extends n{constructor(){super(),this.map={"x14:conditionalFormattings":this.conditionalFormattings=new i}}get tag(){return"ext"}hasContent(e){return this.conditionalFormattings.hasContent(e.conditionalFormattings)}prepare(e,t){this.conditionalFormattings.prepare(e.conditionalFormattings,t)}render(e,t){e.openNode("ext",{uri:"{78C0D931-6437-407d-A8EE-F0AAD7539E65}","xmlns:x14":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"}),this.conditionalFormattings.render(e,t.conditionalFormattings),e.closeNode()}createNewModel(){return{}}onParserClose(e,t){this.model[e]=t.model}}t.exports=class extends n{constructor(){super(),this.map={ext:this.ext=new s}}get tag(){return"extLst"}prepare(e,t){this.ext.prepare(e,t)}hasContent(e){return this.ext.hasContent(e)}render(e,t){this.hasContent(t)&&(e.openNode("extLst"),this.ext.render(e,t),e.closeNode())}createNewModel(){return{}}onParserClose(e,t){Object.assign(this.model,t.model)}}},{"../composite-xform":48,"./cf-ext/conditional-formattings-ext-xform":78}],97:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{get tag(){return"headerFooter"}render(e,t){if(t){e.addRollback();let r=!1;e.openNode("headerFooter"),t.differentFirst&&(e.addAttribute("differentFirst","1"),r=!0),t.differentOddEven&&(e.addAttribute("differentOddEven","1"),r=!0),t.oddHeader&&"string"==typeof t.oddHeader&&(e.leafNode("oddHeader",null,t.oddHeader),r=!0),t.oddFooter&&"string"==typeof t.oddFooter&&(e.leafNode("oddFooter",null,t.oddFooter),r=!0),t.evenHeader&&"string"==typeof t.evenHeader&&(e.leafNode("evenHeader",null,t.evenHeader),r=!0),t.evenFooter&&"string"==typeof t.evenFooter&&(e.leafNode("evenFooter",null,t.evenFooter),r=!0),t.firstHeader&&"string"==typeof t.firstHeader&&(e.leafNode("firstHeader",null,t.firstHeader),r=!0),t.firstFooter&&"string"==typeof t.firstFooter&&(e.leafNode("firstFooter",null,t.firstFooter),r=!0),r?(e.closeNode(),e.commit()):e.rollback()}}parseOpen(e){switch(e.name){case"headerFooter":return this.model={},e.attributes.differentFirst&&(this.model.differentFirst=1===parseInt(e.attributes.differentFirst,0)),e.attributes.differentOddEven&&(this.model.differentOddEven=1===parseInt(e.attributes.differentOddEven,0)),!0;case"oddHeader":return this.currentNode="oddHeader",!0;case"oddFooter":return this.currentNode="oddFooter",!0;case"evenHeader":return this.currentNode="evenHeader",!0;case"evenFooter":return this.currentNode="evenFooter",!0;case"firstHeader":return this.currentNode="firstHeader",!0;case"firstFooter":return this.currentNode="firstFooter",!0;default:return!1}}parseText(e){switch(this.currentNode){case"oddHeader":this.model.oddHeader=e;break;case"oddFooter":this.model.oddFooter=e;break;case"evenHeader":this.model.evenHeader=e;break;case"evenFooter":this.model.evenFooter=e;break;case"firstHeader":this.model.firstHeader=e;break;case"firstFooter":this.model.firstFooter=e}}parseClose(){switch(this.currentNode){case"oddHeader":case"oddFooter":case"evenHeader":case"evenFooter":case"firstHeader":case"firstFooter":return this.currentNode=void 0,!0;default:return!1}}}},{"../base-xform":32}],98:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{get tag(){return"hyperlink"}render(e,t){this.isInternalLink(t)?e.leafNode("hyperlink",{ref:t.address,"r:id":t.rId,tooltip:t.tooltip,location:t.target}):e.leafNode("hyperlink",{ref:t.address,"r:id":t.rId,tooltip:t.tooltip})}parseOpen(e){return"hyperlink"===e.name&&(this.model={address:e.attributes.ref,rId:e.attributes["r:id"],tooltip:e.attributes.tooltip},e.attributes.location&&(this.model.target=e.attributes.location),!0)}parseText(){}parseClose(){return!1}isInternalLink(e){return e.target&&/^[^!]+![a-zA-Z]+[\d]+$/.test(e.target)}}},{"../base-xform":32}],99:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{get tag(){return"mergeCell"}render(e,t){e.leafNode("mergeCell",{ref:t})}parseOpen(e){return"mergeCell"===e.name&&(this.model=e.attributes.ref,!0)}parseText(){}parseClose(){return!1}}},{"../base-xform":32}],100:[function(e,t,r){const n=e("../../../utils/under-dash"),i=e("../../../doc/range"),s=e("../../../utils/col-cache"),o=e("../../../doc/enums");t.exports=class{constructor(){this.merges={}}add(e){if(this.merges[e.master])this.merges[e.master].expandToAddress(e.address);else{const t=`${e.master}:${e.address}`;this.merges[e.master]=new i(t)}}get mergeCells(){return n.map(this.merges,(e=>e.range))}reconcile(e,t){n.each(e,(e=>{const r=s.decode(e);for(let n=r.top;n<=r.bottom;n++){const e=t[n-1];for(let t=r.left;t<=r.right;t++){const i=e.cells[t-1];i?i.type===o.ValueType.Merge&&(i.master=r.tl):e.cells[t]={type:o.ValueType.Null,address:s.encodeAddress(n,t)}}}}))}getMasterAddress(e){const t=this.hash[e];return t&&t.tl}}},{"../../../doc/enums":7,"../../../doc/range":10,"../../../utils/col-cache":19,"../../../utils/under-dash":26}],101:[function(e,t,r){const n=e("../base-xform"),i=e=>void 0!==e;t.exports=class extends n{get tag(){return"outlinePr"}render(e,t){return!(!t||!i(t.summaryBelow)&&!i(t.summaryRight)||(e.leafNode(this.tag,{summaryBelow:i(t.summaryBelow)?Number(t.summaryBelow):void 0,summaryRight:i(t.summaryRight)?Number(t.summaryRight):void 0}),0))}parseOpen(e){return e.name===this.tag&&(this.model={summaryBelow:i(e.attributes.summaryBelow)?Boolean(Number(e.attributes.summaryBelow)):void 0,summaryRight:i(e.attributes.summaryRight)?Boolean(Number(e.attributes.summaryRight)):void 0},!0)}parseText(){}parseClose(){return!1}}},{"../base-xform":32}],102:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{get tag(){return"brk"}render(e,t){e.leafNode("brk",t)}parseOpen(e){return"brk"===e.name&&(this.model=e.attributes.ref,!0)}parseText(){}parseClose(){return!1}}},{"../base-xform":32}],103:[function(e,t,r){const n=e("../../../utils/under-dash"),i=e("../base-xform");t.exports=class extends i{get tag(){return"pageMargins"}render(e,t){if(t){const r={left:t.left,right:t.right,top:t.top,bottom:t.bottom,header:t.header,footer:t.footer};n.some(r,(e=>void 0!==e))&&e.leafNode(this.tag,r)}}parseOpen(e){return e.name===this.tag&&(this.model={left:parseFloat(e.attributes.left||.7),right:parseFloat(e.attributes.right||.7),top:parseFloat(e.attributes.top||.75),bottom:parseFloat(e.attributes.bottom||.75),header:parseFloat(e.attributes.header||.3),footer:parseFloat(e.attributes.footer||.3)},!0)}parseText(){}parseClose(){return!1}}},{"../../../utils/under-dash":26,"../base-xform":32}],104:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{get tag(){return"pageSetUpPr"}render(e,t){return!(!t||!t.fitToPage||(e.leafNode(this.tag,{fitToPage:t.fitToPage?"1":void 0}),0))}parseOpen(e){return e.name===this.tag&&(this.model={fitToPage:"1"===e.attributes.fitToPage},!0)}parseText(){}parseClose(){return!1}}},{"../base-xform":32}],105:[function(e,t,r){const n=e("../../../utils/under-dash"),i=e("../base-xform");function s(e){return e?"1":void 0}function o(e){if("overThenDown"===e)return e}function a(e){switch(e){case"atEnd":case"asDisplyed":return e;default:return}}function l(e){switch(e){case"dash":case"blank":case"NA":return e;default:return}}t.exports=class extends i{get tag(){return"pageSetup"}render(e,t){if(t){const r={paperSize:t.paperSize,orientation:t.orientation,horizontalDpi:t.horizontalDpi,verticalDpi:t.verticalDpi,pageOrder:o(t.pageOrder),blackAndWhite:s(t.blackAndWhite),draft:s(t.draft),cellComments:a(t.cellComments),errors:l(t.errors),scale:t.scale,fitToWidth:t.fitToWidth,fitToHeight:t.fitToHeight,firstPageNumber:t.firstPageNumber,useFirstPageNumber:s(t.firstPageNumber),usePrinterDefaults:s(t.usePrinterDefaults),copies:t.copies};n.some(r,(e=>void 0!==e))&&e.leafNode(this.tag,r)}}parseOpen(e){return e.name===this.tag&&(this.model={paperSize:(t=e.attributes.paperSize,void 0!==t?parseInt(t,10):void 0),orientation:e.attributes.orientation||"portrait",horizontalDpi:parseInt(e.attributes.horizontalDpi||"4294967295",10),verticalDpi:parseInt(e.attributes.verticalDpi||"4294967295",10),pageOrder:e.attributes.pageOrder||"downThenOver",blackAndWhite:"1"===e.attributes.blackAndWhite,draft:"1"===e.attributes.draft,cellComments:e.attributes.cellComments||"None",errors:e.attributes.errors||"displayed",scale:parseInt(e.attributes.scale||"100",10),fitToWidth:parseInt(e.attributes.fitToWidth||"1",10),fitToHeight:parseInt(e.attributes.fitToHeight||"1",10),firstPageNumber:parseInt(e.attributes.firstPageNumber||"1",10),useFirstPageNumber:"1"===e.attributes.useFirstPageNumber,usePrinterDefaults:"1"===e.attributes.usePrinterDefaults,copies:parseInt(e.attributes.copies||"1",10)},!0);var t}parseText(){}parseClose(){return!1}}},{"../../../utils/under-dash":26,"../base-xform":32}],106:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{get tag(){return"picture"}render(e,t){t&&e.leafNode(this.tag,{"r:id":t.rId})}parseOpen(e){return e.name===this.tag&&(this.model={rId:e.attributes["r:id"]},!0)}parseText(){}parseClose(){return!1}}},{"../base-xform":32}],107:[function(e,t,r){const n=e("../../../utils/under-dash"),i=e("../base-xform");function s(e){return e?"1":void 0}t.exports=class extends i{get tag(){return"printOptions"}render(e,t){if(t){const r={headings:s(t.showRowColHeaders),gridLines:s(t.showGridLines),horizontalCentered:s(t.horizontalCentered),verticalCentered:s(t.verticalCentered)};n.some(r,(e=>void 0!==e))&&e.leafNode(this.tag,r)}}parseOpen(e){return e.name===this.tag&&(this.model={showRowColHeaders:"1"===e.attributes.headings,showGridLines:"1"===e.attributes.gridLines,horizontalCentered:"1"===e.attributes.horizontalCentered,verticalCentered:"1"===e.attributes.verticalCentered},!0)}parseText(){}parseClose(){return!1}}},{"../../../utils/under-dash":26,"../base-xform":32}],108:[function(e,t,r){const n=e("./page-breaks-xform"),i=e("../list-xform");t.exports=class extends i{constructor(){super({tag:"rowBreaks",count:!0,childXform:new n})}render(e,t){if(t&&t.length){e.openNode(this.tag,this.$),this.count&&(e.addAttribute(this.$count,t.length),e.addAttribute("manualBreakCount",t.length));const{childXform:r}=this;t.forEach((t=>{r.render(e,t)})),e.closeNode()}else this.empty&&e.leafNode(this.tag)}}},{"../list-xform":71,"./page-breaks-xform":102}],109:[function(e,t,r){const n=e("../base-xform"),i=e("../../../utils/utils"),s=e("./cell-xform");t.exports=class extends n{constructor(e){super(),this.maxItems=e&&e.maxItems,this.map={c:new s}}get tag(){return"row"}prepare(e,t){const r=t.styles.addStyleModel(e.style);r&&(e.styleId=r);const n=this.map.c;e.cells.forEach((e=>{n.prepare(e,t)}))}render(e,t,r){e.openNode("row"),e.addAttribute("r",t.number),t.height&&(e.addAttribute("ht",t.height),e.addAttribute("customHeight","1")),t.hidden&&e.addAttribute("hidden","1"),t.min>0&&t.max>0&&t.min<=t.max&&e.addAttribute("spans",`${t.min}:${t.max}`),t.styleId&&(e.addAttribute("s",t.styleId),e.addAttribute("customFormat","1")),e.addAttribute("x14ac:dyDescent","0.25"),t.outlineLevel&&e.addAttribute("outlineLevel",t.outlineLevel),t.collapsed&&e.addAttribute("collapsed","1");const n=this.map.c;t.cells.forEach((t=>{n.render(e,t,r)})),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;if("row"===e.name){this.numRowsSeen+=1;const t=e.attributes.spans?e.attributes.spans.split(":").map((e=>parseInt(e,10))):[void 0,void 0],r=this.model={number:parseInt(e.attributes.r,10),min:t[0],max:t[1],cells:[]};return e.attributes.s&&(r.styleId=parseInt(e.attributes.s,10)),i.parseBoolean(e.attributes.hidden)&&(r.hidden=!0),i.parseBoolean(e.attributes.bestFit)&&(r.bestFit=!0),e.attributes.ht&&(r.height=parseFloat(e.attributes.ht)),e.attributes.outlineLevel&&(r.outlineLevel=parseInt(e.attributes.outlineLevel,10)),i.parseBoolean(e.attributes.collapsed)&&(r.collapsed=!0),!0}return this.parser=this.map[e.name],!!this.parser&&(this.parser.parseOpen(e),!0)}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser){if(!this.parser.parseClose(e)){if(this.model.cells.push(this.parser.model),this.maxItems&&this.model.cells.length>this.maxItems)throw new Error(`Max column count (${this.maxItems}) exceeded`);this.parser=void 0}return!0}return!1}reconcile(e,t){e.style=e.styleId?t.styles.getStyleModel(e.styleId):{},void 0!==e.styleId&&(e.styleId=void 0);const r=this.map.c;e.cells.forEach((e=>{r.reconcile(e,t)}))}}},{"../../../utils/utils":27,"../base-xform":32,"./cell-xform":73}],110:[function(e,t,r){const n=e("../../../utils/under-dash"),i=e("../base-xform");t.exports=class extends i{get tag(){return"sheetFormatPr"}render(e,t){if(t){const r={defaultRowHeight:t.defaultRowHeight,outlineLevelRow:t.outlineLevelRow,outlineLevelCol:t.outlineLevelCol,"x14ac:dyDescent":t.dyDescent};t.defaultColWidth&&(r.defaultColWidth=t.defaultColWidth),t.defaultRowHeight&&15===t.defaultRowHeight||(r.customHeight="1"),n.some(r,(e=>void 0!==e))&&e.leafNode("sheetFormatPr",r)}}parseOpen(e){return"sheetFormatPr"===e.name&&(this.model={defaultRowHeight:parseFloat(e.attributes.defaultRowHeight||"0"),dyDescent:parseFloat(e.attributes["x14ac:dyDescent"]||"0"),outlineLevelRow:parseInt(e.attributes.outlineLevelRow||"0",10),outlineLevelCol:parseInt(e.attributes.outlineLevelCol||"0",10)},e.attributes.defaultColWidth&&(this.model.defaultColWidth=parseFloat(e.attributes.defaultColWidth)),!0)}parseText(){}parseClose(){return!1}}},{"../../../utils/under-dash":26,"../base-xform":32}],111:[function(e,t,r){const n=e("../base-xform"),i=e("../style/color-xform"),s=e("./page-setup-properties-xform"),o=e("./outline-properties-xform");t.exports=class extends n{constructor(){super(),this.map={tabColor:new i("tabColor"),pageSetUpPr:new s,outlinePr:new o}}get tag(){return"sheetPr"}render(e,t){if(t){e.addRollback(),e.openNode("sheetPr");let r=!1;r=this.map.tabColor.render(e,t.tabColor)||r,r=this.map.pageSetUpPr.render(e,t.pageSetup)||r,r=this.map.outlinePr.render(e,t.outlineProperties)||r,r?(e.closeNode(),e.commit()):e.rollback()}}parseOpen(e){return this.parser?(this.parser.parseOpen(e),!0):e.name===this.tag?(this.reset(),!0):!!this.map[e.name]&&(this.parser=this.map[e.name],this.parser.parseOpen(e),!0)}parseText(e){return!!this.parser&&(this.parser.parseText(e),!0)}parseClose(e){return this.parser?(this.parser.parseClose(e)||(this.parser=void 0),!0):(this.map.tabColor.model||this.map.pageSetUpPr.model||this.map.outlinePr.model?(this.model={},this.map.tabColor.model&&(this.model.tabColor=this.map.tabColor.model),this.map.pageSetUpPr.model&&(this.model.pageSetup=this.map.pageSetUpPr.model),this.map.outlinePr.model&&(this.model.outlineProperties=this.map.outlinePr.model)):this.model=null,!1)}}},{"../base-xform":32,"../style/color-xform":128,"./outline-properties-xform":101,"./page-setup-properties-xform":104}],112:[function(e,t,r){const n=e("../../../utils/under-dash"),i=e("../base-xform");function s(e,t){return e?t:void 0}function o(e,t){return e===t||void 0}t.exports=class extends i{get tag(){return"sheetProtection"}render(e,t){if(t){const r={sheet:s(t.sheet,"1"),selectLockedCells:!1===t.selectLockedCells?"1":void 0,selectUnlockedCells:!1===t.selectUnlockedCells?"1":void 0,formatCells:s(t.formatCells,"0"),formatColumns:s(t.formatColumns,"0"),formatRows:s(t.formatRows,"0"),insertColumns:s(t.insertColumns,"0"),insertRows:s(t.insertRows,"0"),insertHyperlinks:s(t.insertHyperlinks,"0"),deleteColumns:s(t.deleteColumns,"0"),deleteRows:s(t.deleteRows,"0"),sort:s(t.sort,"0"),autoFilter:s(t.autoFilter,"0"),pivotTables:s(t.pivotTables,"0")};t.sheet&&(r.algorithmName=t.algorithmName,r.hashValue=t.hashValue,r.saltValue=t.saltValue,r.spinCount=t.spinCount,r.objects=s(!1===t.objects,"1"),r.scenarios=s(!1===t.scenarios,"1")),n.some(r,(e=>void 0!==e))&&e.leafNode(this.tag,r)}}parseOpen(e){return e.name===this.tag&&(this.model={sheet:o(e.attributes.sheet,"1"),objects:"1"!==e.attributes.objects&&void 0,scenarios:"1"!==e.attributes.scenarios&&void 0,selectLockedCells:"1"!==e.attributes.selectLockedCells&&void 0,selectUnlockedCells:"1"!==e.attributes.selectUnlockedCells&&void 0,formatCells:o(e.attributes.formatCells,"0"),formatColumns:o(e.attributes.formatColumns,"0"),formatRows:o(e.attributes.formatRows,"0"),insertColumns:o(e.attributes.insertColumns,"0"),insertRows:o(e.attributes.insertRows,"0"),insertHyperlinks:o(e.attributes.insertHyperlinks,"0"),deleteColumns:o(e.attributes.deleteColumns,"0"),deleteRows:o(e.attributes.deleteRows,"0"),sort:o(e.attributes.sort,"0"),autoFilter:o(e.attributes.autoFilter,"0"),pivotTables:o(e.attributes.pivotTables,"0")},e.attributes.algorithmName&&(this.model.algorithmName=e.attributes.algorithmName,this.model.hashValue=e.attributes.hashValue,this.model.saltValue=e.attributes.saltValue,this.model.spinCount=parseInt(e.attributes.spinCount,10)),!0)}parseText(){}parseClose(){return!1}}},{"../../../utils/under-dash":26,"../base-xform":32}],113:[function(e,t,r){const n=e("../../../utils/col-cache"),i=e("../base-xform"),s={frozen:"frozen",frozenSplit:"frozen",split:"split"};t.exports=class extends i{get tag(){return"sheetView"}prepare(e){switch(e.state){case"frozen":case"split":break;default:e.state="normal"}}render(e,t){e.openNode("sheetView",{workbookViewId:t.workbookViewId||0});const r=function(t,r,n){n&&e.addAttribute(t,r)};let i,s,o,a;switch(r("rightToLeft","1",!0===t.rightToLeft),r("tabSelected","1",t.tabSelected),r("showRuler","0",!1===t.showRuler),r("showRowColHeaders","0",!1===t.showRowColHeaders),r("showGridLines","0",!1===t.showGridLines),r("zoomScale",t.zoomScale,t.zoomScale),r("zoomScaleNormal",t.zoomScaleNormal,t.zoomScaleNormal),r("view",t.style,t.style),t.state){case"frozen":s=t.xSplit||0,o=t.ySplit||0,i=t.topLeftCell||n.getAddress(o+1,s+1).address,a=(t.xSplit&&t.ySplit?"bottomRight":t.xSplit&&"topRight")||"bottomLeft",e.leafNode("pane",{xSplit:t.xSplit||void 0,ySplit:t.ySplit||void 0,topLeftCell:i,activePane:a,state:"frozen"}),e.leafNode("selection",{pane:a,activeCell:t.activeCell,sqref:t.activeCell});break;case"split":"topLeft"===t.activePane&&(t.activePane=void 0),e.leafNode("pane",{xSplit:t.xSplit||void 0,ySplit:t.ySplit||void 0,topLeftCell:t.topLeftCell,activePane:t.activePane}),e.leafNode("selection",{pane:t.activePane,activeCell:t.activeCell,sqref:t.activeCell});break;case"normal":t.activeCell&&e.leafNode("selection",{activeCell:t.activeCell,sqref:t.activeCell})}e.closeNode()}parseOpen(e){switch(e.name){case"sheetView":return this.sheetView={workbookViewId:parseInt(e.attributes.workbookViewId,10),rightToLeft:"1"===e.attributes.rightToLeft,tabSelected:"1"===e.attributes.tabSelected,showRuler:!("0"===e.attributes.showRuler),showRowColHeaders:!("0"===e.attributes.showRowColHeaders),showGridLines:!("0"===e.attributes.showGridLines),zoomScale:parseInt(e.attributes.zoomScale||"100",10),zoomScaleNormal:parseInt(e.attributes.zoomScaleNormal||"100",10),style:e.attributes.view},this.pane=void 0,this.selections={},!0;case"pane":return this.pane={xSplit:parseInt(e.attributes.xSplit||"0",10),ySplit:parseInt(e.attributes.ySplit||"0",10),topLeftCell:e.attributes.topLeftCell,activePane:e.attributes.activePane||"topLeft",state:e.attributes.state},!0;case"selection":{const t=e.attributes.pane||"topLeft";return this.selections[t]={pane:t,activeCell:e.attributes.activeCell},!0}default:return!1}}parseText(){}parseClose(e){let t,r;return"sheetView"!==e||(this.sheetView&&this.pane?(t=this.model={workbookViewId:this.sheetView.workbookViewId,rightToLeft:this.sheetView.rightToLeft,state:s[this.pane.state]||"split",xSplit:this.pane.xSplit,ySplit:this.pane.ySplit,topLeftCell:this.pane.topLeftCell,showRuler:this.sheetView.showRuler,showRowColHeaders:this.sheetView.showRowColHeaders,showGridLines:this.sheetView.showGridLines,zoomScale:this.sheetView.zoomScale,zoomScaleNormal:this.sheetView.zoomScaleNormal},"split"===this.model.state&&(t.activePane=this.pane.activePane),r=this.selections[this.pane.activePane],r&&r.activeCell&&(t.activeCell=r.activeCell),this.sheetView.style&&(t.style=this.sheetView.style)):(t=this.model={workbookViewId:this.sheetView.workbookViewId,rightToLeft:this.sheetView.rightToLeft,state:"normal",showRuler:this.sheetView.showRuler,showRowColHeaders:this.sheetView.showRowColHeaders,showGridLines:this.sheetView.showGridLines,zoomScale:this.sheetView.zoomScale,zoomScaleNormal:this.sheetView.zoomScaleNormal},r=this.selections.topLeft,r&&r.activeCell&&(t.activeCell=r.activeCell),this.sheetView.style&&(t.style=this.sheetView.style)),!1)}reconcile(){}}},{"../../../utils/col-cache":19,"../base-xform":32}],114:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{get tag(){return"tablePart"}render(e,t){t&&e.leafNode(this.tag,{"r:id":t.rId})}parseOpen(e){return e.name===this.tag&&(this.model={rId:e.attributes["r:id"]},!0)}parseText(){}parseClose(){return!1}}},{"../base-xform":32}],115:[function(e,t,r){const n=e("../../../utils/under-dash"),i=e("../../../utils/col-cache"),s=e("../../../utils/xml-stream"),o=e("../../rel-type"),a=e("./merges"),l=e("../base-xform"),c=e("../list-xform"),h=e("./row-xform"),u=e("./col-xform"),f=e("./dimension-xform"),d=e("./hyperlink-xform"),p=e("./merge-cell-xform"),m=e("./data-validations-xform"),b=e("./sheet-properties-xform"),g=e("./sheet-format-properties-xform"),y=e("./sheet-view-xform"),v=e("./sheet-protection-xform"),w=e("./page-margins-xform"),_=e("./page-setup-xform"),x=e("./print-options-xform"),k=e("./auto-filter-xform"),S=e("./picture-xform"),C=e("./drawing-xform"),M=e("./table-part-xform"),T=e("./row-breaks-xform"),E=e("./header-footer-xform"),A=e("./cf/conditional-formattings-xform"),R=e("./ext-lst-xform"),j=(e,t)=>{if(!t||!t.length)return e;if(!e||!e.length)return t;const r={},n={};return e.forEach((e=>{r[e.ref]=e,e.rules.forEach((e=>{const{x14Id:t}=e;t&&(n[t]=e)}))})),t.forEach((t=>{t.rules.forEach((i=>{const s=n[i.x14Id];var o,a;s?(o=s,a=i,Object.keys(a).forEach((e=>{const t=o[e],r=a[e];void 0===t&&void 0!==r&&(o[e]=r)}))):r[t.ref]?r[t.ref].rules.push(i):e.push({ref:t.ref,rules:[i]})}))})),e};class O extends l{constructor(e){super();const{maxRows:t,maxCols:r,ignoreNodes:n}=e||{};this.ignoreNodes=n||[],this.map={sheetPr:new b,dimension:new f,sheetViews:new c({tag:"sheetViews",count:!1,childXform:new y}),sheetFormatPr:new g,cols:new c({tag:"cols",count:!1,childXform:new u}),sheetData:new c({tag:"sheetData",count:!1,empty:!0,childXform:new h({maxItems:r}),maxItems:t}),autoFilter:new k,mergeCells:new c({tag:"mergeCells",count:!0,childXform:new p}),rowBreaks:new T,hyperlinks:new c({tag:"hyperlinks",count:!1,childXform:new d}),pageMargins:new w,dataValidations:new m,pageSetup:new _,headerFooter:new E,printOptions:new x,picture:new S,drawing:new C,sheetProtection:new v,tableParts:new c({tag:"tableParts",count:!0,childXform:new M}),conditionalFormatting:new A,extLst:new R}}prepare(e,t){t.merges=new a,e.hyperlinks=t.hyperlinks=[],e.comments=t.comments=[],t.formulae={},t.siFormulae=0,this.map.cols.prepare(e.cols,t),this.map.sheetData.prepare(e.rows,t),this.map.conditionalFormatting.prepare(e.conditionalFormattings,t),e.mergeCells=t.merges.mergeCells;const r=e.rels=[];function n(e){return"rId"+(e.length+1)}if(e.hyperlinks.forEach((e=>{const t=n(r);e.rId=t,r.push({Id:t,Type:o.Hyperlink,Target:e.target,TargetMode:"External"})})),e.comments.length>0){const s={Id:n(r),Type:o.Comments,Target:`../comments${e.id}.xml`};r.push(s);const a={Id:n(r),Type:o.VmlDrawing,Target:`../drawings/vmlDrawing${e.id}.vml`};r.push(a),e.comments.forEach((e=>{e.refAddress=i.decodeAddress(e.ref)})),t.commentRefs.push({commentName:"comments"+e.id,vmlDrawing:"vmlDrawing"+e.id})}const s=[];let l;e.media.forEach((i=>{if("background"===i.type){const s=n(r);l=t.media[i.imageId],r.push({Id:s,Type:o.Image,Target:`../media/${l.name}.${l.extension}`}),e.background={rId:s},e.image=t.media[i.imageId]}else if("image"===i.type){let{drawing:a}=e;l=t.media[i.imageId],a||(a=e.drawing={rId:n(r),name:"drawing"+ ++t.drawingsCount,anchors:[],rels:[]},t.drawings.push(a),r.push({Id:a.rId,Type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing",Target:`../drawings/${a.name}.xml`}));let c=this.preImageId===i.imageId?s[i.imageId]:s[a.rels.length];c||(c=n(a.rels),s[a.rels.length]=c,a.rels.push({Id:c,Type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",Target:`../media/${l.name}.${l.extension}`}));const h={picture:{rId:c},range:i.range};if(i.hyperlinks&&i.hyperlinks.hyperlink){const e=n(a.rels);s[a.rels.length]=e,h.picture.hyperlinks={tooltip:i.hyperlinks.tooltip,rId:e},a.rels.push({Id:e,Type:o.Hyperlink,Target:i.hyperlinks.hyperlink,TargetMode:"External"})}this.preImageId=i.imageId,a.anchors.push(h)}})),e.tables.forEach((e=>{const i=n(r);e.rId=i,r.push({Id:i,Type:o.Table,Target:"../tables/"+e.target}),e.columns.forEach((e=>{const{style:r}=e;r&&(e.dxfId=t.styles.addDxfStyle(r))}))})),this.map.extLst.prepare(e,t)}render(e,t){e.openXml(s.StdDocAttributes),e.openNode("worksheet",O.WORKSHEET_ATTRIBUTES);const r=t.properties?{defaultRowHeight:t.properties.defaultRowHeight,dyDescent:t.properties.dyDescent,outlineLevelCol:t.properties.outlineLevelCol,outlineLevelRow:t.properties.outlineLevelRow}:void 0;t.properties&&t.properties.defaultColWidth&&(r.defaultColWidth=t.properties.defaultColWidth);const n={outlineProperties:t.properties&&t.properties.outlineProperties,tabColor:t.properties&&t.properties.tabColor,pageSetup:t.pageSetup&&t.pageSetup.fitToPage?{fitToPage:t.pageSetup.fitToPage}:void 0},i=t.pageSetup&&t.pageSetup.margins,a={showRowColHeaders:t.pageSetup&&t.pageSetup.showRowColHeaders,showGridLines:t.pageSetup&&t.pageSetup.showGridLines,horizontalCentered:t.pageSetup&&t.pageSetup.horizontalCentered,verticalCentered:t.pageSetup&&t.pageSetup.verticalCentered},l=t.sheetProtection;this.map.sheetPr.render(e,n),this.map.dimension.render(e,t.dimensions),this.map.sheetViews.render(e,t.views),this.map.sheetFormatPr.render(e,r),this.map.cols.render(e,t.cols),this.map.sheetData.render(e,t.rows),this.map.sheetProtection.render(e,l),this.map.autoFilter.render(e,t.autoFilter),this.map.mergeCells.render(e,t.mergeCells),this.map.conditionalFormatting.render(e,t.conditionalFormattings),this.map.dataValidations.render(e,t.dataValidations),this.map.hyperlinks.render(e,t.hyperlinks),this.map.printOptions.render(e,a),this.map.pageMargins.render(e,i),this.map.pageSetup.render(e,t.pageSetup),this.map.headerFooter.render(e,t.headerFooter),this.map.rowBreaks.render(e,t.rowBreaks),this.map.drawing.render(e,t.drawing),this.map.picture.render(e,t.background),this.map.tableParts.render(e,t.tables),this.map.extLst.render(e,t),t.rels&&t.rels.forEach((t=>{t.Type===o.VmlDrawing&&e.leafNode("legacyDrawing",{"r:id":t.Id})})),e.closeNode()}parseOpen(e){return this.parser?(this.parser.parseOpen(e),!0):"worksheet"===e.name?(n.each(this.map,(e=>{e.reset()})),!0):(this.map[e.name]&&!this.ignoreNodes.includes(e.name)&&(this.parser=this.map[e.name],this.parser.parseOpen(e)),!0)}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.parser=void 0),!0;if("worksheet"===e){const e=this.map.sheetFormatPr.model||{};this.map.sheetPr.model&&this.map.sheetPr.model.tabColor&&(e.tabColor=this.map.sheetPr.model.tabColor),this.map.sheetPr.model&&this.map.sheetPr.model.outlineProperties&&(e.outlineProperties=this.map.sheetPr.model.outlineProperties);const t={fitToPage:this.map.sheetPr.model&&this.map.sheetPr.model.pageSetup&&this.map.sheetPr.model.pageSetup.fitToPage||!1,margins:this.map.pageMargins.model},r=Object.assign(t,this.map.pageSetup.model,this.map.printOptions.model),n=j(this.map.conditionalFormatting.model,this.map.extLst.model&&this.map.extLst.model["x14:conditionalFormattings"]);return this.model={dimensions:this.map.dimension.model,cols:this.map.cols.model,rows:this.map.sheetData.model,mergeCells:this.map.mergeCells.model,hyperlinks:this.map.hyperlinks.model,dataValidations:this.map.dataValidations.model,properties:e,views:this.map.sheetViews.model,pageSetup:r,headerFooter:this.map.headerFooter.model,background:this.map.picture.model,drawing:this.map.drawing.model,tables:this.map.tableParts.model,conditionalFormattings:n},this.map.autoFilter.model&&(this.model.autoFilter=this.map.autoFilter.model),this.map.sheetProtection.model&&(this.model.sheetProtection=this.map.sheetProtection.model),!1}return!0}reconcile(e,t){const r=(e.relationships||[]).reduce(((r,n)=>{if(r[n.Id]=n,n.Type===o.Comments&&(e.comments=t.comments[n.Target].comments),n.Type===o.VmlDrawing&&e.comments&&e.comments.length){const r=t.vmlDrawings[n.Target].comments;e.comments.forEach(((e,t)=>{e.note=Object.assign({},e.note,r[t])}))}return r}),{});if(t.commentsMap=(e.comments||[]).reduce(((e,t)=>(t.ref&&(e[t.ref]=t),e)),{}),t.hyperlinkMap=(e.hyperlinks||[]).reduce(((e,t)=>(t.rId&&(e[t.address]=r[t.rId].Target),e)),{}),t.formulae={},e.rows=e.rows&&e.rows.filter(Boolean)||[],e.rows.forEach((e=>{e.cells=e.cells&&e.cells.filter(Boolean)||[]})),this.map.cols.reconcile(e.cols,t),this.map.sheetData.reconcile(e.rows,t),this.map.conditionalFormatting.reconcile(e.conditionalFormattings,t),e.media=[],e.drawing){const n=r[e.drawing.rId].Target.match(/\/drawings\/([a-zA-Z0-9]+)[.][a-zA-Z]{3,4}$/);if(n){const r=n[1];t.drawings[r].anchors.forEach((t=>{if(t.medium){const r={type:"image",imageId:t.medium.index,range:t.range,hyperlinks:t.picture.hyperlinks};e.media.push(r)}}))}}const n=e.background&&r[e.background.rId];if(n){const r=n.Target.split("/media/")[1],i=t.mediaIndex&&t.mediaIndex[r];void 0!==i&&e.media.push({type:"background",imageId:i})}e.tables=(e.tables||[]).map((e=>{const n=r[e.rId];return t.tables[n.Target]})),delete e.relationships,delete e.hyperlinks,delete e.comments}}O.WORKSHEET_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x14ac","xmlns:x14ac":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"},t.exports=O},{"../../../utils/col-cache":19,"../../../utils/under-dash":26,"../../../utils/xml-stream":28,"../../rel-type":31,"../base-xform":32,"../list-xform":71,"./auto-filter-xform":72,"./cf/conditional-formattings-xform":87,"./col-xform":92,"./data-validations-xform":93,"./dimension-xform":94,"./drawing-xform":95,"./ext-lst-xform":96,"./header-footer-xform":97,"./hyperlink-xform":98,"./merge-cell-xform":99,"./merges":100,"./page-margins-xform":103,"./page-setup-xform":105,"./picture-xform":106,"./print-options-xform":107,"./row-breaks-xform":108,"./row-xform":109,"./sheet-format-properties-xform":110,"./sheet-properties-xform":111,"./sheet-protection-xform":112,"./sheet-view-xform":113,"./table-part-xform":114}],116:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{constructor(e){super(),this.tag=e.tag,this.attr=e.attr}render(e,t){t&&(e.openNode(this.tag),e.closeNode())}parseOpen(e){e.name===this.tag&&(this.model=!0)}parseText(){}parseClose(){return!1}}},{"../base-xform":32}],117:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{constructor(e){super(),this.tag=e.tag,this.attr=e.attr,this.attrs=e.attrs,this._format=e.format||function(e){try{return Number.isNaN(e.getTime())?"":e.toISOString()}catch(t){return""}},this._parse=e.parse||function(e){return new Date(e)}}render(e,t){t&&(e.openNode(this.tag),this.attrs&&e.addAttributes(this.attrs),this.attr?e.addAttribute(this.attr,this._format(t)):e.writeText(this._format(t)),e.closeNode())}parseOpen(e){e.name===this.tag&&(this.attr?this.model=this._parse(e.attributes[this.attr]):this.text=[])}parseText(e){this.attr||this.text.push(e)}parseClose(){return this.attr||(this.model=this._parse(this.text.join(""))),!1}}},{"../base-xform":32}],118:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{constructor(e){super(),this.tag=e.tag,this.attr=e.attr,this.attrs=e.attrs,this.zero=e.zero}render(e,t){(t||this.zero)&&(e.openNode(this.tag),this.attrs&&e.addAttributes(this.attrs),this.attr?e.addAttribute(this.attr,t):e.writeText(t),e.closeNode())}parseOpen(e){return e.name===this.tag&&(this.attr?this.model=parseInt(e.attributes[this.attr],10):this.text=[],!0)}parseText(e){this.attr||this.text.push(e)}parseClose(){return this.attr||(this.model=parseInt(this.text.join("")||0,10)),!1}}},{"../base-xform":32}],119:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{constructor(e){super(),this.tag=e.tag,this.attr=e.attr,this.attrs=e.attrs}render(e,t){void 0!==t&&(e.openNode(this.tag),this.attrs&&e.addAttributes(this.attrs),this.attr?e.addAttribute(this.attr,t):e.writeText(t),e.closeNode())}parseOpen(e){e.name===this.tag&&(this.attr?this.model=e.attributes[this.attr]:this.text=[])}parseText(e){this.attr||this.text.push(e)}parseClose(){return this.attr||(this.model=this.text.join("")),!1}}},{"../base-xform":32}],120:[function(e,t,r){const n=e("./base-xform"),i=e("../../utils/xml-stream");t.exports=class extends n{constructor(e){super(),this._model=e}render(e){if(!this._xml){const e=new i;!function e(t,r){t.openNode(r.tag,r.$),r.c&&r.c.forEach((r=>{e(t,r)})),r.t&&t.writeText(r.t),t.closeNode()}(e,this._model),this._xml=e.xml}e.writeXml(this._xml)}parseOpen(){return!0}parseText(){}parseClose(e){return e!==this._model.tag}}},{"../../utils/xml-stream":28,"./base-xform":32}],121:[function(e,t,r){const n=e("./text-xform"),i=e("./rich-text-xform"),s=e("../base-xform");t.exports=class extends s{constructor(){super(),this.map={r:new i,t:new n}}get tag(){return"rPh"}render(e,t){if(e.openNode(this.tag,{sb:t.sb||0,eb:t.eb||0}),t&&t.hasOwnProperty("richText")&&t.richText){const{r:r}=this.map;t.richText.forEach((t=>{r.render(e,t)}))}else t&&this.map.t.render(e,t.text);e.closeNode()}parseOpen(e){const{name:t}=e;return this.parser?(this.parser.parseOpen(e),!0):t===this.tag?(this.model={sb:parseInt(e.attributes.sb,10),eb:parseInt(e.attributes.eb,10)},!0):(this.parser=this.map[t],!!this.parser&&(this.parser.parseOpen(e),!0))}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser){if(!this.parser.parseClose(e)){switch(e){case"r":{let e=this.model.richText;e||(e=this.model.richText=[]),e.push(this.parser.model);break}case"t":this.model.text=this.parser.model}this.parser=void 0}return!0}return e!==this.tag}}},{"../base-xform":32,"./rich-text-xform":122,"./text-xform":125}],122:[function(e,t,r){const n=e("./text-xform"),i=e("../style/font-xform"),s=e("../base-xform");class o extends s{constructor(e){super(),this.model=e}get tag(){return"r"}get textXform(){return this._textXform||(this._textXform=new n)}get fontXform(){return this._fontXform||(this._fontXform=new i(o.FONT_OPTIONS))}render(e,t){t=t||this.model,e.openNode("r"),t.font&&this.fontXform.render(e,t.font),this.textXform.render(e,t.text),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case"r":return this.model={},!0;case"t":return this.parser=this.textXform,this.parser.parseOpen(e),!0;case"rPr":return this.parser=this.fontXform,this.parser.parseOpen(e),!0;default:return!1}}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){switch(e){case"r":return!1;case"t":return this.model.text=this.parser.model,this.parser=void 0,!0;case"rPr":return this.model.font=this.parser.model,this.parser=void 0,!0;default:return this.parser&&this.parser.parseClose(e),!0}}}o.FONT_OPTIONS={tagName:"rPr",fontNameTag:"rFont"},t.exports=o},{"../base-xform":32,"../style/font-xform":131,"./text-xform":125}],123:[function(e,t,r){const n=e("./text-xform"),i=e("./rich-text-xform"),s=e("./phonetic-text-xform"),o=e("../base-xform");t.exports=class extends o{constructor(e){super(),this.model=e,this.map={r:new i,t:new n,rPh:new s}}get tag(){return"si"}render(e,t){e.openNode(this.tag),t&&t.hasOwnProperty("richText")&&t.richText?t.richText.length?t.richText.forEach((t=>{this.map.r.render(e,t)})):this.map.t.render(e,""):null!=t&&this.map.t.render(e,t),e.closeNode()}parseOpen(e){const{name:t}=e;return this.parser?(this.parser.parseOpen(e),!0):t===this.tag?(this.model={},!0):(this.parser=this.map[t],!!this.parser&&(this.parser.parseOpen(e),!0))}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser){if(!this.parser.parseClose(e)){switch(e){case"r":{let e=this.model.richText;e||(e=this.model.richText=[]),e.push(this.parser.model);break}case"t":this.model=this.parser.model}this.parser=void 0}return!0}return e!==this.tag}}},{"../base-xform":32,"./phonetic-text-xform":121,"./rich-text-xform":122,"./text-xform":125}],124:[function(e,t,r){const n=e("../../../utils/xml-stream"),i=e("../base-xform"),s=e("./shared-string-xform");t.exports=class extends i{constructor(e){super(),this.model=e||{values:[],count:0},this.hash=Object.create(null),this.rich=Object.create(null)}get sharedStringXform(){return this._sharedStringXform||(this._sharedStringXform=new s)}get values(){return this.model.values}get uniqueCount(){return this.model.values.length}get count(){return this.model.count}getString(e){return this.model.values[e]}add(e){return e.richText?this.addRichText(e):this.addText(e)}addText(e){let t=this.hash[e];return void 0===t&&(t=this.hash[e]=this.model.values.length,this.model.values.push(e)),this.model.count++,t}addRichText(e){const t=this.sharedStringXform.toXml(e);let r=this.rich[t];return void 0===r&&(r=this.rich[t]=this.model.values.length,this.model.values.push(e)),this.model.count++,r}render(e,t){t=t||this._values,e.openXml(n.StdDocAttributes),e.openNode("sst",{xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main",count:t.count,uniqueCount:t.values.length});const r=this.sharedStringXform;t.values.forEach((t=>{r.render(e,t)})),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case"sst":return!0;case"si":return this.parser=this.sharedStringXform,this.parser.parseOpen(e),!0;default:throw new Error("Unexpected xml node in parseOpen: "+JSON.stringify(e))}}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.model.values.push(this.parser.model),this.model.count++,this.parser=void 0),!0;if("sst"===e)return!1;throw new Error("Unexpected xml node in parseClose: "+e)}}},{"../../../utils/xml-stream":28,"../base-xform":32,"./shared-string-xform":123}],125:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{get tag(){return"t"}render(e,t){e.openNode("t"),/^\s|\n|\s$/.test(t)&&e.addAttribute("xml:space","preserve"),e.writeText(t),e.closeNode()}get model(){return this._text.join("").replace(/_x([0-9A-F]{4})_/g,((e,t)=>String.fromCharCode(parseInt(t,16))))}parseOpen(e){return"t"===e.name&&(this._text=[],!0)}parseText(e){this._text.push(e)}parseClose(){return!1}}},{"../base-xform":32}],126:[function(e,t,r){const n=e("../../../doc/enums"),i=e("../../../utils/utils"),s=e("../base-xform"),o={horizontalValues:["left","center","right","fill","centerContinuous","distributed","justify"].reduce(((e,t)=>(e[t]=!0,e)),{}),horizontal(e){return this.horizontalValues[e]?e:void 0},verticalValues:["top","middle","bottom","distributed","justify"].reduce(((e,t)=>(e[t]=!0,e)),{}),vertical(e){return"middle"===e?"center":this.verticalValues[e]?e:void 0},wrapText:e=>!!e||void 0,shrinkToFit:e=>!!e||void 0,textRotation:e=>"vertical"===e||(e=i.validInt(e))>=-90&&e<=90?e:void 0,indent:e=>(e=i.validInt(e),Math.max(0,e)),readingOrder(e){switch(e){case"ltr":return n.ReadingOrder.LeftToRight;case"rtl":return n.ReadingOrder.RightToLeft;default:return}}},a={toXml(e){if(e=o.textRotation(e)){if("vertical"===e)return 255;const t=Math.round(e);if(t>=0&&t<=90)return t;if(t<0&&t>=-90)return 90-t}},toModel(e){const t=i.validInt(e);if(void 0!==t){if(255===t)return"vertical";if(t>=0&&t<=90)return t;if(t>90&&t<=180)return 90-t}}};t.exports=class extends s{get tag(){return"alignment"}render(e,t){e.addRollback(),e.openNode("alignment");let r=!1;function n(t,n){n&&(e.addAttribute(t,n),r=!0)}n("horizontal",o.horizontal(t.horizontal)),n("vertical",o.vertical(t.vertical)),n("wrapText",!!o.wrapText(t.wrapText)&&"1"),n("shrinkToFit",!!o.shrinkToFit(t.shrinkToFit)&&"1"),n("indent",o.indent(t.indent)),n("textRotation",a.toXml(t.textRotation)),n("readingOrder",o.readingOrder(t.readingOrder)),e.closeNode(),r?e.commit():e.rollback()}parseOpen(e){const t={};let r=!1;function n(e,n,i){e&&(t[n]=i,r=!0)}n(e.attributes.horizontal,"horizontal",e.attributes.horizontal),n(e.attributes.vertical,"vertical","center"===e.attributes.vertical?"middle":e.attributes.vertical),n(e.attributes.wrapText,"wrapText",i.parseBoolean(e.attributes.wrapText)),n(e.attributes.shrinkToFit,"shrinkToFit",i.parseBoolean(e.attributes.shrinkToFit)),n(e.attributes.indent,"indent",parseInt(e.attributes.indent,10)),n(e.attributes.textRotation,"textRotation",a.toModel(e.attributes.textRotation)),n(e.attributes.readingOrder,"readingOrder","2"===e.attributes.readingOrder?"rtl":"ltr"),this.model=r?t:null}parseText(){}parseClose(){return!1}}},{"../../../doc/enums":7,"../../../utils/utils":27,"../base-xform":32}],127:[function(e,t,r){const n=e("../base-xform"),i=e("../../../utils/utils"),s=e("./color-xform");class o extends n{constructor(e){super(),this.name=e,this.map={color:new s}}get tag(){return this.name}render(e,t,r){const n=t&&t.color||r||this.defaultColor;e.openNode(this.name),t&&t.style&&(e.addAttribute("style",t.style),n&&this.map.color.render(e,n)),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case this.name:{const{style:t}=e.attributes;return this.model=t?{style:t}:void 0,!0}case"color":return this.parser=this.map.color,this.parser.parseOpen(e),!0;default:return!1}}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){return this.parser?(this.parser.parseClose(e)||(this.parser=void 0),!0):(e===this.name&&this.map.color.model&&(this.model||(this.model={}),this.model.color=this.map.color.model),!1)}validStyle(e){return o.validStyleValues[e]}}o.validStyleValues=["thin","dashed","dotted","dashDot","hair","dashDotDot","slantDashDot","mediumDashed","mediumDashDotDot","mediumDashDot","medium","double","thick"].reduce(((e,t)=>(e[t]=!0,e)),{}),t.exports=class extends n{constructor(){super(),this.map={top:new o("top"),left:new o("left"),bottom:new o("bottom"),right:new o("right"),diagonal:new o("diagonal")}}render(e,t){const{color:r}=t;function n(n,i){n&&!n.color&&t.color&&(n={...n,color:t.color}),i.render(e,n,r)}e.openNode("border"),t.diagonal&&t.diagonal.style&&(t.diagonal.up&&e.addAttribute("diagonalUp","1"),t.diagonal.down&&e.addAttribute("diagonalDown","1")),n(t.left,this.map.left),n(t.right,this.map.right),n(t.top,this.map.top),n(t.bottom,this.map.bottom),n(t.diagonal,this.map.diagonal),e.closeNode()}parseOpen(e){return this.parser?(this.parser.parseOpen(e),!0):"border"===e.name?(this.reset(),this.diagonalUp=i.parseBoolean(e.attributes.diagonalUp),this.diagonalDown=i.parseBoolean(e.attributes.diagonalDown),!0):(this.parser=this.map[e.name],!!this.parser&&(this.parser.parseOpen(e),!0))}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.parser=void 0),!0;if("border"===e){const e=this.model={},t=function(t,r,n){r&&(n&&Object.assign(r,n),e[t]=r)};t("left",this.map.left.model),t("right",this.map.right.model),t("top",this.map.top.model),t("bottom",this.map.bottom.model),t("diagonal",this.map.diagonal.model,{up:this.diagonalUp,down:this.diagonalDown})}return!1}}},{"../../../utils/utils":27,"../base-xform":32,"./color-xform":128}],128:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{constructor(e){super(),this.name=e||"color"}get tag(){return this.name}render(e,t){return!!t&&(e.openNode(this.name),t.argb?e.addAttribute("rgb",t.argb):void 0!==t.theme?(e.addAttribute("theme",t.theme),void 0!==t.tint&&e.addAttribute("tint",t.tint)):void 0!==t.indexed?e.addAttribute("indexed",t.indexed):e.addAttribute("auto","1"),e.closeNode(),!0)}parseOpen(e){return e.name===this.name&&(e.attributes.rgb?this.model={argb:e.attributes.rgb}:e.attributes.theme?(this.model={theme:parseInt(e.attributes.theme,10)},e.attributes.tint&&(this.model.tint=parseFloat(e.attributes.tint))):e.attributes.indexed?this.model={indexed:parseInt(e.attributes.indexed,10)}:this.model=void 0,!0)}parseText(){}parseClose(){return!1}}},{"../base-xform":32}],129:[function(e,t,r){const n=e("../base-xform"),i=e("./alignment-xform"),s=e("./border-xform"),o=e("./fill-xform"),a=e("./font-xform"),l=e("./numfmt-xform"),c=e("./protection-xform");t.exports=class extends n{constructor(){super(),this.map={alignment:new i,border:new s,fill:new o,font:new a,numFmt:new l,protection:new c}}get tag(){return"dxf"}render(e,t){if(e.openNode(this.tag),t.font&&this.map.font.render(e,t.font),t.numFmt&&t.numFmtId){const r={id:t.numFmtId,formatCode:t.numFmt};this.map.numFmt.render(e,r)}t.fill&&this.map.fill.render(e,t.fill),t.alignment&&this.map.alignment.render(e,t.alignment),t.border&&this.map.border.render(e,t.border),t.protection&&this.map.protection.render(e,t.protection),e.closeNode()}parseOpen(e){return this.parser?(this.parser.parseOpen(e),!0):e.name===this.tag?(this.reset(),!0):(this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e),!0)}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){return this.parser?(this.parser.parseClose(e)||(this.parser=void 0),!0):e!==this.tag||(this.model={alignment:this.map.alignment.model,border:this.map.border.model,fill:this.map.fill.model,font:this.map.font.model,numFmt:this.map.numFmt.model,protection:this.map.protection.model},!1)}}},{"../base-xform":32,"./alignment-xform":126,"./border-xform":127,"./fill-xform":130,"./font-xform":131,"./numfmt-xform":132,"./protection-xform":133}],130:[function(e,t,r){const n=e("../base-xform"),i=e("./color-xform");class s extends n{constructor(){super(),this.map={color:new i}}get tag(){return"stop"}render(e,t){e.openNode("stop"),e.addAttribute("position",t.position),this.map.color.render(e,t.color),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case"stop":return this.model={position:parseFloat(e.attributes.position)},!0;case"color":return this.parser=this.map.color,this.parser.parseOpen(e),!0;default:return!1}}parseText(){}parseClose(e){return!!this.parser&&(this.parser.parseClose(e)||(this.model.color=this.parser.model,this.parser=void 0),!0)}}class o extends n{constructor(){super(),this.map={fgColor:new i("fgColor"),bgColor:new i("bgColor")}}get name(){return"pattern"}get tag(){return"patternFill"}render(e,t){e.openNode("patternFill"),e.addAttribute("patternType",t.pattern),t.fgColor&&this.map.fgColor.render(e,t.fgColor),t.bgColor&&this.map.bgColor.render(e,t.bgColor),e.closeNode()}parseOpen(e){return this.parser?(this.parser.parseOpen(e),!0):"patternFill"===e.name?(this.model={type:"pattern",pattern:e.attributes.patternType},!0):(this.parser=this.map[e.name],!!this.parser&&(this.parser.parseOpen(e),!0))}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){return!!this.parser&&(this.parser.parseClose(e)||(this.parser.model&&(this.model[e]=this.parser.model),this.parser=void 0),!0)}}class a extends n{constructor(){super(),this.map={stop:new s}}get name(){return"gradient"}get tag(){return"gradientFill"}render(e,t){switch(e.openNode("gradientFill"),t.gradient){case"angle":e.addAttribute("degree",t.degree);break;case"path":e.addAttribute("type","path"),t.center.left&&(e.addAttribute("left",t.center.left),void 0===t.center.right&&e.addAttribute("right",t.center.left)),t.center.right&&e.addAttribute("right",t.center.right),t.center.top&&(e.addAttribute("top",t.center.top),void 0===t.center.bottom&&e.addAttribute("bottom",t.center.top)),t.center.bottom&&e.addAttribute("bottom",t.center.bottom)}const r=this.map.stop;t.stops.forEach((t=>{r.render(e,t)})),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case"gradientFill":{const t=this.model={stops:[]};return e.attributes.degree?(t.gradient="angle",t.degree=parseInt(e.attributes.degree,10)):"path"===e.attributes.type&&(t.gradient="path",t.center={left:e.attributes.left?parseFloat(e.attributes.left):0,top:e.attributes.top?parseFloat(e.attributes.top):0},e.attributes.right!==e.attributes.left&&(t.center.right=e.attributes.right?parseFloat(e.attributes.right):0),e.attributes.bottom!==e.attributes.top&&(t.center.bottom=e.attributes.bottom?parseFloat(e.attributes.bottom):0)),!0}case"stop":return this.parser=this.map.stop,this.parser.parseOpen(e),!0;default:return!1}}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){return!!this.parser&&(this.parser.parseClose(e)||(this.model.stops.push(this.parser.model),this.parser=void 0),!0)}}class l extends n{constructor(){super(),this.map={patternFill:new o,gradientFill:new a}}get tag(){return"fill"}render(e,t){switch(e.addRollback(),e.openNode("fill"),t.type){case"pattern":this.map.patternFill.render(e,t);break;case"gradient":this.map.gradientFill.render(e,t);break;default:return void e.rollback()}e.closeNode(),e.commit()}parseOpen(e){return this.parser?(this.parser.parseOpen(e),!0):"fill"===e.name?(this.model={},!0):(this.parser=this.map[e.name],!!this.parser&&(this.parser.parseOpen(e),!0))}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){return!!this.parser&&(this.parser.parseClose(e)||(this.model=this.parser.model,this.model.type=this.parser.name,this.parser=void 0),!0)}validStyle(e){return l.validPatternValues[e]}}l.validPatternValues=["none","solid","darkVertical","darkGray","mediumGray","lightGray","gray125","gray0625","darkHorizontal","darkVertical","darkDown","darkUp","darkGrid","darkTrellis","lightHorizontal","lightVertical","lightDown","lightUp","lightGrid","lightTrellis","lightGrid"].reduce(((e,t)=>(e[t]=!0,e)),{}),l.StopXform=s,l.PatternFillXform=o,l.GradientFillXform=a,t.exports=l},{"../base-xform":32,"./color-xform":128}],131:[function(e,t,r){const n=e("./color-xform"),i=e("../simple/boolean-xform"),s=e("../simple/integer-xform"),o=e("../simple/string-xform"),a=e("./underline-xform"),l=e("../../../utils/under-dash"),c=e("../base-xform");class h extends c{constructor(e){super(),this.options=e||h.OPTIONS,this.map={b:{prop:"bold",xform:new i({tag:"b",attr:"val"})},i:{prop:"italic",xform:new i({tag:"i",attr:"val"})},u:{prop:"underline",xform:new a},charset:{prop:"charset",xform:new s({tag:"charset",attr:"val"})},color:{prop:"color",xform:new n},condense:{prop:"condense",xform:new i({tag:"condense",attr:"val"})},extend:{prop:"extend",xform:new i({tag:"extend",attr:"val"})},family:{prop:"family",xform:new s({tag:"family",attr:"val"})},outline:{prop:"outline",xform:new i({tag:"outline",attr:"val"})},vertAlign:{prop:"vertAlign",xform:new o({tag:"vertAlign",attr:"val"})},scheme:{prop:"scheme",xform:new o({tag:"scheme",attr:"val"})},shadow:{prop:"shadow",xform:new i({tag:"shadow",attr:"val"})},strike:{prop:"strike",xform:new i({tag:"strike",attr:"val"})},sz:{prop:"size",xform:new s({tag:"sz",attr:"val"})}},this.map[this.options.fontNameTag]={prop:"name",xform:new o({tag:this.options.fontNameTag,attr:"val"})}}get tag(){return this.options.tagName}render(e,t){const{map:r}=this;e.openNode(this.options.tagName),l.each(this.map,((n,i)=>{r[i].xform.render(e,t[n.prop])})),e.closeNode()}parseOpen(e){return this.parser?(this.parser.parseOpen(e),!0):this.map[e.name]?(this.parser=this.map[e.name].xform,this.parser.parseOpen(e)):e.name===this.options.tagName&&(this.model={},!0)}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser&&!this.parser.parseClose(e)){const t=this.map[e];return this.parser.model&&(this.model[t.prop]=this.parser.model),this.parser=void 0,!0}return e!==this.options.tagName}}h.OPTIONS={tagName:"font",fontNameTag:"name"},t.exports=h},{"../../../utils/under-dash":26,"../base-xform":32,"../simple/boolean-xform":116,"../simple/integer-xform":118,"../simple/string-xform":119,"./color-xform":128,"./underline-xform":136}],132:[function(e,t,r){const n=e("../../../utils/under-dash"),i=e("../../defaultnumformats"),s=e("../base-xform"),o=function(){const e={};return n.each(i,((t,r)=>{t.f&&(e[t.f]=parseInt(r,10))})),e}();class a extends s{constructor(e,t){super(),this.id=e,this.formatCode=t}get tag(){return"numFmt"}render(e,t){e.leafNode("numFmt",{numFmtId:t.id,formatCode:t.formatCode})}parseOpen(e){return"numFmt"===e.name&&(this.model={id:parseInt(e.attributes.numFmtId,10),formatCode:e.attributes.formatCode.replace(/[\\](.)/g,"$1")},!0)}parseText(){}parseClose(){return!1}}a.getDefaultFmtId=function(e){return o[e]},a.getDefaultFmtCode=function(e){return i[e]&&i[e].f},t.exports=a},{"../../../utils/under-dash":26,"../../defaultnumformats":30,"../base-xform":32}],133:[function(e,t,r){const n=e("../base-xform"),i={boolean:(e,t)=>void 0===e?t:e};t.exports=class extends n{get tag(){return"protection"}render(e,t){e.addRollback(),e.openNode("protection");let r=!1;function n(t,n){void 0!==n&&(e.addAttribute(t,n),r=!0)}n("locked",i.boolean(t.locked,!0)?void 0:"0"),n("hidden",i.boolean(t.hidden,!1)?"1":void 0),e.closeNode(),r?e.commit():e.rollback()}parseOpen(e){const t={locked:!("0"===e.attributes.locked),hidden:"1"===e.attributes.hidden},r=!t.locked||t.hidden;this.model=r?t:null}parseText(){}parseClose(){return!1}}},{"../base-xform":32}],134:[function(e,t,r){const n=e("../base-xform"),i=e("./alignment-xform"),s=e("./protection-xform");t.exports=class extends n{constructor(e){super(),this.xfId=!(!e||!e.xfId),this.map={alignment:new i,protection:new s}}get tag(){return"xf"}render(e,t){e.openNode("xf",{numFmtId:t.numFmtId||0,fontId:t.fontId||0,fillId:t.fillId||0,borderId:t.borderId||0}),this.xfId&&e.addAttribute("xfId",t.xfId||0),t.numFmtId&&e.addAttribute("applyNumberFormat","1"),t.fontId&&e.addAttribute("applyFont","1"),t.fillId&&e.addAttribute("applyFill","1"),t.borderId&&e.addAttribute("applyBorder","1"),t.alignment&&e.addAttribute("applyAlignment","1"),t.protection&&e.addAttribute("applyProtection","1"),t.alignment&&this.map.alignment.render(e,t.alignment),t.protection&&this.map.protection.render(e,t.protection),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;switch(e.name){case"xf":return this.model={numFmtId:parseInt(e.attributes.numFmtId,10),fontId:parseInt(e.attributes.fontId,10),fillId:parseInt(e.attributes.fillId,10),borderId:parseInt(e.attributes.borderId,10)},this.xfId&&(this.model.xfId=parseInt(e.attributes.xfId,10)),!0;case"alignment":return this.parser=this.map.alignment,this.parser.parseOpen(e),!0;case"protection":return this.parser=this.map.protection,this.parser.parseOpen(e),!0;default:return!1}}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){return this.parser?(this.parser.parseClose(e)||(this.map.protection===this.parser?this.model.protection=this.parser.model:this.model.alignment=this.parser.model,this.parser=void 0),!0):"xf"!==e}}},{"../base-xform":32,"./alignment-xform":126,"./protection-xform":133}],135:[function(e,t,r){const n=e("../../../doc/enums"),i=e("../../../utils/xml-stream"),s=e("../base-xform"),o=e("../static-xform"),a=e("../list-xform"),l=e("./font-xform"),c=e("./fill-xform"),h=e("./border-xform"),u=e("./numfmt-xform"),f=e("./style-xform"),d=e("./dxf-xform");class p extends s{constructor(e){super(),this.map={numFmts:new a({tag:"numFmts",count:!0,childXform:new u}),fonts:new a({tag:"fonts",count:!0,childXform:new l,$:{"x14ac:knownFonts":1}}),fills:new a({tag:"fills",count:!0,childXform:new c}),borders:new a({tag:"borders",count:!0,childXform:new h}),cellStyleXfs:new a({tag:"cellStyleXfs",count:!0,childXform:new f}),cellXfs:new a({tag:"cellXfs",count:!0,childXform:new f({xfId:!0})}),dxfs:new a({tag:"dxfs",always:!0,count:!0,childXform:new d}),numFmt:new u,font:new l,fill:new c,border:new h,style:new f({xfId:!0}),cellStyles:p.STATIC_XFORMS.cellStyles,tableStyles:p.STATIC_XFORMS.tableStyles,extLst:p.STATIC_XFORMS.extLst},e&&this.init()}initIndex(){this.index={style:{},numFmt:{},numFmtNextId:164,font:{},border:{},fill:{}}}init(){this.model={styles:[],numFmts:[],fonts:[],borders:[],fills:[],dxfs:[]},this.initIndex(),this._addBorder({}),this._addStyle({numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}),this._addFill({type:"pattern",pattern:"none"}),this._addFill({type:"pattern",pattern:"gray125"}),this.weakMap=new WeakMap}render(e,t){t=t||this.model,e.openXml(i.StdDocAttributes),e.openNode("styleSheet",p.STYLESHEET_ATTRIBUTES),this.index?(t.numFmts&&t.numFmts.length&&(e.openNode("numFmts",{count:t.numFmts.length}),t.numFmts.forEach((t=>{e.writeXml(t)})),e.closeNode()),t.fonts.length||this._addFont({size:11,color:{theme:1},name:"Calibri",family:2,scheme:"minor"}),e.openNode("fonts",{count:t.fonts.length,"x14ac:knownFonts":1}),t.fonts.forEach((t=>{e.writeXml(t)})),e.closeNode(),e.openNode("fills",{count:t.fills.length}),t.fills.forEach((t=>{e.writeXml(t)})),e.closeNode(),e.openNode("borders",{count:t.borders.length}),t.borders.forEach((t=>{e.writeXml(t)})),e.closeNode(),this.map.cellStyleXfs.render(e,[{numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}]),e.openNode("cellXfs",{count:t.styles.length}),t.styles.forEach((t=>{e.writeXml(t)})),e.closeNode()):(this.map.numFmts.render(e,t.numFmts),this.map.fonts.render(e,t.fonts),this.map.fills.render(e,t.fills),this.map.borders.render(e,t.borders),this.map.cellStyleXfs.render(e,[{numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}]),this.map.cellXfs.render(e,t.styles)),p.STATIC_XFORMS.cellStyles.render(e),this.map.dxfs.render(e,t.dxfs),p.STATIC_XFORMS.tableStyles.render(e),p.STATIC_XFORMS.extLst.render(e),e.closeNode()}parseOpen(e){return this.parser?(this.parser.parseOpen(e),!0):"styleSheet"===e.name?(this.initIndex(),!0):(this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e),!0)}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.parser=void 0),!0;if("styleSheet"===e){this.model={};const e=(e,t)=>{t.model&&t.model.length&&(this.model[e]=t.model)};if(e("numFmts",this.map.numFmts),e("fonts",this.map.fonts),e("fills",this.map.fills),e("borders",this.map.borders),e("styles",this.map.cellXfs),e("dxfs",this.map.dxfs),this.index={model:[],numFmt:[]},this.model.numFmts){const e=this.index.numFmt;this.model.numFmts.forEach((t=>{e[t.id]=t.formatCode}))}return!1}return!0}addStyleModel(e,t){if(!e)return 0;if(this.model.fonts.length||this._addFont({size:11,color:{theme:1},name:"Calibri",family:2,scheme:"minor"}),this.weakMap&&this.weakMap.has(e))return this.weakMap.get(e);const r={};if(t=t||n.ValueType.Number,e.numFmt)r.numFmtId=this._addNumFmtStr(e.numFmt);else switch(t){case n.ValueType.Number:r.numFmtId=this._addNumFmtStr("General");break;case n.ValueType.Date:r.numFmtId=this._addNumFmtStr("mm-dd-yy")}e.font&&(r.fontId=this._addFont(e.font)),e.border&&(r.borderId=this._addBorder(e.border)),e.fill&&(r.fillId=this._addFill(e.fill)),e.alignment&&(r.alignment=e.alignment),e.protection&&(r.protection=e.protection);const i=this._addStyle(r);return this.weakMap&&this.weakMap.set(e,i),i}getStyleModel(e){const t=this.model.styles[e];if(!t)return null;let r=this.index.model[e];if(r)return r;if(r=this.index.model[e]={},t.numFmtId){const e=this.index.numFmt[t.numFmtId]||u.getDefaultFmtCode(t.numFmtId);e&&(r.numFmt=e)}function n(e,t,n){if(n||0===n){const i=t[n];i&&(r[e]=i)}}return n("font",this.model.fonts,t.fontId),n("border",this.model.borders,t.borderId),n("fill",this.model.fills,t.fillId),t.alignment&&(r.alignment=t.alignment),t.protection&&(r.protection=t.protection),r}addDxfStyle(e){return e.numFmt&&(e.numFmtId=this._addNumFmtStr(e.numFmt)),this.model.dxfs.push(e),this.model.dxfs.length-1}getDxfStyle(e){return this.model.dxfs[e]}_addStyle(e){const t=this.map.style.toXml(e);let r=this.index.style[t];return void 0===r&&(r=this.index.style[t]=this.model.styles.length,this.model.styles.push(t)),r}_addNumFmtStr(e){let t=u.getDefaultFmtId(e);if(void 0!==t)return t;if(t=this.index.numFmt[e],void 0!==t)return t;t=this.index.numFmt[e]=164+this.model.numFmts.length;const r=this.map.numFmt.toXml({id:t,formatCode:e});return this.model.numFmts.push(r),t}_addFont(e){const t=this.map.font.toXml(e);let r=this.index.font[t];return void 0===r&&(r=this.index.font[t]=this.model.fonts.length,this.model.fonts.push(t)),r}_addBorder(e){const t=this.map.border.toXml(e);let r=this.index.border[t];return void 0===r&&(r=this.index.border[t]=this.model.borders.length,this.model.borders.push(t)),r}_addFill(e){const t=this.map.fill.toXml(e);let r=this.index.fill[t];return void 0===r&&(r=this.index.fill[t]=this.model.fills.length,this.model.fills.push(t)),r}}p.STYLESHEET_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x14ac x16r2","xmlns:x14ac":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac","xmlns:x16r2":"http://schemas.microsoft.com/office/spreadsheetml/2015/02/main"},p.STATIC_XFORMS={cellStyles:new o({tag:"cellStyles",$:{count:1},c:[{tag:"cellStyle",$:{name:"Normal",xfId:0,builtinId:0}}]}),dxfs:new o({tag:"dxfs",$:{count:0}}),tableStyles:new o({tag:"tableStyles",$:{count:0,defaultTableStyle:"TableStyleMedium2",defaultPivotStyle:"PivotStyleLight16"}}),extLst:new o({tag:"extLst",c:[{tag:"ext",$:{uri:"{EB79DEF2-80B8-43e5-95BD-54CBDDF9020C}","xmlns:x14":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"},c:[{tag:"x14:slicerStyles",$:{defaultSlicerStyle:"SlicerStyleLight1"}}]},{tag:"ext",$:{uri:"{9260A510-F301-46a8-8635-F512D64BE5F5}","xmlns:x15":"http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"},c:[{tag:"x15:timelineStyles",$:{defaultTimelineStyle:"TimeSlicerStyleLight1"}}]}]})},p.Mock=class extends p{constructor(){super(),this.model={styles:[{numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}],numFmts:[],fonts:[{size:11,color:{theme:1},name:"Calibri",family:2,scheme:"minor"}],borders:[{}],fills:[{type:"pattern",pattern:"none"},{type:"pattern",pattern:"gray125"}]}}parseStream(e){return e.autodrain(),Promise.resolve()}addStyleModel(e,t){return t===n.ValueType.Date?this.dateStyleId:0}get dateStyleId(){if(!this._dateStyleId){const e={numFmtId:u.getDefaultFmtId("mm-dd-yy")};this._dateStyleId=this.model.styles.length,this.model.styles.push(e)}return this._dateStyleId}getStyleModel(){return{}}},t.exports=p},{"../../../doc/enums":7,"../../../utils/xml-stream":28,"../base-xform":32,"../list-xform":71,"../static-xform":120,"./border-xform":127,"./dxf-xform":129,"./fill-xform":130,"./font-xform":131,"./numfmt-xform":132,"./style-xform":134}],136:[function(e,t,r){const n=e("../base-xform");class i extends n{constructor(e){super(),this.model=e}get tag(){return"u"}render(e,t){if(!0===(t=t||this.model))e.leafNode("u");else{const r=i.Attributes[t];r&&e.leafNode("u",r)}}parseOpen(e){"u"===e.name&&(this.model=e.attributes.val||!0)}parseText(){}parseClose(){return!1}}i.Attributes={single:{},double:{val:"double"},singleAccounting:{val:"singleAccounting"},doubleAccounting:{val:"doubleAccounting"}},t.exports=i},{"../base-xform":32}],137:[function(e,t,r){const n=e("../base-xform"),i=e("./filter-column-xform");t.exports=class extends n{constructor(){super(),this.map={filterColumn:new i}}get tag(){return"autoFilter"}prepare(e){e.columns.forEach(((e,t)=>{this.map.filterColumn.prepare(e,{index:t})}))}render(e,t){return e.openNode(this.tag,{ref:t.autoFilterRef}),t.columns.forEach((t=>{this.map.filterColumn.render(e,t)})),e.closeNode(),!0}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;if(e.name===this.tag)return this.model={autoFilterRef:e.attributes.ref,columns:[]},!0;if(this.parser=this.map[e.name],this.parser)return this.parseOpen(e),!0;throw new Error("Unexpected xml node in parseOpen: "+JSON.stringify(e))}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){if(this.parser)return this.parser.parseClose(e)||(this.model.columns.push(this.parser.model),this.parser=void 0),!0;if(e===this.tag)return!1;throw new Error("Unexpected xml node in parseClose: "+e)}}},{"../base-xform":32,"./filter-column-xform":139}],138:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{get tag(){return"customFilter"}render(e,t){e.leafNode(this.tag,{val:t.val,operator:t.operator})}parseOpen(e){return e.name===this.tag&&(this.model={val:e.attributes.val,operator:e.attributes.operator},!0)}parseText(){}parseClose(){return!1}}},{"../base-xform":32}],139:[function(e,t,r){const n=e("../base-xform"),i=e("../list-xform"),s=e("./custom-filter-xform"),o=e("./filter-xform");t.exports=class extends n{constructor(){super(),this.map={customFilters:new i({tag:"customFilters",count:!1,empty:!0,childXform:new s}),filters:new i({tag:"filters",count:!1,empty:!0,childXform:new o})}}get tag(){return"filterColumn"}prepare(e,t){e.colId=t.index.toString()}render(e,t){return t.customFilters?(e.openNode(this.tag,{colId:t.colId,hiddenButton:t.filterButton?"0":"1"}),this.map.customFilters.render(e,t.customFilters),e.closeNode(),!0):(e.leafNode(this.tag,{colId:t.colId,hiddenButton:t.filterButton?"0":"1"}),!0)}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;const{attributes:t}=e;if(e.name===this.tag)return this.model={filterButton:"0"===t.hiddenButton},!0;if(this.parser=this.map[e.name],this.parser)return this.parseOpen(e),!0;throw new Error("Unexpected xml node in parseOpen: "+JSON.stringify(e))}parseText(){}parseClose(e){return this.parser?(this.parser.parseClose(e)||(this.parser=void 0),!0):e!==this.tag||(this.model.customFilters=this.map.customFilters.model,!1)}}},{"../base-xform":32,"../list-xform":71,"./custom-filter-xform":138,"./filter-xform":140}],140:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{get tag(){return"filter"}render(e,t){e.leafNode(this.tag,{val:t.val})}parseOpen(e){return e.name===this.tag&&(this.model={val:e.attributes.val},!0)}parseText(){}parseClose(){return!1}}},{"../base-xform":32}],141:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{get tag(){return"tableColumn"}prepare(e,t){e.id=t.index+1}render(e,t){return e.leafNode(this.tag,{id:t.id.toString(),name:t.name,totalsRowLabel:t.totalsRowLabel,totalsRowFunction:t.totalsRowFunction,dxfId:t.dxfId}),!0}parseOpen(e){if(e.name===this.tag){const{attributes:t}=e;return this.model={name:t.name,totalsRowLabel:t.totalsRowLabel,totalsRowFunction:t.totalsRowFunction,dxfId:t.dxfId},!0}return!1}parseText(){}parseClose(){return!1}}},{"../base-xform":32}],142:[function(e,t,r){const n=e("../base-xform");t.exports=class extends n{get tag(){return"tableStyleInfo"}render(e,t){return e.leafNode(this.tag,{name:t.theme?t.theme:void 0,showFirstColumn:t.showFirstColumn?"1":"0",showLastColumn:t.showLastColumn?"1":"0",showRowStripes:t.showRowStripes?"1":"0",showColumnStripes:t.showColumnStripes?"1":"0"}),!0}parseOpen(e){if(e.name===this.tag){const{attributes:t}=e;return this.model={theme:t.name?t.name:null,showFirstColumn:"1"===t.showFirstColumn,showLastColumn:"1"===t.showLastColumn,showRowStripes:"1"===t.showRowStripes,showColumnStripes:"1"===t.showColumnStripes},!0}return!1}parseText(){}parseClose(){return!1}}},{"../base-xform":32}],143:[function(e,t,r){const n=e("../../../utils/xml-stream"),i=e("../base-xform"),s=e("../list-xform"),o=e("./auto-filter-xform"),a=e("./table-column-xform"),l=e("./table-style-info-xform");class c extends i{constructor(){super(),this.map={autoFilter:new o,tableColumns:new s({tag:"tableColumns",count:!0,empty:!0,childXform:new a}),tableStyleInfo:new l}}prepare(e,t){this.map.autoFilter.prepare(e),this.map.tableColumns.prepare(e.columns,t)}get tag(){return"table"}render(e,t){e.openXml(n.StdDocAttributes),e.openNode(this.tag,{...c.TABLE_ATTRIBUTES,id:t.id,name:t.name,displayName:t.displayName||t.name,ref:t.tableRef,totalsRowCount:t.totalsRow?"1":void 0,totalsRowShown:t.totalsRow?void 0:"1",headerRowCount:t.headerRow?"1":"0"}),this.map.autoFilter.render(e,t),this.map.tableColumns.render(e,t.columns),this.map.tableStyleInfo.render(e,t.style),e.closeNode()}parseOpen(e){if(this.parser)return this.parser.parseOpen(e),!0;const{name:t,attributes:r}=e;return t===this.tag?(this.reset(),this.model={name:r.name,displayName:r.displayName||r.name,tableRef:r.ref,totalsRow:"1"===r.totalsRowCount,headerRow:"1"===r.headerRowCount}):(this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e)),!0}parseText(e){this.parser&&this.parser.parseText(e)}parseClose(e){return this.parser?(this.parser.parseClose(e)||(this.parser=void 0),!0):e!==this.tag||(this.model.columns=this.map.tableColumns.model,this.map.autoFilter.model&&(this.model.autoFilterRef=this.map.autoFilter.model.autoFilterRef,this.map.autoFilter.model.columns.forEach(((e,t)=>{this.model.columns[t].filterButton=e.filterButton}))),this.model.style=this.map.tableStyleInfo.model,!1)}reconcile(e,t){e.columns.forEach((e=>{void 0!==e.dxfId&&(e.style=t.styles.getDxfStyle(e.dxfId))}))}}c.TABLE_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"xr xr3","xmlns:xr":"http://schemas.microsoft.com/office/spreadsheetml/2014/revision","xmlns:xr3":"http://schemas.microsoft.com/office/spreadsheetml/2016/revision3"},t.exports=c},{"../../../utils/xml-stream":28,"../base-xform":32,"../list-xform":71,"./auto-filter-xform":137,"./table-column-xform":141,"./table-style-info-xform":142}],144:[function(e,t,r){(function(r,n){(function(){const i=e("fs"),s=e("jszip"),{PassThrough:o}=e("readable-stream"),a=e("../utils/zip-stream"),l=e("../utils/stream-buf"),c=e("../utils/utils"),h=e("../utils/xml-stream"),{bufferToString:u}=e("../utils/browser-buffer-decode"),f=e("./xform/style/styles-xform"),d=e("./xform/core/core-xform"),p=e("./xform/strings/shared-strings-xform"),m=e("./xform/core/relationships-xform"),b=e("./xform/core/content-types-xform"),g=e("./xform/core/app-xform"),y=e("./xform/book/workbook-xform"),v=e("./xform/sheet/worksheet-xform"),w=e("./xform/drawing/drawing-xform"),_=e("./xform/table/table-xform"),x=e("./xform/comment/comments-xform"),k=e("./xform/comment/vml-notes-xform"),S=e("./xml/theme1");class C{constructor(e){this.workbook=e}async readFile(e,t){if(!(await c.fs.exists(e)))throw new Error("File not found: "+e);const r=i.createReadStream(e);try{const e=await this.read(r,t);return r.close(),e}catch(n){throw r.close(),n}}parseRels(e){return(new m).parseStream(e)}parseWorkbook(e){return(new y).parseStream(e)}parseSharedStrings(e){return(new p).parseStream(e)}reconcile(e,t){const r=new y,n=new v(t),i=new w,s=new _;r.reconcile(e);const o={media:e.media,mediaIndex:e.mediaIndex};Object.keys(e.drawings).forEach((t=>{const r=e.drawings[t],n=e.drawingRels[t];n&&(o.rels=n.reduce(((e,t)=>(e[t.Id]=t,e)),{}),(r.anchors||[]).forEach((e=>{const t=e.picture&&e.picture.hyperlinks;t&&o.rels[t.rId]&&(t.hyperlink=o.rels[t.rId].Target,delete t.rId)})),i.reconcile(r,o))}));const a={styles:e.styles};Object.values(e.tables).forEach((e=>{s.reconcile(e,a)}));const l={styles:e.styles,sharedStrings:e.sharedStrings,media:e.media,mediaIndex:e.mediaIndex,date1904:e.properties&&e.properties.date1904,drawings:e.drawings,comments:e.comments,tables:e.tables,vmlDrawings:e.vmlDrawings};e.worksheets.forEach((t=>{t.relationships=e.worksheetRels[t.sheetNo],n.reconcile(t,l)})),delete e.worksheetHash,delete e.worksheetRels,delete e.globalRels,delete e.sharedStrings,delete e.workbookRels,delete e.sheetDefs,delete e.styles,delete e.mediaIndex,delete e.drawings,delete e.drawingRels,delete e.vmlDrawings}async _processWorksheetEntry(e,t,r,n,i){const s=new v(n),o=await s.parseStream(e);o.sheetNo=r,t.worksheetHash[i]=o,t.worksheets.push(o)}async _processCommentEntry(e,t,r){const n=new x,i=await n.parseStream(e);t.comments[`../${r}.xml`]=i}async _processTableEntry(e,t,r){const n=new _,i=await n.parseStream(e);t.tables[`../tables/${r}.xml`]=i}async _processWorksheetRelsEntry(e,t,r){const n=new m,i=await n.parseStream(e);t.worksheetRels[r]=i}async _processMediaEntry(e,t,r){const n=r.lastIndexOf(".");if(n>=1){const i=r.substr(n+1),s=r.substr(0,n);await new Promise(((n,o)=>{const a=new l;a.on("finish",(()=>{t.mediaIndex[r]=t.media.length,t.mediaIndex[s]=t.media.length;const e={type:"image",name:s,extension:i,buffer:a.toBuffer()};t.media.push(e),n()})),e.on("error",(e=>{o(e)})),e.pipe(a)}))}}async _processDrawingEntry(e,t,r){const n=new w,i=await n.parseStream(e);t.drawings[r]=i}async _processDrawingRelsEntry(e,t,r){const n=new m,i=await n.parseStream(e);t.drawingRels[r]=i}async _processVmlDrawingEntry(e,t,r){const n=new k,i=await n.parseStream(e);t.vmlDrawings[`../drawings/${r}.vml`]=i}async _processThemeEntry(e,t,r){await new Promise(((n,i)=>{const s=new l;e.on("error",i),s.on("error",i),s.on("finish",(()=>{t.themes[r]=s.read().toString(),n()})),e.pipe(s)}))}createInputStream(){throw new Error("`XLSX#createInputStream` is deprecated. You should use `XLSX#read` instead. This method will be removed in version 5.0. Please follow upgrade instruction: https://github.com/exceljs/exceljs/blob/master/UPGRADE-4.0.md")}async read(e,t){!e[Symbol.asyncIterator]&&e.pipe&&(e=e.pipe(new o));const r=[];for await(const n of e)r.push(n);return this.load(n.concat(r),t)}async load(e,t){let i;i=t&&t.base64?n.from(e.toString(),"base64"):e;const a={worksheets:[],worksheetHash:{},worksheetRels:[],themes:{},media:[],mediaIndex:{},drawings:{},drawingRels:{},comments:{},tables:{},vmlDrawings:{}},l=await s.loadAsync(i);for(const n of Object.values(l.files))if(!n.dir){let e,i=n.name;if("/"===i[0]&&(i=i.substr(1)),i.match(/xl\/media\//)||i.match(/xl\/theme\/([a-zA-Z0-9]+)[.]xml/))e=new o,e.write(await n.async("nodebuffer"));else{let t;e=new o({writableObjectMode:!0,readableObjectMode:!0}),t=r.browser?u(await n.async("nodebuffer")):await n.async("string");const i=16384;for(let r=0;r{if("image"===t.type){const s=`xl/media/${t.name}.${t.extension}`;if(t.filename){const o=await(r=t.filename,new Promise(((e,t)=>{i.readFile(r,n,((r,n)=>{r?t(r):e(n)}))})));return e.append(o,{name:s})}if(t.buffer)return e.append(t.buffer,{name:s});if(t.base64){const r=t.base64,n=r.substring(r.indexOf(",")+1);return e.append(n,{name:s,base64:!0})}}var r,n;throw new Error("Unsupported media")})))}addDrawings(e,t){const r=new w,n=new m;t.worksheets.forEach((t=>{const{drawing:i}=t;if(i){r.prepare(i,{});let t=r.toXml(i);e.append(t,{name:`xl/drawings/${i.name}.xml`}),t=n.toXml(i.rels),e.append(t,{name:`xl/drawings/_rels/${i.name}.xml.rels`})}}))}addTables(e,t){const r=new _;t.worksheets.forEach((t=>{const{tables:n}=t;n.forEach((t=>{r.prepare(t,{});const n=r.toXml(t);e.append(n,{name:"xl/tables/"+t.target})}))}))}async addContentTypes(e,t){const r=(new b).toXml(t);e.append(r,{name:"[Content_Types].xml"})}async addApp(e,t){const r=(new g).toXml(t);e.append(r,{name:"docProps/app.xml"})}async addCore(e,t){const r=new d;e.append(r.toXml(t),{name:"docProps/core.xml"})}async addThemes(e,t){const r=t.themes||{theme1:S};Object.keys(r).forEach((t=>{const n=r[t],i=`xl/theme/${t}.xml`;e.append(n,{name:i})}))}async addOfficeRels(e){const t=(new m).toXml([{Id:"rId1",Type:C.RelType.OfficeDocument,Target:"xl/workbook.xml"},{Id:"rId2",Type:C.RelType.CoreProperties,Target:"docProps/core.xml"},{Id:"rId3",Type:C.RelType.ExtenderProperties,Target:"docProps/app.xml"}]);e.append(t,{name:"_rels/.rels"})}async addWorkbookRels(e,t){let r=1;const n=[{Id:"rId"+r++,Type:C.RelType.Styles,Target:"styles.xml"},{Id:"rId"+r++,Type:C.RelType.Theme,Target:"theme/theme1.xml"}];t.sharedStrings.count&&n.push({Id:"rId"+r++,Type:C.RelType.SharedStrings,Target:"sharedStrings.xml"}),t.worksheets.forEach((e=>{e.rId="rId"+r++,n.push({Id:e.rId,Type:C.RelType.Worksheet,Target:`worksheets/sheet${e.id}.xml`})}));const i=(new m).toXml(n);e.append(i,{name:"xl/_rels/workbook.xml.rels"})}async addSharedStrings(e,t){t.sharedStrings&&t.sharedStrings.count&&e.append(t.sharedStrings.xml,{name:"xl/sharedStrings.xml"})}async addStyles(e,t){const{xml:r}=t.styles;r&&e.append(r,{name:"xl/styles.xml"})}async addWorkbook(e,t){const r=new y;e.append(r.toXml(t),{name:"xl/workbook.xml"})}async addWorksheets(e,t){const r=new v,n=new m,i=new x,s=new k;t.worksheets.forEach((t=>{let o=new h;r.render(o,t),e.append(o.xml,{name:`xl/worksheets/sheet${t.id}.xml`}),t.rels&&t.rels.length&&(o=new h,n.render(o,t.rels),e.append(o.xml,{name:`xl/worksheets/_rels/sheet${t.id}.xml.rels`})),t.comments.length>0&&(o=new h,i.render(o,t),e.append(o.xml,{name:`xl/comments${t.id}.xml`}),o=new h,s.render(o,t),e.append(o.xml,{name:`xl/drawings/vmlDrawing${t.id}.vml`}))}))}_finalize(e){return new Promise(((t,r)=>{e.on("finish",(()=>{t(this)})),e.on("error",r),e.finalize()}))}prepareModel(e,t){e.creator=e.creator||"ExcelJS",e.lastModifiedBy=e.lastModifiedBy||"ExcelJS",e.created=e.created||new Date,e.modified=e.modified||new Date,e.useSharedStrings=void 0===t.useSharedStrings||t.useSharedStrings,e.useStyles=void 0===t.useStyles||t.useStyles,e.sharedStrings=new p,e.styles=e.useStyles?new f(!0):new f.Mock;const r=new y,n=new v;r.prepare(e);const i={sharedStrings:e.sharedStrings,styles:e.styles,date1904:e.properties.date1904,drawingsCount:0,media:e.media};i.drawings=e.drawings=[],i.commentRefs=e.commentRefs=[];let s=0;e.tables=[],e.worksheets.forEach((t=>{t.tables.forEach((t=>{s++,t.target=`table${s}.xml`,t.id=s,e.tables.push(t)})),n.prepare(t,i)}))}async write(e,t){t=t||{};const{model:r}=this.workbook,n=new a.ZipWriter(t.zip);return n.pipe(e),this.prepareModel(r,t),await this.addContentTypes(n,r),await this.addOfficeRels(n,r),await this.addWorkbookRels(n,r),await this.addWorksheets(n,r),await this.addSharedStrings(n,r),await this.addDrawings(n,r),await this.addTables(n,r),await Promise.all([this.addThemes(n,r),this.addStyles(n,r)]),await this.addMedia(n,r),await Promise.all([this.addApp(n,r),this.addCore(n,r)]),await this.addWorkbook(n,r),this._finalize(n)}writeFile(e,t){const r=i.createWriteStream(e);return new Promise(((e,n)=>{r.on("finish",(()=>{e()})),r.on("error",(e=>{n(e)})),this.write(r,t).then((()=>{r.end()})).catch((e=>{n(e)}))}))}async writeBuffer(e){const t=new l;return await this.write(t,e),t.read()}}C.RelType=e("./rel-type"),t.exports=C}).call(this)}).call(this,e("_process"),e("buffer").Buffer)},{"../utils/browser-buffer-decode":16,"../utils/stream-buf":24,"../utils/utils":27,"../utils/xml-stream":28,"../utils/zip-stream":29,"./rel-type":31,"./xform/book/workbook-xform":38,"./xform/comment/comments-xform":40,"./xform/comment/vml-notes-xform":45,"./xform/core/app-xform":51,"./xform/core/content-types-xform":52,"./xform/core/core-xform":53,"./xform/core/relationships-xform":55,"./xform/drawing/drawing-xform":62,"./xform/sheet/worksheet-xform":115,"./xform/strings/shared-strings-xform":124,"./xform/style/styles-xform":135,"./xform/table/table-xform":143,"./xml/theme1":145,_process:467,buffer:220,fs:216,jszip:441,"readable-stream":491}],145:[function(e,t,r){t.exports='\n '},{}],146:[function(e,t,r){(function(t){(function(){Object.defineProperty(r,"__esModule",{value:!0}),r.CsvFormatterStream=void 0;const n=e("stream"),i=e("./formatter");class s extends n.Transform{constructor(e){super({writableObjectMode:e.objectMode}),this.hasWrittenBOM=!1,this.formatterOptions=e,this.rowFormatter=new i.RowFormatter(e),this.hasWrittenBOM=!e.writeBOM}transform(e){return this.rowFormatter.rowTransform=e,this}_transform(e,r,n){let i=!1;try{this.hasWrittenBOM||(this.push(this.formatterOptions.BOM),this.hasWrittenBOM=!0),this.rowFormatter.format(e,((e,r)=>e?(i=!0,n(e)):(r&&r.forEach((e=>{this.push(t.from(e,"utf8"))})),i=!0,n())))}catch(s){if(i)throw s;n(s)}}_flush(e){this.rowFormatter.finish(((r,n)=>r?e(r):(n&&n.forEach((e=>{this.push(t.from(e,"utf8"))})),e())))}}r.CsvFormatterStream=s}).call(this)}).call(this,e("buffer").Buffer)},{"./formatter":150,buffer:220,stream:505}],147:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0}),r.FormatterOptions=void 0,r.FormatterOptions=class{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t;this.objectMode=!0,this.delimiter=",",this.rowDelimiter="\n",this.quote='"',this.escape=this.quote,this.quoteColumns=!1,this.quoteHeaders=this.quoteColumns,this.headers=null,this.includeEndRowDelimiter=!1,this.writeBOM=!1,this.BOM="\ufeff",this.alwaysWriteHeaders=!1,Object.assign(this,e||{}),void 0===(null==e?void 0:e.quoteHeaders)&&(this.quoteHeaders=this.quoteColumns),!0===(null==e?void 0:e.quote)?this.quote='"':!1===(null==e?void 0:e.quote)&&(this.quote=""),"string"!=typeof(null==e?void 0:e.escape)&&(this.escape=this.quote),this.shouldWriteHeaders=!!this.headers&&(null===(t=e.writeHeaders)||void 0===t||t),this.headers=Array.isArray(this.headers)?this.headers:null,this.escapedQuote=`${this.escape}${this.quote}`}}},{}],148:[function(e,t,r){var n=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0}),r.FieldFormatter=void 0;const i=n(e("lodash.isboolean")),s=n(e("lodash.isnil")),o=n(e("lodash.escaperegexp"));r.FieldFormatter=class{constructor(e){this._headers=null,this.formatterOptions=e,null!==e.headers&&(this.headers=e.headers),this.REPLACE_REGEXP=new RegExp(e.quote,"g");const t=`[${e.delimiter}${o.default(e.rowDelimiter)}|\r|\n]`;this.ESCAPE_REGEXP=new RegExp(t)}set headers(e){this._headers=e}shouldQuote(e,t){const r=t?this.formatterOptions.quoteHeaders:this.formatterOptions.quoteColumns;return i.default(r)?r:Array.isArray(r)?r[e]:null!==this._headers&&r[this._headers[e]]}format(e,t,r){const n=(""+(s.default(e)?"":e)).replace(/\0/g,""),{formatterOptions:i}=this;return""!==i.quote&&-1!==n.indexOf(i.quote)?this.quoteField(n.replace(this.REPLACE_REGEXP,i.escapedQuote)):-1!==n.search(this.ESCAPE_REGEXP)||this.shouldQuote(t,r)?this.quoteField(n):n}quoteField(e){const{quote:t}=this.formatterOptions;return`${t}${e}${t}`}}},{"lodash.escaperegexp":442,"lodash.isboolean":444,"lodash.isnil":447}],149:[function(e,t,r){var n=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0}),r.RowFormatter=void 0;const i=n(e("lodash.isfunction")),s=n(e("lodash.isequal")),o=e("./FieldFormatter"),a=e("../types");class l{constructor(e){this.rowCount=0,this.formatterOptions=e,this.fieldFormatter=new o.FieldFormatter(e),this.headers=e.headers,this.shouldWriteHeaders=e.shouldWriteHeaders,this.hasWrittenHeaders=!1,null!==this.headers&&(this.fieldFormatter.headers=this.headers),e.transform&&(this.rowTransform=e.transform)}static isRowHashArray(e){return!!Array.isArray(e)&&Array.isArray(e[0])&&2===e[0].length}static isRowArray(e){return Array.isArray(e)&&!this.isRowHashArray(e)}static gatherHeaders(e){return l.isRowHashArray(e)?e.map((e=>e[0])):Array.isArray(e)?e:Object.keys(e)}static createTransform(e){return a.isSyncTransform(e)?(t,r)=>{let n=null;try{n=e(t)}catch(i){return r(i)}return r(null,n)}:(t,r)=>{e(t,r)}}set rowTransform(e){if(!i.default(e))throw new TypeError("The transform should be a function");this._rowTransform=l.createTransform(e)}format(e,t){this.callTransformer(e,((r,n)=>{if(r)return t(r);if(!e)return t(null);const i=[];if(n){const{shouldFormatColumns:e,headers:t}=this.checkHeaders(n);if(this.shouldWriteHeaders&&t&&!this.hasWrittenHeaders&&(i.push(this.formatColumns(t,!0)),this.hasWrittenHeaders=!0),e){const e=this.gatherColumns(n);i.push(this.formatColumns(e,!1))}}return t(null,i)}))}finish(e){const t=[];if(this.formatterOptions.alwaysWriteHeaders&&0===this.rowCount){if(!this.headers)return e(new Error("`alwaysWriteHeaders` option is set to true but `headers` option not provided."));t.push(this.formatColumns(this.headers,!0))}return this.formatterOptions.includeEndRowDelimiter&&t.push(this.formatterOptions.rowDelimiter),e(null,t)}checkHeaders(e){if(this.headers)return{shouldFormatColumns:!0,headers:this.headers};const t=l.gatherHeaders(e);return this.headers=t,this.fieldFormatter.headers=t,this.shouldWriteHeaders?{shouldFormatColumns:!s.default(t,e),headers:t}:{shouldFormatColumns:!0,headers:null}}gatherColumns(e){if(null===this.headers)throw new Error("Headers is currently null");return Array.isArray(e)?l.isRowHashArray(e)?this.headers.map(((t,r)=>{const n=e[r];return n?n[1]:""})):l.isRowArray(e)&&!this.shouldWriteHeaders?e:this.headers.map(((t,r)=>e[r])):this.headers.map((t=>e[t]))}callTransformer(e,t){return this._rowTransform?this._rowTransform(e,t):t(null,e)}formatColumns(e,t){const r=e.map(((e,r)=>this.fieldFormatter.format(e,r,t))).join(this.formatterOptions.delimiter),{rowCount:n}=this;return this.rowCount+=1,n?[this.formatterOptions.rowDelimiter,r].join(""):r}}r.RowFormatter=l},{"../types":152,"./FieldFormatter":148,"lodash.isequal":445,"lodash.isfunction":446}],150:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0}),r.FieldFormatter=r.RowFormatter=void 0;var n=e("./RowFormatter");Object.defineProperty(r,"RowFormatter",{enumerable:!0,get:function(){return n.RowFormatter}});var i=e("./FieldFormatter");Object.defineProperty(r,"FieldFormatter",{enumerable:!0,get:function(){return i.FieldFormatter}})},{"./FieldFormatter":148,"./RowFormatter":149}],151:[function(e,t,r){(function(t){(function(){var n=Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]},i=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t},s=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t},o=function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(r,"__esModule",{value:!0}),r.writeToPath=r.writeToString=r.writeToBuffer=r.writeToStream=r.write=r.format=r.FormatterOptions=r.CsvFormatterStream=void 0;const a=e("util"),l=e("stream"),c=s(e("fs")),h=e("./FormatterOptions"),u=e("./CsvFormatterStream");o(e("./types"),r);var f=e("./CsvFormatterStream");Object.defineProperty(r,"CsvFormatterStream",{enumerable:!0,get:function(){return f.CsvFormatterStream}});var d=e("./FormatterOptions");Object.defineProperty(r,"FormatterOptions",{enumerable:!0,get:function(){return d.FormatterOptions}}),r.format=e=>new u.CsvFormatterStream(new h.FormatterOptions(e)),r.write=(e,t)=>{const n=r.format(t),i=a.promisify(((e,t)=>{n.write(e,void 0,t)}));return e.reduce(((e,t)=>e.then((()=>i(t)))),Promise.resolve()).then((()=>n.end())).catch((e=>{n.emit("error",e)})),n},r.writeToStream=(e,t,n)=>r.write(t,n).pipe(e),r.writeToBuffer=function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=[],s=new l.Writable({write(e,t,r){i.push(e),r()}});return new Promise(((o,a)=>{s.on("error",a).on("finish",(()=>o(t.concat(i)))),r.write(e,n).pipe(s)}))},r.writeToString=(e,t)=>r.writeToBuffer(e,t).then((e=>e.toString())),r.writeToPath=(e,t,n)=>{const i=c.createWriteStream(e,{encoding:"utf8"});return r.write(t,n).pipe(i)}}).call(this)}).call(this,e("buffer").Buffer)},{"./CsvFormatterStream":146,"./FormatterOptions":147,"./types":152,buffer:220,fs:216,stream:505,util:527}],152:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0}),r.isSyncTransform=void 0,r.isSyncTransform=e=>1===e.length},{}],153:[function(e,t,r){(function(t){(function(){Object.defineProperty(r,"__esModule",{value:!0}),r.CsvParserStream=void 0;const n=e("string_decoder"),i=e("stream"),s=e("./transforms"),o=e("./parser");class a extends i.Transform{constructor(e){super({objectMode:e.objectMode}),this.lines="",this.rowCount=0,this.parsedRowCount=0,this.parsedLineCount=0,this.endEmitted=!1,this.headersEmitted=!1,this.parserOptions=e,this.parser=new o.Parser(e),this.headerTransformer=new s.HeaderTransformer(e),this.decoder=new n.StringDecoder(e.encoding),this.rowTransformerValidator=new s.RowTransformerValidator}get hasHitRowLimit(){return this.parserOptions.limitRows&&this.rowCount>=this.parserOptions.maxRows}get shouldEmitRows(){return this.parsedRowCount>this.parserOptions.skipRows}get shouldSkipLine(){return this.parsedLineCount<=this.parserOptions.skipLines}transform(e){return this.rowTransformerValidator.rowTransform=e,this}validate(e){return this.rowTransformerValidator.rowValidator=e,this}emit(e){if("end"===e)return this.endEmitted||(this.endEmitted=!0,super.emit("end",this.rowCount)),!1;for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n{const o=e=>e?r(e):s%100!=0?i(s+1):void t((()=>i(s+1)));if(this.checkAndEmitHeaders(),s>=n||this.hasHitRowLimit)return r();if(this.parsedLineCount+=1,this.shouldSkipLine)return o();const a=e[s];this.rowCount+=1,this.parsedRowCount+=1;const l=this.rowCount;return this.transformRow(a,((e,t)=>{if(e)return this.rowCount-=1,o(e);if(!t)return o(new Error("expected transform result"));if(t.isValid){if(t.row)return this.pushRow(t.row,o)}else this.emit("data-invalid",t.row,l,t.reason);return o()}))};i(0)}transformRow(e,t){try{this.headerTransformer.transform(e,((r,n)=>r?t(r):n?n.isValid?n.row?this.shouldEmitRows?this.rowTransformerValidator.transformAndValidate(n.row,t):this.skipRow(t):(this.rowCount-=1,this.parsedRowCount-=1,t(null,{row:null,isValid:!0})):this.shouldEmitRows?t(null,{isValid:!1,row:e}):this.skipRow(t):t(new Error("Expected result from header transform"))))}catch(r){t(r)}}checkAndEmitHeaders(){!this.headersEmitted&&this.headerTransformer.headers&&(this.headersEmitted=!0,this.emit("headers",this.headerTransformer.headers))}skipRow(e){return this.rowCount-=1,e(null,{row:null,isValid:!0})}pushRow(e,t){try{this.parserOptions.objectMode?this.push(e):this.push(JSON.stringify(e)),t()}catch(r){t(r)}}static wrapDoneCallback(e){let t=!1;return function(r){if(r){if(t)throw r;return t=!0,void e(r)}for(var n=arguments.length,i=new Array(n>1?n-1:0),s=1;s1)throw new Error("delimiter option must be one character long");this.escapedDelimiter=i.default(this.delimiter),this.escapeChar=null!==(t=this.escape)&&void 0!==t?t:this.quote,this.supportsComments=!s.default(this.comment),this.NEXT_TOKEN_REGEXP=new RegExp(`([^\\s]|\\r\\n|\\n|\\r|${this.escapedDelimiter})`),this.maxRows>0&&(this.limitRows=!0)}}},{"lodash.escaperegexp":442,"lodash.isnil":447}],155:[function(e,t,r){var n=Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]},i=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t},s=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t},o=function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(r,"__esModule",{value:!0}),r.parseString=r.parseFile=r.parseStream=r.parse=r.ParserOptions=r.CsvParserStream=void 0;const a=s(e("fs")),l=e("stream"),c=e("./ParserOptions"),h=e("./CsvParserStream");o(e("./types"),r);var u=e("./CsvParserStream");Object.defineProperty(r,"CsvParserStream",{enumerable:!0,get:function(){return u.CsvParserStream}});var f=e("./ParserOptions");Object.defineProperty(r,"ParserOptions",{enumerable:!0,get:function(){return f.ParserOptions}}),r.parse=e=>new h.CsvParserStream(new c.ParserOptions(e)),r.parseStream=(e,t)=>e.pipe(new h.CsvParserStream(new c.ParserOptions(t))),r.parseFile=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return a.createReadStream(e).pipe(new h.CsvParserStream(new c.ParserOptions(t)))},r.parseString=(e,t)=>{const r=new l.Readable;return r.push(e),r.push(null),r.pipe(new h.CsvParserStream(new c.ParserOptions(t)))}},{"./CsvParserStream":153,"./ParserOptions":154,"./types":169,fs:216,stream:505}],156:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0}),r.Parser=void 0;const n=e("./Scanner"),i=e("./RowParser"),s=e("./Token");class o{constructor(e){this.parserOptions=e,this.rowParser=new i.RowParser(this.parserOptions)}static removeBOM(e){return e&&65279===e.charCodeAt(0)?e.slice(1):e}parse(e,t){const r=new n.Scanner({line:o.removeBOM(e),parserOptions:this.parserOptions,hasMoreData:t});return this.parserOptions.supportsComments?this.parseWithComments(r):this.parseWithoutComments(r)}parseWithoutComments(e){const t=[];let r=!0;for(;r;)r=this.parseRow(e,t);return{line:e.line,rows:t}}parseWithComments(e){const{parserOptions:t}=this,r=[];for(let n=e.nextCharacterToken;null!==n;n=e.nextCharacterToken)if(s.Token.isTokenComment(n,t)){if(null===e.advancePastLine())return{line:e.lineFromCursor,rows:r};if(!e.hasMoreCharacters)return{line:e.lineFromCursor,rows:r};e.truncateToCursor()}else if(!this.parseRow(e,r))break;return{line:e.line,rows:r}}parseRow(e,t){if(!e.nextNonSpaceToken)return!1;const r=this.rowParser.parse(e);return null!==r&&(this.parserOptions.ignoreEmpty&&i.RowParser.isEmptyRow(r)||t.push(r),!0)}}r.Parser=o},{"./RowParser":157,"./Scanner":158,"./Token":159}],157:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0}),r.RowParser=void 0;const n=e("./column"),i=e("./Token");r.RowParser=class{constructor(e){this.parserOptions=e,this.columnParser=new n.ColumnParser(e)}static isEmptyRow(e){return""===e.join("").replace(/\s+/g,"")}parse(e){const{parserOptions:t}=this,{hasMoreData:r}=e,n=e,s=[];let o=this.getStartToken(n,s);for(;o;){if(i.Token.isTokenRowDelimiter(o))return n.advancePastToken(o),!n.hasMoreCharacters&&i.Token.isTokenCarriageReturn(o,t)&&r?null:(n.truncateToCursor(),s);if(!this.shouldSkipColumnParse(n,o,s)){const e=this.columnParser.parse(n);if(null===e)return null;s.push(e)}o=n.nextNonSpaceToken}return r?null:(n.truncateToCursor(),s)}getStartToken(e,t){const r=e.nextNonSpaceToken;return null!==r&&i.Token.isTokenDelimiter(r,this.parserOptions)?(t.push(""),e.nextNonSpaceToken):r}shouldSkipColumnParse(e,t,r){const{parserOptions:n}=this;if(i.Token.isTokenDelimiter(t,n)){e.advancePastToken(t);const s=e.nextCharacterToken;if(!e.hasMoreCharacters||null!==s&&i.Token.isTokenRowDelimiter(s))return r.push(""),!0;if(null!==s&&i.Token.isTokenDelimiter(s,n))return r.push(""),!0}return!1}}},{"./Token":159,"./column":164}],158:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0}),r.Scanner=void 0;const n=e("./Token"),i=/((?:\r\n)|\n|\r)/;r.Scanner=class{constructor(e){this.cursor=0,this.line=e.line,this.lineLength=this.line.length,this.parserOptions=e.parserOptions,this.hasMoreData=e.hasMoreData,this.cursor=e.cursor||0}get hasMoreCharacters(){return this.lineLength>this.cursor}get nextNonSpaceToken(){const{lineFromCursor:e}=this,t=this.parserOptions.NEXT_TOKEN_REGEXP;if(-1===e.search(t))return null;const r=t.exec(e);if(null==r)return null;const i=r[1],s=this.cursor+(r.index||0);return new n.Token({token:i,startCursor:s,endCursor:s+i.length-1})}get nextCharacterToken(){const{cursor:e,lineLength:t}=this;return t<=e?null:new n.Token({token:this.line[e],startCursor:e,endCursor:e})}get lineFromCursor(){return this.line.substr(this.cursor)}advancePastLine(){const e=i.exec(this.lineFromCursor);return e?(this.cursor+=(e.index||0)+e[0].length,this):this.hasMoreData?null:(this.cursor=this.lineLength,this)}advanceTo(e){return this.cursor=e,this}advanceToToken(e){return this.cursor=e.startCursor,this}advancePastToken(e){return this.cursor=e.endCursor+1,this}truncateToCursor(){return this.line=this.lineFromCursor,this.lineLength=this.line.length,this.cursor=0,this}}},{"./Token":159}],159:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0}),r.Token=void 0,r.Token=class{constructor(e){this.token=e.token,this.startCursor=e.startCursor,this.endCursor=e.endCursor}static isTokenRowDelimiter(e){const t=e.token;return"\r"===t||"\n"===t||"\r\n"===t}static isTokenCarriageReturn(e,t){return e.token===t.carriageReturn}static isTokenComment(e,t){return t.supportsComments&&!!e&&e.token===t.comment}static isTokenEscapeCharacter(e,t){return e.token===t.escapeChar}static isTokenQuote(e,t){return e.token===t.quote}static isTokenDelimiter(e,t){return e.token===t.delimiter}}},{}],160:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0}),r.ColumnFormatter=void 0,r.ColumnFormatter=class{constructor(e){e.trim?this.format=e=>e.trim():e.ltrim?this.format=e=>e.trimLeft():e.rtrim?this.format=e=>e.trimRight():this.format=e=>e}}},{}],161:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0}),r.ColumnParser=void 0;const n=e("./NonQuotedColumnParser"),i=e("./QuotedColumnParser"),s=e("../Token");r.ColumnParser=class{constructor(e){this.parserOptions=e,this.quotedColumnParser=new i.QuotedColumnParser(e),this.nonQuotedColumnParser=new n.NonQuotedColumnParser(e)}parse(e){const{nextNonSpaceToken:t}=e;return null!==t&&s.Token.isTokenQuote(t,this.parserOptions)?(e.advanceToToken(t),this.quotedColumnParser.parse(e)):this.nonQuotedColumnParser.parse(e)}}},{"../Token":159,"./NonQuotedColumnParser":162,"./QuotedColumnParser":163}],162:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0}),r.NonQuotedColumnParser=void 0;const n=e("./ColumnFormatter"),i=e("../Token");r.NonQuotedColumnParser=class{constructor(e){this.parserOptions=e,this.columnFormatter=new n.ColumnFormatter(e)}parse(e){if(!e.hasMoreCharacters)return null;const{parserOptions:t}=this,r=[];let n=e.nextCharacterToken;for(;n&&!i.Token.isTokenDelimiter(n,t)&&!i.Token.isTokenRowDelimiter(n);n=e.nextCharacterToken)r.push(n.token),e.advancePastToken(n);return this.columnFormatter.format(r.join(""))}}},{"../Token":159,"./ColumnFormatter":160}],163:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0}),r.QuotedColumnParser=void 0;const n=e("./ColumnFormatter"),i=e("../Token");r.QuotedColumnParser=class{constructor(e){this.parserOptions=e,this.columnFormatter=new n.ColumnFormatter(e)}parse(e){if(!e.hasMoreCharacters)return null;const t=e.cursor,{foundClosingQuote:r,col:n}=this.gatherDataBetweenQuotes(e);if(!r){if(e.advanceTo(t),!e.hasMoreData)throw new Error(`Parse Error: missing closing: '${this.parserOptions.quote||""}' in line: at '${e.lineFromCursor.replace(/[\r\n]/g,"\\n'")}'`);return null}return this.checkForMalformedColumn(e),n}gatherDataBetweenQuotes(e){const{parserOptions:t}=this;let r=!1,n=!1;const s=[];let o=e.nextCharacterToken;for(;!n&&null!==o;o=e.nextCharacterToken){const a=i.Token.isTokenQuote(o,t);if(!r&&a)r=!0;else if(r)if(i.Token.isTokenEscapeCharacter(o,t)){e.advancePastToken(o);const r=e.nextCharacterToken;null!==r&&(i.Token.isTokenQuote(r,t)||i.Token.isTokenEscapeCharacter(r,t))?(s.push(r.token),o=r):a?n=!0:s.push(o.token)}else a?n=!0:s.push(o.token);e.advancePastToken(o)}return{col:this.columnFormatter.format(s.join("")),foundClosingQuote:n}}checkForMalformedColumn(e){const{parserOptions:t}=this,{nextNonSpaceToken:r}=e;if(r){const n=i.Token.isTokenDelimiter(r,t),s=i.Token.isTokenRowDelimiter(r);if(!n&&!s){const n=e.lineFromCursor.substr(0,10).replace(/[\r\n]/g,"\\n'");throw new Error(`Parse Error: expected: '${t.escapedDelimiter}' OR new line got: '${r.token}'. at '${n}`)}e.advanceToToken(r)}else e.hasMoreData||e.advancePastLine()}}},{"../Token":159,"./ColumnFormatter":160}],164:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0}),r.ColumnFormatter=r.QuotedColumnParser=r.NonQuotedColumnParser=r.ColumnParser=void 0;var n=e("./ColumnParser");Object.defineProperty(r,"ColumnParser",{enumerable:!0,get:function(){return n.ColumnParser}});var i=e("./NonQuotedColumnParser");Object.defineProperty(r,"NonQuotedColumnParser",{enumerable:!0,get:function(){return i.NonQuotedColumnParser}});var s=e("./QuotedColumnParser");Object.defineProperty(r,"QuotedColumnParser",{enumerable:!0,get:function(){return s.QuotedColumnParser}});var o=e("./ColumnFormatter");Object.defineProperty(r,"ColumnFormatter",{enumerable:!0,get:function(){return o.ColumnFormatter}})},{"./ColumnFormatter":160,"./ColumnParser":161,"./NonQuotedColumnParser":162,"./QuotedColumnParser":163}],165:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0}),r.QuotedColumnParser=r.NonQuotedColumnParser=r.ColumnParser=r.Token=r.Scanner=r.RowParser=r.Parser=void 0;var n=e("./Parser");Object.defineProperty(r,"Parser",{enumerable:!0,get:function(){return n.Parser}});var i=e("./RowParser");Object.defineProperty(r,"RowParser",{enumerable:!0,get:function(){return i.RowParser}});var s=e("./Scanner");Object.defineProperty(r,"Scanner",{enumerable:!0,get:function(){return s.Scanner}});var o=e("./Token");Object.defineProperty(r,"Token",{enumerable:!0,get:function(){return o.Token}});var a=e("./column");Object.defineProperty(r,"ColumnParser",{enumerable:!0,get:function(){return a.ColumnParser}}),Object.defineProperty(r,"NonQuotedColumnParser",{enumerable:!0,get:function(){return a.NonQuotedColumnParser}}),Object.defineProperty(r,"QuotedColumnParser",{enumerable:!0,get:function(){return a.QuotedColumnParser}})},{"./Parser":156,"./RowParser":157,"./Scanner":158,"./Token":159,"./column":164}],166:[function(e,t,r){var n=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0}),r.HeaderTransformer=void 0;const i=n(e("lodash.isundefined")),s=n(e("lodash.isfunction")),o=n(e("lodash.uniq")),a=n(e("lodash.groupby"));r.HeaderTransformer=class{constructor(e){this.headers=null,this.receivedHeaders=!1,this.shouldUseFirstRow=!1,this.processedFirstRow=!1,this.headersLength=0,this.parserOptions=e,!0===e.headers?this.shouldUseFirstRow=!0:Array.isArray(e.headers)?this.setHeaders(e.headers):s.default(e.headers)&&(this.headersTransform=e.headers)}transform(e,t){return this.shouldMapRow(e)?t(null,this.processRow(e)):t(null,{row:null,isValid:!0})}shouldMapRow(e){const{parserOptions:t}=this;if(!this.headersTransform&&t.renameHeaders&&!this.processedFirstRow){if(!this.receivedHeaders)throw new Error("Error renaming headers: new headers must be provided in an array");return this.processedFirstRow=!0,!1}if(!this.receivedHeaders&&Array.isArray(e)){if(this.headersTransform)this.setHeaders(this.headersTransform(e));else{if(!this.shouldUseFirstRow)return!0;this.setHeaders(e)}return!1}return!0}processRow(e){if(!this.headers)return{row:e,isValid:!0};const{parserOptions:t}=this;if(!t.discardUnmappedColumns&&e.length>this.headersLength){if(!t.strictColumnHandling)throw new Error(`Unexpected Error: column header mismatch expected: ${this.headersLength} columns got: ${e.length}`);return{row:e,isValid:!1,reason:`Column header mismatch expected: ${this.headersLength} columns got: ${e.length}`}}return t.strictColumnHandling&&e.length!!e));if(o.default(r).length!==r.length){const e=a.default(r),t=Object.keys(e).filter((t=>e[t].length>1));throw new Error("Duplicate headers found "+JSON.stringify(t))}this.headers=e,this.receivedHeaders=!0,this.headersLength=(null===(t=this.headers)||void 0===t?void 0:t.length)||0}}},{"lodash.groupby":443,"lodash.isfunction":446,"lodash.isundefined":448,"lodash.uniq":449}],167:[function(e,t,r){var n=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0}),r.RowTransformerValidator=void 0;const i=n(e("lodash.isfunction")),s=e("../types");class o{constructor(){this._rowTransform=null,this._rowValidator=null}static createTransform(e){return s.isSyncTransform(e)?(t,r)=>{let n=null;try{n=e(t)}catch(i){return r(i)}return r(null,n)}:e}static createValidator(e){return s.isSyncValidate(e)?(t,r)=>{r(null,{row:t,isValid:e(t)})}:(t,r)=>{e(t,((e,n,i)=>e?r(e):r(null,n?{row:t,isValid:n,reason:i}:{row:t,isValid:!1,reason:i})))}}set rowTransform(e){if(!i.default(e))throw new TypeError("The transform should be a function");this._rowTransform=o.createTransform(e)}set rowValidator(e){if(!i.default(e))throw new TypeError("The validate should be a function");this._rowValidator=o.createValidator(e)}transformAndValidate(e,t){return this.callTransformer(e,((e,r)=>e?t(e):r?this.callValidator(r,((e,n)=>e?t(e):n&&!n.isValid?t(null,{row:r,isValid:!1,reason:n.reason}):t(null,{row:r,isValid:!0}))):t(null,{row:null,isValid:!0})))}callTransformer(e,t){return this._rowTransform?this._rowTransform(e,t):t(null,e)}callValidator(e,t){return this._rowValidator?this._rowValidator(e,t):t(null,{row:e,isValid:!0})}}r.RowTransformerValidator=o},{"../types":169,"lodash.isfunction":446}],168:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0}),r.HeaderTransformer=r.RowTransformerValidator=void 0;var n=e("./RowTransformerValidator");Object.defineProperty(r,"RowTransformerValidator",{enumerable:!0,get:function(){return n.RowTransformerValidator}});var i=e("./HeaderTransformer");Object.defineProperty(r,"HeaderTransformer",{enumerable:!0,get:function(){return i.HeaderTransformer}})},{"./HeaderTransformer":166,"./RowTransformerValidator":167}],169:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0}),r.isSyncValidate=r.isSyncTransform=void 0,r.isSyncTransform=e=>1===e.length,r.isSyncValidate=e=>1===e.length},{}],170:[function(e,t,r){const n=r;n.bignum=e("bn.js"),n.define=e("./asn1/api").define,n.base=e("./asn1/base"),n.constants=e("./asn1/constants"),n.decoders=e("./asn1/decoders"),n.encoders=e("./asn1/encoders")},{"./asn1/api":171,"./asn1/base":173,"./asn1/constants":177,"./asn1/decoders":179,"./asn1/encoders":182,"bn.js":184}],171:[function(e,t,r){const n=e("./encoders"),i=e("./decoders"),s=e("inherits");function o(e,t){this.name=e,this.body=t,this.decoders={},this.encoders={}}r.define=function(e,t){return new o(e,t)},o.prototype._createNamed=function(e){const t=this.name;function r(e){this._initNamed(e,t)}return s(r,e),r.prototype._initNamed=function(t,r){e.call(this,t,r)},new r(this)},o.prototype._getDecoder=function(e){return e=e||"der",this.decoders.hasOwnProperty(e)||(this.decoders[e]=this._createNamed(i[e])),this.decoders[e]},o.prototype.decode=function(e,t,r){return this._getDecoder(t).decode(e,r)},o.prototype._getEncoder=function(e){return e=e||"der",this.encoders.hasOwnProperty(e)||(this.encoders[e]=this._createNamed(n[e])),this.encoders[e]},o.prototype.encode=function(e,t,r){return this._getEncoder(t).encode(e,r)}},{"./decoders":179,"./encoders":182,inherits:440}],172:[function(e,t,r){const n=e("inherits"),i=e("../base/reporter").Reporter,s=e("safer-buffer").Buffer;function o(e,t){i.call(this,t),s.isBuffer(e)?(this.base=e,this.offset=0,this.length=e.length):this.error("Input not Buffer")}function a(e,t){if(Array.isArray(e))this.length=0,this.value=e.map((function(e){return a.isEncoderBuffer(e)||(e=new a(e,t)),this.length+=e.length,e}),this);else if("number"==typeof e){if(!(0<=e&&e<=255))return t.error("non-byte EncoderBuffer value");this.value=e,this.length=1}else if("string"==typeof e)this.value=e,this.length=s.byteLength(e);else{if(!s.isBuffer(e))return t.error("Unsupported type: "+typeof e);this.value=e,this.length=e.length}}n(o,i),r.DecoderBuffer=o,o.isDecoderBuffer=function(e){return e instanceof o||"object"==typeof e&&s.isBuffer(e.base)&&"DecoderBuffer"===e.constructor.name&&"number"==typeof e.offset&&"number"==typeof e.length&&"function"==typeof e.save&&"function"==typeof e.restore&&"function"==typeof e.isEmpty&&"function"==typeof e.readUInt8&&"function"==typeof e.skip&&"function"==typeof e.raw},o.prototype.save=function(){return{offset:this.offset,reporter:i.prototype.save.call(this)}},o.prototype.restore=function(e){const t=new o(this.base);return t.offset=e.offset,t.length=this.offset,this.offset=e.offset,i.prototype.restore.call(this,e.reporter),t},o.prototype.isEmpty=function(){return this.offset===this.length},o.prototype.readUInt8=function(e){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(e||"DecoderBuffer overrun")},o.prototype.skip=function(e,t){if(!(this.offset+e<=this.length))return this.error(t||"DecoderBuffer overrun");const r=new o(this.base);return r._reporterState=this._reporterState,r.offset=this.offset,r.length=this.offset+e,this.offset+=e,r},o.prototype.raw=function(e){return this.base.slice(e?e.offset:this.offset,this.length)},r.EncoderBuffer=a,a.isEncoderBuffer=function(e){return e instanceof a||"object"==typeof e&&"EncoderBuffer"===e.constructor.name&&"number"==typeof e.length&&"function"==typeof e.join},a.prototype.join=function(e,t){return e||(e=s.alloc(this.length)),t||(t=0),0===this.length||(Array.isArray(this.value)?this.value.forEach((function(r){r.join(e,t),t+=r.length})):("number"==typeof this.value?e[t]=this.value:"string"==typeof this.value?e.write(this.value,t):s.isBuffer(this.value)&&this.value.copy(e,t),t+=this.length)),e}},{"../base/reporter":175,inherits:440,"safer-buffer":495}],173:[function(e,t,r){const n=r;n.Reporter=e("./reporter").Reporter,n.DecoderBuffer=e("./buffer").DecoderBuffer,n.EncoderBuffer=e("./buffer").EncoderBuffer,n.Node=e("./node")},{"./buffer":172,"./node":174,"./reporter":175}],174:[function(e,t,r){const n=e("../base/reporter").Reporter,i=e("../base/buffer").EncoderBuffer,s=e("../base/buffer").DecoderBuffer,o=e("minimalistic-assert"),a=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","objDesc","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],l=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(a);function c(e,t,r){const n={};this._baseState=n,n.name=r,n.enc=e,n.parent=t||null,n.children=null,n.tag=null,n.args=null,n.reverseArgs=null,n.choice=null,n.optional=!1,n.any=!1,n.obj=!1,n.use=null,n.useDecoder=null,n.key=null,n.default=null,n.explicit=null,n.implicit=null,n.contains=null,n.parent||(n.children=[],this._wrap())}t.exports=c;const h=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];c.prototype.clone=function(){const e=this._baseState,t={};h.forEach((function(r){t[r]=e[r]}));const r=new this.constructor(t.parent);return r._baseState=t,r},c.prototype._wrap=function(){const e=this._baseState;l.forEach((function(t){this[t]=function(){const r=new this.constructor(this);return e.children.push(r),r[t].apply(r,arguments)}}),this)},c.prototype._init=function(e){const t=this._baseState;o(null===t.parent),e.call(this),t.children=t.children.filter((function(e){return e._baseState.parent===this}),this),o.equal(t.children.length,1,"Root node can have only one child")},c.prototype._useArgs=function(e){const t=this._baseState,r=e.filter((function(e){return e instanceof this.constructor}),this);e=e.filter((function(e){return!(e instanceof this.constructor)}),this),0!==r.length&&(o(null===t.children),t.children=r,r.forEach((function(e){e._baseState.parent=this}),this)),0!==e.length&&(o(null===t.args),t.args=e,t.reverseArgs=e.map((function(e){if("object"!=typeof e||e.constructor!==Object)return e;const t={};return Object.keys(e).forEach((function(r){r==(0|r)&&(r|=0);const n=e[r];t[n]=r})),t})))},["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"].forEach((function(e){c.prototype[e]=function(){const t=this._baseState;throw new Error(e+" not implemented for encoding: "+t.enc)}})),a.forEach((function(e){c.prototype[e]=function(){const t=this._baseState,r=Array.prototype.slice.call(arguments);return o(null===t.tag),t.tag=e,this._useArgs(r),this}})),c.prototype.use=function(e){o(e);const t=this._baseState;return o(null===t.use),t.use=e,this},c.prototype.optional=function(){return this._baseState.optional=!0,this},c.prototype.def=function(e){const t=this._baseState;return o(null===t.default),t.default=e,t.optional=!0,this},c.prototype.explicit=function(e){const t=this._baseState;return o(null===t.explicit&&null===t.implicit),t.explicit=e,this},c.prototype.implicit=function(e){const t=this._baseState;return o(null===t.explicit&&null===t.implicit),t.implicit=e,this},c.prototype.obj=function(){const e=this._baseState,t=Array.prototype.slice.call(arguments);return e.obj=!0,0!==t.length&&this._useArgs(t),this},c.prototype.key=function(e){const t=this._baseState;return o(null===t.key),t.key=e,this},c.prototype.any=function(){return this._baseState.any=!0,this},c.prototype.choice=function(e){const t=this._baseState;return o(null===t.choice),t.choice=e,this._useArgs(Object.keys(e).map((function(t){return e[t]}))),this},c.prototype.contains=function(e){const t=this._baseState;return o(null===t.use),t.contains=e,this},c.prototype._decode=function(e,t){const r=this._baseState;if(null===r.parent)return e.wrapResult(r.children[0]._decode(e,t));let n,i=r.default,o=!0,a=null;if(null!==r.key&&(a=e.enterKey(r.key)),r.optional){let n=null;if(null!==r.explicit?n=r.explicit:null!==r.implicit?n=r.implicit:null!==r.tag&&(n=r.tag),null!==n||r.any){if(o=this._peekTag(e,n,r.any),e.isError(o))return o}else{const n=e.save();try{null===r.choice?this._decodeGeneric(r.tag,e,t):this._decodeChoice(e,t),o=!0}catch(l){o=!1}e.restore(n)}}if(r.obj&&o&&(n=e.enterObject()),o){if(null!==r.explicit){const t=this._decodeTag(e,r.explicit);if(e.isError(t))return t;e=t}const n=e.offset;if(null===r.use&&null===r.choice){let t;r.any&&(t=e.save());const n=this._decodeTag(e,null!==r.implicit?r.implicit:r.tag,r.any);if(e.isError(n))return n;r.any?i=e.raw(t):e=n}if(t&&t.track&&null!==r.tag&&t.track(e.path(),n,e.length,"tagged"),t&&t.track&&null!==r.tag&&t.track(e.path(),e.offset,e.length,"content"),r.any||(i=null===r.choice?this._decodeGeneric(r.tag,e,t):this._decodeChoice(e,t)),e.isError(i))return i;if(r.any||null!==r.choice||null===r.children||r.children.forEach((function(r){r._decode(e,t)})),r.contains&&("octstr"===r.tag||"bitstr"===r.tag)){const n=new s(i);i=this._getUse(r.contains,e._reporterState.obj)._decode(n,t)}}return r.obj&&o&&(i=e.leaveObject(n)),null===r.key||null===i&&!0!==o?null!==a&&e.exitKey(a):e.leaveKey(a,r.key,i),i},c.prototype._decodeGeneric=function(e,t,r){const n=this._baseState;return"seq"===e||"set"===e?null:"seqof"===e||"setof"===e?this._decodeList(t,e,n.args[0],r):/str$/.test(e)?this._decodeStr(t,e,r):"objid"===e&&n.args?this._decodeObjid(t,n.args[0],n.args[1],r):"objid"===e?this._decodeObjid(t,null,null,r):"gentime"===e||"utctime"===e?this._decodeTime(t,e,r):"null_"===e?this._decodeNull(t,r):"bool"===e?this._decodeBool(t,r):"objDesc"===e?this._decodeStr(t,e,r):"int"===e||"enum"===e?this._decodeInt(t,n.args&&n.args[0],r):null!==n.use?this._getUse(n.use,t._reporterState.obj)._decode(t,r):t.error("unknown tag: "+e)},c.prototype._getUse=function(e,t){const r=this._baseState;return r.useDecoder=this._use(e,t),o(null===r.useDecoder._baseState.parent),r.useDecoder=r.useDecoder._baseState.children[0],r.implicit!==r.useDecoder._baseState.implicit&&(r.useDecoder=r.useDecoder.clone(),r.useDecoder._baseState.implicit=r.implicit),r.useDecoder},c.prototype._decodeChoice=function(e,t){const r=this._baseState;let n=null,i=!1;return Object.keys(r.choice).some((function(s){const o=e.save(),a=r.choice[s];try{const r=a._decode(e,t);if(e.isError(r))return!1;n={type:s,value:r},i=!0}catch(l){return e.restore(o),!1}return!0}),this),i?n:e.error("Choice not matched")},c.prototype._createEncoderBuffer=function(e){return new i(e,this.reporter)},c.prototype._encode=function(e,t,r){const n=this._baseState;if(null!==n.default&&n.default===e)return;const i=this._encodeValue(e,t,r);return void 0===i||this._skipDefault(i,t,r)?void 0:i},c.prototype._encodeValue=function(e,t,r){const i=this._baseState;if(null===i.parent)return i.children[0]._encode(e,t||new n);let s=null;if(this.reporter=t,i.optional&&void 0===e){if(null===i.default)return;e=i.default}let o=null,a=!1;if(i.any)s=this._createEncoderBuffer(e);else if(i.choice)s=this._encodeChoice(e,t);else if(i.contains)o=this._getUse(i.contains,r)._encode(e,t),a=!0;else if(i.children)o=i.children.map((function(r){if("null_"===r._baseState.tag)return r._encode(null,t,e);if(null===r._baseState.key)return t.error("Child should have a key");const n=t.enterKey(r._baseState.key);if("object"!=typeof e)return t.error("Child expected, but input is not object");const i=r._encode(e[r._baseState.key],t,e);return t.leaveKey(n),i}),this).filter((function(e){return e})),o=this._createEncoderBuffer(o);else if("seqof"===i.tag||"setof"===i.tag){if(!i.args||1!==i.args.length)return t.error("Too many args for : "+i.tag);if(!Array.isArray(e))return t.error("seqof/setof, but data is not Array");const r=this.clone();r._baseState.implicit=null,o=this._createEncoderBuffer(e.map((function(r){const n=this._baseState;return this._getUse(n.args[0],e)._encode(r,t)}),r))}else null!==i.use?s=this._getUse(i.use,r)._encode(e,t):(o=this._encodePrimitive(i.tag,e),a=!0);if(!i.any&&null===i.choice){const e=null!==i.implicit?i.implicit:i.tag,r=null===i.implicit?"universal":"context";null===e?null===i.use&&t.error("Tag could be omitted only for .use()"):null===i.use&&(s=this._encodeComposite(e,a,r,o))}return null!==i.explicit&&(s=this._encodeComposite(i.explicit,!1,"context",s)),s},c.prototype._encodeChoice=function(e,t){const r=this._baseState,n=r.choice[e.type];return n||o(!1,e.type+" not found in "+JSON.stringify(Object.keys(r.choice))),n._encode(e.value,t)},c.prototype._encodePrimitive=function(e,t){const r=this._baseState;if(/str$/.test(e))return this._encodeStr(t,e);if("objid"===e&&r.args)return this._encodeObjid(t,r.reverseArgs[0],r.args[1]);if("objid"===e)return this._encodeObjid(t,null,null);if("gentime"===e||"utctime"===e)return this._encodeTime(t,e);if("null_"===e)return this._encodeNull();if("int"===e||"enum"===e)return this._encodeInt(t,r.args&&r.reverseArgs[0]);if("bool"===e)return this._encodeBool(t);if("objDesc"===e)return this._encodeStr(t,e);throw new Error("Unsupported tag: "+e)},c.prototype._isNumstr=function(e){return/^[0-9 ]*$/.test(e)},c.prototype._isPrintstr=function(e){return/^[A-Za-z0-9 '()+,-./:=?]*$/.test(e)}},{"../base/buffer":172,"../base/reporter":175,"minimalistic-assert":453}],175:[function(e,t,r){const n=e("inherits");function i(e){this._reporterState={obj:null,path:[],options:e||{},errors:[]}}function s(e,t){this.path=e,this.rethrow(t)}r.Reporter=i,i.prototype.isError=function(e){return e instanceof s},i.prototype.save=function(){const e=this._reporterState;return{obj:e.obj,pathLen:e.path.length}},i.prototype.restore=function(e){const t=this._reporterState;t.obj=e.obj,t.path=t.path.slice(0,e.pathLen)},i.prototype.enterKey=function(e){return this._reporterState.path.push(e)},i.prototype.exitKey=function(e){const t=this._reporterState;t.path=t.path.slice(0,e-1)},i.prototype.leaveKey=function(e,t,r){const n=this._reporterState;this.exitKey(e),null!==n.obj&&(n.obj[t]=r)},i.prototype.path=function(){return this._reporterState.path.join("/")},i.prototype.enterObject=function(){const e=this._reporterState,t=e.obj;return e.obj={},t},i.prototype.leaveObject=function(e){const t=this._reporterState,r=t.obj;return t.obj=e,r},i.prototype.error=function(e){let t;const r=this._reporterState,n=e instanceof s;if(t=n?e:new s(r.path.map((function(e){return"["+JSON.stringify(e)+"]"})).join(""),e.message||e,e.stack),!r.options.partial)throw t;return n||r.errors.push(t),t},i.prototype.wrapResult=function(e){const t=this._reporterState;return t.options.partial?{result:this.isError(e)?null:e,errors:t.errors}:e},n(s,Error),s.prototype.rethrow=function(e){if(this.message=e+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,s),!this.stack)try{throw new Error(this.message)}catch(t){this.stack=t.stack}return this}},{inherits:440}],176:[function(e,t,r){function n(e){const t={};return Object.keys(e).forEach((function(r){(0|r)==r&&(r|=0);const n=e[r];t[n]=r})),t}r.tagClass={0:"universal",1:"application",2:"context",3:"private"},r.tagClassByName=n(r.tagClass),r.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"},r.tagByName=n(r.tag)},{}],177:[function(e,t,r){const n=r;n._reverse=function(e){const t={};return Object.keys(e).forEach((function(r){(0|r)==r&&(r|=0);const n=e[r];t[n]=r})),t},n.der=e("./der")},{"./der":176}],178:[function(e,t,r){const n=e("inherits"),i=e("bn.js"),s=e("../base/buffer").DecoderBuffer,o=e("../base/node"),a=e("../constants/der");function l(e){this.enc="der",this.name=e.name,this.entity=e,this.tree=new c,this.tree._init(e.body)}function c(e){o.call(this,"der",e)}function h(e,t){let r=e.readUInt8(t);if(e.isError(r))return r;const n=a.tagClass[r>>6],i=!(32&r);if(31&~r)r&=31;else{let n=r;for(r=0;!(128&~n);){if(n=e.readUInt8(t),e.isError(n))return n;r<<=7,r|=127&n}}return{cls:n,primitive:i,tag:r,tagStr:a.tag[r]}}function u(e,t,r){let n=e.readUInt8(r);if(e.isError(n))return n;if(!t&&128===n)return null;if(!(128&n))return n;const i=127&n;if(i>4)return e.error("length octect is too long");n=0;for(let s=0;s=31?n.error("Multi-octet tag encoding unsupported"):(t||(i|=32),i|=o.tagClassByName[r||"universal"]<<6,i)}(e,t,r,this.reporter);if(n.length<128){const e=i.alloc(2);return e[0]=s,e[1]=n.length,this._createEncoderBuffer([e,n])}let a=1;for(let i=n.length;i>=256;i>>=8)a++;const l=i.alloc(2+a);l[0]=s,l[1]=128|a;for(let i=1+a,o=n.length;o>0;i--,o>>=8)l[i]=255&o;return this._createEncoderBuffer([l,n])},l.prototype._encodeStr=function(e,t){if("bitstr"===t)return this._createEncoderBuffer([0|e.unused,e.data]);if("bmpstr"===t){const t=i.alloc(2*e.length);for(let r=0;r=40)return this.reporter.error("Second objid identifier OOB");e.splice(0,2,40*e[0]+e[1])}let n=0;for(let i=0;i=128;t>>=7)n++}const s=i.alloc(n);let o=s.length-1;for(let i=e.length-1;i>=0;i--){let t=e[i];for(s[o--]=127&t;(t>>=7)>0;)s[o--]=128|127&t}return this._createEncoderBuffer(s)},l.prototype._encodeTime=function(e,t){let r;const n=new Date(e);return"gentime"===t?r=[c(n.getUTCFullYear()),c(n.getUTCMonth()+1),c(n.getUTCDate()),c(n.getUTCHours()),c(n.getUTCMinutes()),c(n.getUTCSeconds()),"Z"].join(""):"utctime"===t?r=[c(n.getUTCFullYear()%100),c(n.getUTCMonth()+1),c(n.getUTCDate()),c(n.getUTCHours()),c(n.getUTCMinutes()),c(n.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+t+" time is not supported yet"),this._encodeStr(r,"octstr")},l.prototype._encodeNull=function(){return this._createEncoderBuffer("")},l.prototype._encodeInt=function(e,t){if("string"==typeof e){if(!t)return this.reporter.error("String int or enum given, but no values map");if(!t.hasOwnProperty(e))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(e));e=t[e]}if("number"!=typeof e&&!i.isBuffer(e)){const t=e.toArray();!e.sign&&128&t[0]&&t.unshift(0),e=i.from(t)}if(i.isBuffer(e)){let t=e.length;0===e.length&&t++;const r=i.alloc(t);return e.copy(r),0===e.length&&(r[0]=0),this._createEncoderBuffer(r)}if(e<128)return this._createEncoderBuffer(e);if(e<256)return this._createEncoderBuffer([0,e]);let r=1;for(let i=e;i>=256;i>>=8)r++;const n=new Array(r);for(let i=n.length-1;i>=0;i--)n[i]=255&e,e>>=8;return 128&n[0]&&n.unshift(0),this._createEncoderBuffer(i.from(n))},l.prototype._encodeBool=function(e){return this._createEncoderBuffer(e?255:0)},l.prototype._use=function(e,t){return"function"==typeof e&&(e=e(t)),e._getEncoder("der").tree},l.prototype._skipDefault=function(e,t,r){const n=this._baseState;let i;if(null===n.default)return!1;const s=e.join();if(void 0===n.defaultBuffer&&(n.defaultBuffer=this._encodeValue(n.default,t,r).join()),s.length!==n.defaultBuffer.length)return!1;for(i=0;i=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function a(e,t,r){var n=o(e,r);return r-1>=t&&(n|=o(e,r-1)<<4),n}function l(e,t,r,n){for(var i=0,s=Math.min(e.length,r),o=t;o=49?a-49+10:a>=17?a-17+10:a}return i}i.isBN=function(e){return e instanceof i||null!==e&&"object"==typeof e&&e.constructor.wordSize===i.wordSize&&Array.isArray(e.words)},i.max=function(e,t){return e.cmp(t)>0?e:t},i.min=function(e,t){return e.cmp(t)<0?e:t},i.prototype._init=function(e,t,n){if("number"==typeof e)return this._initNumber(e,t,n);if("object"==typeof e)return this._initArray(e,t,n);"hex"===t&&(t=16),r(t===(0|t)&&t>=2&&t<=36);var i=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(i++,this.negative=1),i=0;i-=3)o=e[i]|e[i-1]<<8|e[i-2]<<16,this.words[s]|=o<>>26-a&67108863,(a+=24)>=26&&(a-=26,s++);else if("le"===n)for(i=0,s=0;i>>26-a&67108863,(a+=24)>=26&&(a-=26,s++);return this.strip()},i.prototype._parseHex=function(e,t,r){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var n=0;n=t;n-=2)i=a(e,t,n)<=18?(s-=18,o+=1,this.words[o]|=i>>>26):s+=8;else for(n=(e.length-t)%2==0?t+1:t;n=18?(s-=18,o+=1,this.words[o]|=i>>>26):s+=8;this.strip()},i.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=t)n++;n--,i=i/t|0;for(var s=e.length-r,o=s%n,a=Math.min(s,s-o)+r,c=0,h=r;h1&&0===this.words[this.length-1];)this.length--;return this._normSign()},i.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},i.prototype.inspect=function(){return(this.red?""};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],h=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],u=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function f(e,t,r){r.negative=t.negative^e.negative;var n=e.length+t.length|0;r.length=n,n=n-1|0;var i=0|e.words[0],s=0|t.words[0],o=i*s,a=67108863&o,l=o/67108864|0;r.words[0]=a;for(var c=1;c>>26,u=67108863&l,f=Math.min(c,t.length-1),d=Math.max(0,c-e.length+1);d<=f;d++){var p=c-d|0;h+=(o=(i=0|e.words[p])*(s=0|t.words[d])+u)/67108864|0,u=67108863&o}r.words[c]=0|u,l=0|h}return 0!==l?r.words[c]=0|l:r.length--,r.strip()}i.prototype.toString=function(e,t){var n;if(t=0|t||1,16===(e=e||10)||"hex"===e){n="";for(var i=0,s=0,o=0;o>>24-i&16777215)||o!==this.length-1?c[6-l.length]+l+n:l+n,(i+=2)>=26&&(i-=26,o--)}for(0!==s&&(n=s.toString(16)+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}if(e===(0|e)&&e>=2&&e<=36){var f=h[e],d=u[e];n="";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modn(d).toString(e);n=(p=p.idivn(d)).isZero()?m+n:c[f-m.length]+m+n}for(this.isZero()&&(n="0"+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}r(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},i.prototype.toJSON=function(){return this.toString(16)},i.prototype.toBuffer=function(e,t){return r(void 0!==s),this.toArrayLike(s,e,t)},i.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},i.prototype.toArrayLike=function(e,t,n){var i=this.byteLength(),s=n||Math.max(1,i);r(i<=s,"byte array longer than desired length"),r(s>0,"Requested array length <= 0"),this.strip();var o,a,l="le"===t,c=new e(s),h=this.clone();if(l){for(a=0;!h.isZero();a++)o=h.andln(255),h.iushrn(8),c[a]=o;for(;a=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},i.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return!(8191&t)&&(r+=13,t>>>=13),!(127&t)&&(r+=7,t>>>=7),!(15&t)&&(r+=4,t>>>=4),!(3&t)&&(r+=2,t>>>=2),!(1&t)&&r++,r},i.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},i.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},i.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},i.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},i.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var n=0;ne.length?this.clone().ixor(e):e.clone().ixor(this)},i.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},i.prototype.inotn=function(e){r("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),n=e%26;this._expand(t),n>0&&t--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-n),this.strip()},i.prototype.notn=function(e){return this.clone().inotn(e)},i.prototype.setn=function(e,t){r("number"==typeof e&&e>=0);var n=e/26|0,i=e%26;return this._expand(n+1),this.words[n]=t?this.words[n]|1<e.length?(r=this,n=e):(r=e,n=this);for(var i=0,s=0;s>>26;for(;0!==i&&s>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;se.length?this.clone().iadd(e):e.clone().iadd(this)},i.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,n,i=this.cmp(e);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(r=this,n=e):(r=e,n=this);for(var s=0,o=0;o>26,this.words[o]=67108863&t;for(;0!==s&&o>26,this.words[o]=67108863&t;if(0===s&&o>>13,d=0|o[1],p=8191&d,m=d>>>13,b=0|o[2],g=8191&b,y=b>>>13,v=0|o[3],w=8191&v,_=v>>>13,x=0|o[4],k=8191&x,S=x>>>13,C=0|o[5],M=8191&C,T=C>>>13,E=0|o[6],A=8191&E,R=E>>>13,j=0|o[7],O=8191&j,I=j>>>13,N=0|o[8],P=8191&N,B=N>>>13,D=0|o[9],F=8191&D,L=D>>>13,z=0|a[0],U=8191&z,V=z>>>13,$=0|a[1],H=8191&$,q=$>>>13,W=0|a[2],X=8191&W,Y=W>>>13,K=0|a[3],Z=8191&K,G=K>>>13,J=0|a[4],Q=8191&J,ee=J>>>13,te=0|a[5],re=8191&te,ne=te>>>13,ie=0|a[6],se=8191&ie,oe=ie>>>13,ae=0|a[7],le=8191&ae,ce=ae>>>13,he=0|a[8],ue=8191&he,fe=he>>>13,de=0|a[9],pe=8191&de,me=de>>>13;r.negative=e.negative^t.negative,r.length=19;var be=(c+(n=Math.imul(u,U))|0)+((8191&(i=(i=Math.imul(u,V))+Math.imul(f,U)|0))<<13)|0;c=((s=Math.imul(f,V))+(i>>>13)|0)+(be>>>26)|0,be&=67108863,n=Math.imul(p,U),i=(i=Math.imul(p,V))+Math.imul(m,U)|0,s=Math.imul(m,V);var ge=(c+(n=n+Math.imul(u,H)|0)|0)+((8191&(i=(i=i+Math.imul(u,q)|0)+Math.imul(f,H)|0))<<13)|0;c=((s=s+Math.imul(f,q)|0)+(i>>>13)|0)+(ge>>>26)|0,ge&=67108863,n=Math.imul(g,U),i=(i=Math.imul(g,V))+Math.imul(y,U)|0,s=Math.imul(y,V),n=n+Math.imul(p,H)|0,i=(i=i+Math.imul(p,q)|0)+Math.imul(m,H)|0,s=s+Math.imul(m,q)|0;var ye=(c+(n=n+Math.imul(u,X)|0)|0)+((8191&(i=(i=i+Math.imul(u,Y)|0)+Math.imul(f,X)|0))<<13)|0;c=((s=s+Math.imul(f,Y)|0)+(i>>>13)|0)+(ye>>>26)|0,ye&=67108863,n=Math.imul(w,U),i=(i=Math.imul(w,V))+Math.imul(_,U)|0,s=Math.imul(_,V),n=n+Math.imul(g,H)|0,i=(i=i+Math.imul(g,q)|0)+Math.imul(y,H)|0,s=s+Math.imul(y,q)|0,n=n+Math.imul(p,X)|0,i=(i=i+Math.imul(p,Y)|0)+Math.imul(m,X)|0,s=s+Math.imul(m,Y)|0;var ve=(c+(n=n+Math.imul(u,Z)|0)|0)+((8191&(i=(i=i+Math.imul(u,G)|0)+Math.imul(f,Z)|0))<<13)|0;c=((s=s+Math.imul(f,G)|0)+(i>>>13)|0)+(ve>>>26)|0,ve&=67108863,n=Math.imul(k,U),i=(i=Math.imul(k,V))+Math.imul(S,U)|0,s=Math.imul(S,V),n=n+Math.imul(w,H)|0,i=(i=i+Math.imul(w,q)|0)+Math.imul(_,H)|0,s=s+Math.imul(_,q)|0,n=n+Math.imul(g,X)|0,i=(i=i+Math.imul(g,Y)|0)+Math.imul(y,X)|0,s=s+Math.imul(y,Y)|0,n=n+Math.imul(p,Z)|0,i=(i=i+Math.imul(p,G)|0)+Math.imul(m,Z)|0,s=s+Math.imul(m,G)|0;var we=(c+(n=n+Math.imul(u,Q)|0)|0)+((8191&(i=(i=i+Math.imul(u,ee)|0)+Math.imul(f,Q)|0))<<13)|0;c=((s=s+Math.imul(f,ee)|0)+(i>>>13)|0)+(we>>>26)|0,we&=67108863,n=Math.imul(M,U),i=(i=Math.imul(M,V))+Math.imul(T,U)|0,s=Math.imul(T,V),n=n+Math.imul(k,H)|0,i=(i=i+Math.imul(k,q)|0)+Math.imul(S,H)|0,s=s+Math.imul(S,q)|0,n=n+Math.imul(w,X)|0,i=(i=i+Math.imul(w,Y)|0)+Math.imul(_,X)|0,s=s+Math.imul(_,Y)|0,n=n+Math.imul(g,Z)|0,i=(i=i+Math.imul(g,G)|0)+Math.imul(y,Z)|0,s=s+Math.imul(y,G)|0,n=n+Math.imul(p,Q)|0,i=(i=i+Math.imul(p,ee)|0)+Math.imul(m,Q)|0,s=s+Math.imul(m,ee)|0;var _e=(c+(n=n+Math.imul(u,re)|0)|0)+((8191&(i=(i=i+Math.imul(u,ne)|0)+Math.imul(f,re)|0))<<13)|0;c=((s=s+Math.imul(f,ne)|0)+(i>>>13)|0)+(_e>>>26)|0,_e&=67108863,n=Math.imul(A,U),i=(i=Math.imul(A,V))+Math.imul(R,U)|0,s=Math.imul(R,V),n=n+Math.imul(M,H)|0,i=(i=i+Math.imul(M,q)|0)+Math.imul(T,H)|0,s=s+Math.imul(T,q)|0,n=n+Math.imul(k,X)|0,i=(i=i+Math.imul(k,Y)|0)+Math.imul(S,X)|0,s=s+Math.imul(S,Y)|0,n=n+Math.imul(w,Z)|0,i=(i=i+Math.imul(w,G)|0)+Math.imul(_,Z)|0,s=s+Math.imul(_,G)|0,n=n+Math.imul(g,Q)|0,i=(i=i+Math.imul(g,ee)|0)+Math.imul(y,Q)|0,s=s+Math.imul(y,ee)|0,n=n+Math.imul(p,re)|0,i=(i=i+Math.imul(p,ne)|0)+Math.imul(m,re)|0,s=s+Math.imul(m,ne)|0;var xe=(c+(n=n+Math.imul(u,se)|0)|0)+((8191&(i=(i=i+Math.imul(u,oe)|0)+Math.imul(f,se)|0))<<13)|0;c=((s=s+Math.imul(f,oe)|0)+(i>>>13)|0)+(xe>>>26)|0,xe&=67108863,n=Math.imul(O,U),i=(i=Math.imul(O,V))+Math.imul(I,U)|0,s=Math.imul(I,V),n=n+Math.imul(A,H)|0,i=(i=i+Math.imul(A,q)|0)+Math.imul(R,H)|0,s=s+Math.imul(R,q)|0,n=n+Math.imul(M,X)|0,i=(i=i+Math.imul(M,Y)|0)+Math.imul(T,X)|0,s=s+Math.imul(T,Y)|0,n=n+Math.imul(k,Z)|0,i=(i=i+Math.imul(k,G)|0)+Math.imul(S,Z)|0,s=s+Math.imul(S,G)|0,n=n+Math.imul(w,Q)|0,i=(i=i+Math.imul(w,ee)|0)+Math.imul(_,Q)|0,s=s+Math.imul(_,ee)|0,n=n+Math.imul(g,re)|0,i=(i=i+Math.imul(g,ne)|0)+Math.imul(y,re)|0,s=s+Math.imul(y,ne)|0,n=n+Math.imul(p,se)|0,i=(i=i+Math.imul(p,oe)|0)+Math.imul(m,se)|0,s=s+Math.imul(m,oe)|0;var ke=(c+(n=n+Math.imul(u,le)|0)|0)+((8191&(i=(i=i+Math.imul(u,ce)|0)+Math.imul(f,le)|0))<<13)|0;c=((s=s+Math.imul(f,ce)|0)+(i>>>13)|0)+(ke>>>26)|0,ke&=67108863,n=Math.imul(P,U),i=(i=Math.imul(P,V))+Math.imul(B,U)|0,s=Math.imul(B,V),n=n+Math.imul(O,H)|0,i=(i=i+Math.imul(O,q)|0)+Math.imul(I,H)|0,s=s+Math.imul(I,q)|0,n=n+Math.imul(A,X)|0,i=(i=i+Math.imul(A,Y)|0)+Math.imul(R,X)|0,s=s+Math.imul(R,Y)|0,n=n+Math.imul(M,Z)|0,i=(i=i+Math.imul(M,G)|0)+Math.imul(T,Z)|0,s=s+Math.imul(T,G)|0,n=n+Math.imul(k,Q)|0,i=(i=i+Math.imul(k,ee)|0)+Math.imul(S,Q)|0,s=s+Math.imul(S,ee)|0,n=n+Math.imul(w,re)|0,i=(i=i+Math.imul(w,ne)|0)+Math.imul(_,re)|0,s=s+Math.imul(_,ne)|0,n=n+Math.imul(g,se)|0,i=(i=i+Math.imul(g,oe)|0)+Math.imul(y,se)|0,s=s+Math.imul(y,oe)|0,n=n+Math.imul(p,le)|0,i=(i=i+Math.imul(p,ce)|0)+Math.imul(m,le)|0,s=s+Math.imul(m,ce)|0;var Se=(c+(n=n+Math.imul(u,ue)|0)|0)+((8191&(i=(i=i+Math.imul(u,fe)|0)+Math.imul(f,ue)|0))<<13)|0;c=((s=s+Math.imul(f,fe)|0)+(i>>>13)|0)+(Se>>>26)|0,Se&=67108863,n=Math.imul(F,U),i=(i=Math.imul(F,V))+Math.imul(L,U)|0,s=Math.imul(L,V),n=n+Math.imul(P,H)|0,i=(i=i+Math.imul(P,q)|0)+Math.imul(B,H)|0,s=s+Math.imul(B,q)|0,n=n+Math.imul(O,X)|0,i=(i=i+Math.imul(O,Y)|0)+Math.imul(I,X)|0,s=s+Math.imul(I,Y)|0,n=n+Math.imul(A,Z)|0,i=(i=i+Math.imul(A,G)|0)+Math.imul(R,Z)|0,s=s+Math.imul(R,G)|0,n=n+Math.imul(M,Q)|0,i=(i=i+Math.imul(M,ee)|0)+Math.imul(T,Q)|0,s=s+Math.imul(T,ee)|0,n=n+Math.imul(k,re)|0,i=(i=i+Math.imul(k,ne)|0)+Math.imul(S,re)|0,s=s+Math.imul(S,ne)|0,n=n+Math.imul(w,se)|0,i=(i=i+Math.imul(w,oe)|0)+Math.imul(_,se)|0,s=s+Math.imul(_,oe)|0,n=n+Math.imul(g,le)|0,i=(i=i+Math.imul(g,ce)|0)+Math.imul(y,le)|0,s=s+Math.imul(y,ce)|0,n=n+Math.imul(p,ue)|0,i=(i=i+Math.imul(p,fe)|0)+Math.imul(m,ue)|0,s=s+Math.imul(m,fe)|0;var Ce=(c+(n=n+Math.imul(u,pe)|0)|0)+((8191&(i=(i=i+Math.imul(u,me)|0)+Math.imul(f,pe)|0))<<13)|0;c=((s=s+Math.imul(f,me)|0)+(i>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,n=Math.imul(F,H),i=(i=Math.imul(F,q))+Math.imul(L,H)|0,s=Math.imul(L,q),n=n+Math.imul(P,X)|0,i=(i=i+Math.imul(P,Y)|0)+Math.imul(B,X)|0,s=s+Math.imul(B,Y)|0,n=n+Math.imul(O,Z)|0,i=(i=i+Math.imul(O,G)|0)+Math.imul(I,Z)|0,s=s+Math.imul(I,G)|0,n=n+Math.imul(A,Q)|0,i=(i=i+Math.imul(A,ee)|0)+Math.imul(R,Q)|0,s=s+Math.imul(R,ee)|0,n=n+Math.imul(M,re)|0,i=(i=i+Math.imul(M,ne)|0)+Math.imul(T,re)|0,s=s+Math.imul(T,ne)|0,n=n+Math.imul(k,se)|0,i=(i=i+Math.imul(k,oe)|0)+Math.imul(S,se)|0,s=s+Math.imul(S,oe)|0,n=n+Math.imul(w,le)|0,i=(i=i+Math.imul(w,ce)|0)+Math.imul(_,le)|0,s=s+Math.imul(_,ce)|0,n=n+Math.imul(g,ue)|0,i=(i=i+Math.imul(g,fe)|0)+Math.imul(y,ue)|0,s=s+Math.imul(y,fe)|0;var Me=(c+(n=n+Math.imul(p,pe)|0)|0)+((8191&(i=(i=i+Math.imul(p,me)|0)+Math.imul(m,pe)|0))<<13)|0;c=((s=s+Math.imul(m,me)|0)+(i>>>13)|0)+(Me>>>26)|0,Me&=67108863,n=Math.imul(F,X),i=(i=Math.imul(F,Y))+Math.imul(L,X)|0,s=Math.imul(L,Y),n=n+Math.imul(P,Z)|0,i=(i=i+Math.imul(P,G)|0)+Math.imul(B,Z)|0,s=s+Math.imul(B,G)|0,n=n+Math.imul(O,Q)|0,i=(i=i+Math.imul(O,ee)|0)+Math.imul(I,Q)|0,s=s+Math.imul(I,ee)|0,n=n+Math.imul(A,re)|0,i=(i=i+Math.imul(A,ne)|0)+Math.imul(R,re)|0,s=s+Math.imul(R,ne)|0,n=n+Math.imul(M,se)|0,i=(i=i+Math.imul(M,oe)|0)+Math.imul(T,se)|0,s=s+Math.imul(T,oe)|0,n=n+Math.imul(k,le)|0,i=(i=i+Math.imul(k,ce)|0)+Math.imul(S,le)|0,s=s+Math.imul(S,ce)|0,n=n+Math.imul(w,ue)|0,i=(i=i+Math.imul(w,fe)|0)+Math.imul(_,ue)|0,s=s+Math.imul(_,fe)|0;var Te=(c+(n=n+Math.imul(g,pe)|0)|0)+((8191&(i=(i=i+Math.imul(g,me)|0)+Math.imul(y,pe)|0))<<13)|0;c=((s=s+Math.imul(y,me)|0)+(i>>>13)|0)+(Te>>>26)|0,Te&=67108863,n=Math.imul(F,Z),i=(i=Math.imul(F,G))+Math.imul(L,Z)|0,s=Math.imul(L,G),n=n+Math.imul(P,Q)|0,i=(i=i+Math.imul(P,ee)|0)+Math.imul(B,Q)|0,s=s+Math.imul(B,ee)|0,n=n+Math.imul(O,re)|0,i=(i=i+Math.imul(O,ne)|0)+Math.imul(I,re)|0,s=s+Math.imul(I,ne)|0,n=n+Math.imul(A,se)|0,i=(i=i+Math.imul(A,oe)|0)+Math.imul(R,se)|0,s=s+Math.imul(R,oe)|0,n=n+Math.imul(M,le)|0,i=(i=i+Math.imul(M,ce)|0)+Math.imul(T,le)|0,s=s+Math.imul(T,ce)|0,n=n+Math.imul(k,ue)|0,i=(i=i+Math.imul(k,fe)|0)+Math.imul(S,ue)|0,s=s+Math.imul(S,fe)|0;var Ee=(c+(n=n+Math.imul(w,pe)|0)|0)+((8191&(i=(i=i+Math.imul(w,me)|0)+Math.imul(_,pe)|0))<<13)|0;c=((s=s+Math.imul(_,me)|0)+(i>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,n=Math.imul(F,Q),i=(i=Math.imul(F,ee))+Math.imul(L,Q)|0,s=Math.imul(L,ee),n=n+Math.imul(P,re)|0,i=(i=i+Math.imul(P,ne)|0)+Math.imul(B,re)|0,s=s+Math.imul(B,ne)|0,n=n+Math.imul(O,se)|0,i=(i=i+Math.imul(O,oe)|0)+Math.imul(I,se)|0,s=s+Math.imul(I,oe)|0,n=n+Math.imul(A,le)|0,i=(i=i+Math.imul(A,ce)|0)+Math.imul(R,le)|0,s=s+Math.imul(R,ce)|0,n=n+Math.imul(M,ue)|0,i=(i=i+Math.imul(M,fe)|0)+Math.imul(T,ue)|0,s=s+Math.imul(T,fe)|0;var Ae=(c+(n=n+Math.imul(k,pe)|0)|0)+((8191&(i=(i=i+Math.imul(k,me)|0)+Math.imul(S,pe)|0))<<13)|0;c=((s=s+Math.imul(S,me)|0)+(i>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,n=Math.imul(F,re),i=(i=Math.imul(F,ne))+Math.imul(L,re)|0,s=Math.imul(L,ne),n=n+Math.imul(P,se)|0,i=(i=i+Math.imul(P,oe)|0)+Math.imul(B,se)|0,s=s+Math.imul(B,oe)|0,n=n+Math.imul(O,le)|0,i=(i=i+Math.imul(O,ce)|0)+Math.imul(I,le)|0,s=s+Math.imul(I,ce)|0,n=n+Math.imul(A,ue)|0,i=(i=i+Math.imul(A,fe)|0)+Math.imul(R,ue)|0,s=s+Math.imul(R,fe)|0;var Re=(c+(n=n+Math.imul(M,pe)|0)|0)+((8191&(i=(i=i+Math.imul(M,me)|0)+Math.imul(T,pe)|0))<<13)|0;c=((s=s+Math.imul(T,me)|0)+(i>>>13)|0)+(Re>>>26)|0,Re&=67108863,n=Math.imul(F,se),i=(i=Math.imul(F,oe))+Math.imul(L,se)|0,s=Math.imul(L,oe),n=n+Math.imul(P,le)|0,i=(i=i+Math.imul(P,ce)|0)+Math.imul(B,le)|0,s=s+Math.imul(B,ce)|0,n=n+Math.imul(O,ue)|0,i=(i=i+Math.imul(O,fe)|0)+Math.imul(I,ue)|0,s=s+Math.imul(I,fe)|0;var je=(c+(n=n+Math.imul(A,pe)|0)|0)+((8191&(i=(i=i+Math.imul(A,me)|0)+Math.imul(R,pe)|0))<<13)|0;c=((s=s+Math.imul(R,me)|0)+(i>>>13)|0)+(je>>>26)|0,je&=67108863,n=Math.imul(F,le),i=(i=Math.imul(F,ce))+Math.imul(L,le)|0,s=Math.imul(L,ce),n=n+Math.imul(P,ue)|0,i=(i=i+Math.imul(P,fe)|0)+Math.imul(B,ue)|0,s=s+Math.imul(B,fe)|0;var Oe=(c+(n=n+Math.imul(O,pe)|0)|0)+((8191&(i=(i=i+Math.imul(O,me)|0)+Math.imul(I,pe)|0))<<13)|0;c=((s=s+Math.imul(I,me)|0)+(i>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,n=Math.imul(F,ue),i=(i=Math.imul(F,fe))+Math.imul(L,ue)|0,s=Math.imul(L,fe);var Ie=(c+(n=n+Math.imul(P,pe)|0)|0)+((8191&(i=(i=i+Math.imul(P,me)|0)+Math.imul(B,pe)|0))<<13)|0;c=((s=s+Math.imul(B,me)|0)+(i>>>13)|0)+(Ie>>>26)|0,Ie&=67108863;var Ne=(c+(n=Math.imul(F,pe))|0)+((8191&(i=(i=Math.imul(F,me))+Math.imul(L,pe)|0))<<13)|0;return c=((s=Math.imul(L,me))+(i>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,l[0]=be,l[1]=ge,l[2]=ye,l[3]=ve,l[4]=we,l[5]=_e,l[6]=xe,l[7]=ke,l[8]=Se,l[9]=Ce,l[10]=Me,l[11]=Te,l[12]=Ee,l[13]=Ae,l[14]=Re,l[15]=je,l[16]=Oe,l[17]=Ie,l[18]=Ne,0!==c&&(l[19]=c,r.length++),r};function p(e,t,r){return(new m).mulp(e,t,r)}function m(e,t){this.x=e,this.y=t}Math.imul||(d=f),i.prototype.mulTo=function(e,t){var r=this.length+e.length;return 10===this.length&&10===e.length?d(this,e,t):r<63?f(this,e,t):r<1024?function(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var n=0,i=0,s=0;s>>26)|0)>>>26,o&=67108863}r.words[s]=a,n=o,o=i}return 0!==n?r.words[s]=n:r.length--,r.strip()}(this,e,t):p(this,e,t)},m.prototype.makeRBT=function(e){for(var t=new Array(e),r=i.prototype._countBits(e)-1,n=0;n>=1;return n},m.prototype.permute=function(e,t,r,n,i,s){for(var o=0;o>>=1)i++;return 1<>>=13,n[2*o+1]=8191&s,s>>>=13;for(o=2*t;o>=26,t+=i/67108864|0,t+=s>>>26,this.words[n]=67108863&s}return 0!==t&&(this.words[n]=t,this.length++),this},i.prototype.muln=function(e){return this.clone().imuln(e)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r>>i}return t}(e);if(0===t.length)return new i(1);for(var r=this,n=0;n=0);var t,n=e%26,i=(e-n)/26,s=67108863>>>26-n<<26-n;if(0!==n){var o=0;for(t=0;t>>26-n}o&&(this.words[t]=o,this.length++)}if(0!==i){for(t=this.length-1;t>=0;t--)this.words[t+i]=this.words[t];for(t=0;t=0),i=t?(t-t%26)/26:0;var s=e%26,o=Math.min((e-s)/26,this.length),a=67108863^67108863>>>s<o)for(this.length-=o,c=0;c=0&&(0!==h||c>=i);c--){var u=0|this.words[c];this.words[c]=h<<26-s|u>>>s,h=u&a}return l&&0!==h&&(l.words[l.length++]=h),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},i.prototype.ishrn=function(e,t,n){return r(0===this.negative),this.iushrn(e,t,n)},i.prototype.shln=function(e){return this.clone().ishln(e)},i.prototype.ushln=function(e){return this.clone().iushln(e)},i.prototype.shrn=function(e){return this.clone().ishrn(e)},i.prototype.ushrn=function(e){return this.clone().iushrn(e)},i.prototype.testn=function(e){r("number"==typeof e&&e>=0);var t=e%26,n=(e-t)/26,i=1<=0);var t=e%26,n=(e-t)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=n)return this;if(0!==t&&n++,this.length=Math.min(n,this.length),0!==t){var i=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},i.prototype.isubn=function(e){if(r("number"==typeof e),r(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(l/67108864|0),this.words[i+n]=67108863&s}for(;i>26,this.words[i+n]=67108863&s;if(0===a)return this.strip();for(r(-1===a),a=0,i=0;i>26,this.words[i]=67108863&s;return this.negative=1,this.strip()},i.prototype._wordDiv=function(e,t){var r=(this.length,e.length),n=this.clone(),s=e,o=0|s.words[s.length-1];0!=(r=26-this._countBits(o))&&(s=s.ushln(r),n.iushln(r),o=0|s.words[s.length-1]);var a,l=n.length-s.length;if("mod"!==t){(a=new i(null)).length=l+1,a.words=new Array(a.length);for(var c=0;c=0;u--){var f=67108864*(0|n.words[s.length+u])+(0|n.words[s.length+u-1]);for(f=Math.min(f/o|0,67108863),n._ishlnsubmul(s,f,u);0!==n.negative;)f--,n.negative=0,n._ishlnsubmul(s,1,u),n.isZero()||(n.negative^=1);a&&(a.words[u]=f)}return a&&a.strip(),n.strip(),"div"!==t&&0!==r&&n.iushrn(r),{div:a||null,mod:n}},i.prototype.divmod=function(e,t,n){return r(!e.isZero()),this.isZero()?{div:new i(0),mod:new i(0)}:0!==this.negative&&0===e.negative?(a=this.neg().divmod(e,t),"mod"!==t&&(s=a.div.neg()),"div"!==t&&(o=a.mod.neg(),n&&0!==o.negative&&o.iadd(e)),{div:s,mod:o}):0===this.negative&&0!==e.negative?(a=this.divmod(e.neg(),t),"mod"!==t&&(s=a.div.neg()),{div:s,mod:a.mod}):this.negative&e.negative?(a=this.neg().divmod(e.neg(),t),"div"!==t&&(o=a.mod.neg(),n&&0!==o.negative&&o.isub(e)),{div:a.div,mod:o}):e.length>this.length||this.cmp(e)<0?{div:new i(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new i(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new i(this.modn(e.words[0]))}:this._wordDiv(e,t);var s,o,a},i.prototype.div=function(e){return this.divmod(e,"div",!1).div},i.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},i.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},i.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,n=e.ushrn(1),i=e.andln(1),s=r.cmp(n);return s<0||1===i&&0===s?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},i.prototype.modn=function(e){r(e<=67108863);for(var t=(1<<26)%e,n=0,i=this.length-1;i>=0;i--)n=(t*n+(0|this.words[i]))%e;return n},i.prototype.idivn=function(e){r(e<=67108863);for(var t=0,n=this.length-1;n>=0;n--){var i=(0|this.words[n])+67108864*t;this.words[n]=i/e|0,t=i%e}return this.strip()},i.prototype.divn=function(e){return this.clone().idivn(e)},i.prototype.egcd=function(e){r(0===e.negative),r(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var s=new i(1),o=new i(0),a=new i(0),l=new i(1),c=0;t.isEven()&&n.isEven();)t.iushrn(1),n.iushrn(1),++c;for(var h=n.clone(),u=t.clone();!t.isZero();){for(var f=0,d=1;!(t.words[0]&d)&&f<26;++f,d<<=1);if(f>0)for(t.iushrn(f);f-- >0;)(s.isOdd()||o.isOdd())&&(s.iadd(h),o.isub(u)),s.iushrn(1),o.iushrn(1);for(var p=0,m=1;!(n.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(n.iushrn(p);p-- >0;)(a.isOdd()||l.isOdd())&&(a.iadd(h),l.isub(u)),a.iushrn(1),l.iushrn(1);t.cmp(n)>=0?(t.isub(n),s.isub(a),o.isub(l)):(n.isub(t),a.isub(s),l.isub(o))}return{a:a,b:l,gcd:n.iushln(c)}},i.prototype._invmp=function(e){r(0===e.negative),r(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var s,o=new i(1),a=new i(0),l=n.clone();t.cmpn(1)>0&&n.cmpn(1)>0;){for(var c=0,h=1;!(t.words[0]&h)&&c<26;++c,h<<=1);if(c>0)for(t.iushrn(c);c-- >0;)o.isOdd()&&o.iadd(l),o.iushrn(1);for(var u=0,f=1;!(n.words[0]&f)&&u<26;++u,f<<=1);if(u>0)for(n.iushrn(u);u-- >0;)a.isOdd()&&a.iadd(l),a.iushrn(1);t.cmp(n)>=0?(t.isub(n),o.isub(a)):(n.isub(t),a.isub(o))}return(s=0===t.cmpn(1)?o:a).cmpn(0)<0&&s.iadd(e),s},i.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var n=0;t.isEven()&&r.isEven();n++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=t.cmp(r);if(i<0){var s=t;t=r,r=s}else if(0===i||0===r.cmpn(1))break;t.isub(r)}return r.iushln(n)},i.prototype.invm=function(e){return this.egcd(e).a.umod(e)},i.prototype.isEven=function(){return!(1&this.words[0])},i.prototype.isOdd=function(){return!(1&~this.words[0])},i.prototype.andln=function(e){return this.words[0]&e},i.prototype.bincn=function(e){r("number"==typeof e);var t=e%26,n=(e-t)/26,i=1<>>26,a&=67108863,this.words[o]=a}return 0!==s&&(this.words[o]=s,this.length++),this},i.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},i.prototype.cmpn=function(e){var t,n=e<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;if(this.strip(),this.length>1)t=1;else{n&&(e=-e),r(e<=67108863,"Number is too big");var i=0|this.words[0];t=i===e?0:ie.length)return 1;if(this.length=0;r--){var n=0|this.words[r],i=0|e.words[r];if(n!==i){ni&&(t=1);break}}return t},i.prototype.gtn=function(e){return 1===this.cmpn(e)},i.prototype.gt=function(e){return 1===this.cmp(e)},i.prototype.gten=function(e){return this.cmpn(e)>=0},i.prototype.gte=function(e){return this.cmp(e)>=0},i.prototype.ltn=function(e){return-1===this.cmpn(e)},i.prototype.lt=function(e){return-1===this.cmp(e)},i.prototype.lten=function(e){return this.cmpn(e)<=0},i.prototype.lte=function(e){return this.cmp(e)<=0},i.prototype.eqn=function(e){return 0===this.cmpn(e)},i.prototype.eq=function(e){return 0===this.cmp(e)},i.red=function(e){return new x(e)},i.prototype.toRed=function(e){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},i.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(e){return this.red=e,this},i.prototype.forceRed=function(e){return r(!this.red,"Already a number in reduction context"),this._forceRed(e)},i.prototype.redAdd=function(e){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},i.prototype.redIAdd=function(e){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},i.prototype.redSub=function(e){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},i.prototype.redISub=function(e){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},i.prototype.redShl=function(e){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},i.prototype.redMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},i.prototype.redIMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},i.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(e){return r(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var b={k256:null,p224:null,p192:null,p25519:null};function g(e,t){this.name=e,this.p=new i(t,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function y(){g.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function v(){g.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){g.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function _(){g.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function x(e){if("string"==typeof e){var t=i._prime(e);this.m=t.p,this.prime=t}else r(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function k(e){x.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}g.prototype._tmp=function(){var e=new i(null);return e.words=new Array(Math.ceil(this.n/13)),e},g.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var n=t0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},g.prototype.split=function(e,t){e.iushrn(this.n,0,t)},g.prototype.imulK=function(e){return e.imul(this.k)},n(y,g),y.prototype.split=function(e,t){for(var r=Math.min(e.length,9),n=0;n>>22,i=s}i>>>=22,e.words[n-10]=i,0===i&&e.length>10?e.length-=10:e.length-=9},y.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r>>=26,e.words[r]=i,t=n}return 0!==t&&(e.words[e.length++]=t),e},i._prime=function(e){if(b[e])return b[e];var t;if("k256"===e)t=new y;else if("p224"===e)t=new v;else if("p192"===e)t=new w;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new _}return b[e]=t,t},x.prototype._verify1=function(e){r(0===e.negative,"red works only with positives"),r(e.red,"red works only with red numbers")},x.prototype._verify2=function(e,t){r(!(e.negative|t.negative),"red works only with positives"),r(e.red&&e.red===t.red,"red works only with red numbers")},x.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},x.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},x.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},x.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},x.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},x.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},x.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},x.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},x.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},x.prototype.isqr=function(e){return this.imul(e,e.clone())},x.prototype.sqr=function(e){return this.mul(e,e)},x.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(r(t%2==1),3===t){var n=this.m.add(new i(1)).iushrn(2);return this.pow(e,n)}for(var s=this.m.subn(1),o=0;!s.isZero()&&0===s.andln(1);)o++,s.iushrn(1);r(!s.isZero());var a=new i(1).toRed(this),l=a.redNeg(),c=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new i(2*h*h).toRed(this);0!==this.pow(h,c).cmp(l);)h.redIAdd(l);for(var u=this.pow(h,s),f=this.pow(e,s.addn(1).iushrn(1)),d=this.pow(e,s),p=o;0!==d.cmp(a);){for(var m=d,b=0;0!==m.cmp(a);b++)m=m.redSqr();r(b=0;n--){for(var c=t.words[n],h=l-1;h>=0;h--){var u=c>>h&1;s!==r[0]&&(s=this.sqr(s)),0!==u||0!==o?(o<<=1,o|=u,(4==++a||0===n&&0===h)&&(s=this.mul(s,r[o]),a=0,o=0)):a=0}l=26}return s},x.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},x.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},i.mont=function(e){return new k(e)},n(k,x),k.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},k.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},k.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),s=i;return i.cmp(this.m)>=0?s=i.isub(this.m):i.cmpn(0)<0&&(s=i.iadd(this.m)),s._forceRed(this)},k.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new i(0)._forceRed(this);var r=e.mul(t),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),s=r.isub(n).iushrn(this.shift),o=s;return s.cmp(this.m)>=0?o=s.isub(this.m):s.cmpn(0)<0&&(o=s.iadd(this.m)),o._forceRed(this)},k.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(void 0===t||t)},{buffer:188}],185:[function(e,t,r){r.byteLength=function(e){var t=c(e),r=t[0],n=t[1];return 3*(r+n)/4-n},r.toByteArray=function(e){var t,r,n,o=c(e),a=o[0],l=o[1],h=new s(3*(a+(n=l))/4-n),u=0,f=l>0?a-4:a;for(r=0;r>16&255,h[u++]=t>>8&255,h[u++]=255&t;return 2===l&&(t=i[e.charCodeAt(r)]<<2|i[e.charCodeAt(r+1)]>>4,h[u++]=255&t),1===l&&(t=i[e.charCodeAt(r)]<<10|i[e.charCodeAt(r+1)]<<4|i[e.charCodeAt(r+2)]>>2,h[u++]=t>>8&255,h[u++]=255&t),h},r.fromByteArray=function(e){for(var t,r=e.length,i=r%3,s=[],o=0,a=r-i;oa?a:o+16383));return 1===i?(t=e[r-1],s.push(n[t>>2]+n[t<<4&63]+"==")):2===i&&(t=(e[r-2]<<8)+e[r-1],s.push(n[t>>10]+n[t>>4&63]+n[t<<2&63]+"=")),s.join("")};for(var n=[],i=[],s="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,l=o.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function h(e,t,r){for(var i,s,o=[],a=t;a>18&63]+n[s>>12&63]+n[s>>6&63]+n[63&s]);return o.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},{}],186:[function(e,t,r){!function(t){function r(e,t){if(!e)throw new Error(t||"Assertion failed")}function n(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}function i(e,t,r){if(i.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==t&&"be"!==t||(r=t,t=10),this._init(e||0,t||10,r||"be"))}var s;"object"==typeof t?t.exports=i:(void 0).BN=i,i.BN=i,i.wordSize=26;try{s="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:e("buffer").Buffer}catch(M){}function o(e,t){var n=e.charCodeAt(t);return n>=48&&n<=57?n-48:n>=65&&n<=70?n-55:n>=97&&n<=102?n-87:void r(!1,"Invalid character in "+e)}function a(e,t,r){var n=o(e,r);return r-1>=t&&(n|=o(e,r-1)<<4),n}function l(e,t,n,i){for(var s=0,o=0,a=Math.min(e.length,n),l=t;l=49?c-49+10:c>=17?c-17+10:c,r(c>=0&&o0?e:t},i.min=function(e,t){return e.cmp(t)<0?e:t},i.prototype._init=function(e,t,n){if("number"==typeof e)return this._initNumber(e,t,n);if("object"==typeof e)return this._initArray(e,t,n);"hex"===t&&(t=16),r(t===(0|t)&&t>=2&&t<=36);var i=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(i++,this.negative=1),i=0;i-=3)o=e[i]|e[i-1]<<8|e[i-2]<<16,this.words[s]|=o<>>26-a&67108863,(a+=24)>=26&&(a-=26,s++);else if("le"===n)for(i=0,s=0;i>>26-a&67108863,(a+=24)>=26&&(a-=26,s++);return this._strip()},i.prototype._parseHex=function(e,t,r){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var n=0;n=t;n-=2)i=a(e,t,n)<=18?(s-=18,o+=1,this.words[o]|=i>>>26):s+=8;else for(n=(e.length-t)%2==0?t+1:t;n=18?(s-=18,o+=1,this.words[o]|=i>>>26):s+=8;this._strip()},i.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=t)n++;n--,i=i/t|0;for(var s=e.length-r,o=s%n,a=Math.min(s,s-o)+r,c=0,h=r;h1&&0===this.words[this.length-1];)this.length--;return this._normSign()},i.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},"undefined"!=typeof Symbol&&"function"==typeof Symbol.for)try{i.prototype[Symbol.for("nodejs.util.inspect.custom")]=h}catch(M){i.prototype.inspect=h}else i.prototype.inspect=h;function h(){return(this.red?""}var u=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],f=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],d=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function p(e,t,r){r.negative=t.negative^e.negative;var n=e.length+t.length|0;r.length=n,n=n-1|0;var i=0|e.words[0],s=0|t.words[0],o=i*s,a=67108863&o,l=o/67108864|0;r.words[0]=a;for(var c=1;c>>26,u=67108863&l,f=Math.min(c,t.length-1),d=Math.max(0,c-e.length+1);d<=f;d++){var p=c-d|0;h+=(o=(i=0|e.words[p])*(s=0|t.words[d])+u)/67108864|0,u=67108863&o}r.words[c]=0|u,l=0|h}return 0!==l?r.words[c]=0|l:r.length--,r._strip()}i.prototype.toString=function(e,t){var n;if(t=0|t||1,16===(e=e||10)||"hex"===e){n="";for(var i=0,s=0,o=0;o>>24-i&16777215,(i+=2)>=26&&(i-=26,o--),n=0!==s||o!==this.length-1?u[6-l.length]+l+n:l+n}for(0!==s&&(n=s.toString(16)+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}if(e===(0|e)&&e>=2&&e<=36){var c=f[e],h=d[e];n="";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modrn(h).toString(e);n=(p=p.idivn(h)).isZero()?m+n:u[c-m.length]+m+n}for(this.isZero()&&(n="0"+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}r(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},i.prototype.toJSON=function(){return this.toString(16,2)},s&&(i.prototype.toBuffer=function(e,t){return this.toArrayLike(s,e,t)}),i.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},i.prototype.toArrayLike=function(e,t,n){this._strip();var i=this.byteLength(),s=n||Math.max(1,i);r(i<=s,"byte array longer than desired length"),r(s>0,"Requested array length <= 0");var o,a,l=(a=s,(o=e).allocUnsafe?o.allocUnsafe(a):new o(a));return this["_toArrayLike"+("le"===t?"LE":"BE")](l,i),l},i.prototype._toArrayLikeLE=function(e,t){for(var r=0,n=0,i=0,s=0;i>8&255),r>16&255),6===s?(r>24&255),n=0,s=0):(n=o>>>24,s+=2)}if(r=0&&(e[r--]=o>>8&255),r>=0&&(e[r--]=o>>16&255),6===s?(r>=0&&(e[r--]=o>>24&255),n=0,s=0):(n=o>>>24,s+=2)}if(r>=0)for(e[r--]=n;r>=0;)e[r--]=0},Math.clz32?i.prototype._countBits=function(e){return 32-Math.clz32(e)}:i.prototype._countBits=function(e){var t=e,r=0;return t>=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},i.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return!(8191&t)&&(r+=13,t>>>=13),!(127&t)&&(r+=7,t>>>=7),!(15&t)&&(r+=4,t>>>=4),!(3&t)&&(r+=2,t>>>=2),!(1&t)&&r++,r},i.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},i.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},i.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},i.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},i.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var n=0;ne.length?this.clone().ixor(e):e.clone().ixor(this)},i.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},i.prototype.inotn=function(e){r("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),n=e%26;this._expand(t),n>0&&t--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-n),this._strip()},i.prototype.notn=function(e){return this.clone().inotn(e)},i.prototype.setn=function(e,t){r("number"==typeof e&&e>=0);var n=e/26|0,i=e%26;return this._expand(n+1),this.words[n]=t?this.words[n]|1<e.length?(r=this,n=e):(r=e,n=this);for(var i=0,s=0;s>>26;for(;0!==i&&s>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;se.length?this.clone().iadd(e):e.clone().iadd(this)},i.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,n,i=this.cmp(e);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(r=this,n=e):(r=e,n=this);for(var s=0,o=0;o>26,this.words[o]=67108863&t;for(;0!==s&&o>26,this.words[o]=67108863&t;if(0===s&&o>>13,d=0|o[1],p=8191&d,m=d>>>13,b=0|o[2],g=8191&b,y=b>>>13,v=0|o[3],w=8191&v,_=v>>>13,x=0|o[4],k=8191&x,S=x>>>13,C=0|o[5],M=8191&C,T=C>>>13,E=0|o[6],A=8191&E,R=E>>>13,j=0|o[7],O=8191&j,I=j>>>13,N=0|o[8],P=8191&N,B=N>>>13,D=0|o[9],F=8191&D,L=D>>>13,z=0|a[0],U=8191&z,V=z>>>13,$=0|a[1],H=8191&$,q=$>>>13,W=0|a[2],X=8191&W,Y=W>>>13,K=0|a[3],Z=8191&K,G=K>>>13,J=0|a[4],Q=8191&J,ee=J>>>13,te=0|a[5],re=8191&te,ne=te>>>13,ie=0|a[6],se=8191&ie,oe=ie>>>13,ae=0|a[7],le=8191&ae,ce=ae>>>13,he=0|a[8],ue=8191&he,fe=he>>>13,de=0|a[9],pe=8191&de,me=de>>>13;r.negative=e.negative^t.negative,r.length=19;var be=(c+(n=Math.imul(u,U))|0)+((8191&(i=(i=Math.imul(u,V))+Math.imul(f,U)|0))<<13)|0;c=((s=Math.imul(f,V))+(i>>>13)|0)+(be>>>26)|0,be&=67108863,n=Math.imul(p,U),i=(i=Math.imul(p,V))+Math.imul(m,U)|0,s=Math.imul(m,V);var ge=(c+(n=n+Math.imul(u,H)|0)|0)+((8191&(i=(i=i+Math.imul(u,q)|0)+Math.imul(f,H)|0))<<13)|0;c=((s=s+Math.imul(f,q)|0)+(i>>>13)|0)+(ge>>>26)|0,ge&=67108863,n=Math.imul(g,U),i=(i=Math.imul(g,V))+Math.imul(y,U)|0,s=Math.imul(y,V),n=n+Math.imul(p,H)|0,i=(i=i+Math.imul(p,q)|0)+Math.imul(m,H)|0,s=s+Math.imul(m,q)|0;var ye=(c+(n=n+Math.imul(u,X)|0)|0)+((8191&(i=(i=i+Math.imul(u,Y)|0)+Math.imul(f,X)|0))<<13)|0;c=((s=s+Math.imul(f,Y)|0)+(i>>>13)|0)+(ye>>>26)|0,ye&=67108863,n=Math.imul(w,U),i=(i=Math.imul(w,V))+Math.imul(_,U)|0,s=Math.imul(_,V),n=n+Math.imul(g,H)|0,i=(i=i+Math.imul(g,q)|0)+Math.imul(y,H)|0,s=s+Math.imul(y,q)|0,n=n+Math.imul(p,X)|0,i=(i=i+Math.imul(p,Y)|0)+Math.imul(m,X)|0,s=s+Math.imul(m,Y)|0;var ve=(c+(n=n+Math.imul(u,Z)|0)|0)+((8191&(i=(i=i+Math.imul(u,G)|0)+Math.imul(f,Z)|0))<<13)|0;c=((s=s+Math.imul(f,G)|0)+(i>>>13)|0)+(ve>>>26)|0,ve&=67108863,n=Math.imul(k,U),i=(i=Math.imul(k,V))+Math.imul(S,U)|0,s=Math.imul(S,V),n=n+Math.imul(w,H)|0,i=(i=i+Math.imul(w,q)|0)+Math.imul(_,H)|0,s=s+Math.imul(_,q)|0,n=n+Math.imul(g,X)|0,i=(i=i+Math.imul(g,Y)|0)+Math.imul(y,X)|0,s=s+Math.imul(y,Y)|0,n=n+Math.imul(p,Z)|0,i=(i=i+Math.imul(p,G)|0)+Math.imul(m,Z)|0,s=s+Math.imul(m,G)|0;var we=(c+(n=n+Math.imul(u,Q)|0)|0)+((8191&(i=(i=i+Math.imul(u,ee)|0)+Math.imul(f,Q)|0))<<13)|0;c=((s=s+Math.imul(f,ee)|0)+(i>>>13)|0)+(we>>>26)|0,we&=67108863,n=Math.imul(M,U),i=(i=Math.imul(M,V))+Math.imul(T,U)|0,s=Math.imul(T,V),n=n+Math.imul(k,H)|0,i=(i=i+Math.imul(k,q)|0)+Math.imul(S,H)|0,s=s+Math.imul(S,q)|0,n=n+Math.imul(w,X)|0,i=(i=i+Math.imul(w,Y)|0)+Math.imul(_,X)|0,s=s+Math.imul(_,Y)|0,n=n+Math.imul(g,Z)|0,i=(i=i+Math.imul(g,G)|0)+Math.imul(y,Z)|0,s=s+Math.imul(y,G)|0,n=n+Math.imul(p,Q)|0,i=(i=i+Math.imul(p,ee)|0)+Math.imul(m,Q)|0,s=s+Math.imul(m,ee)|0;var _e=(c+(n=n+Math.imul(u,re)|0)|0)+((8191&(i=(i=i+Math.imul(u,ne)|0)+Math.imul(f,re)|0))<<13)|0;c=((s=s+Math.imul(f,ne)|0)+(i>>>13)|0)+(_e>>>26)|0,_e&=67108863,n=Math.imul(A,U),i=(i=Math.imul(A,V))+Math.imul(R,U)|0,s=Math.imul(R,V),n=n+Math.imul(M,H)|0,i=(i=i+Math.imul(M,q)|0)+Math.imul(T,H)|0,s=s+Math.imul(T,q)|0,n=n+Math.imul(k,X)|0,i=(i=i+Math.imul(k,Y)|0)+Math.imul(S,X)|0,s=s+Math.imul(S,Y)|0,n=n+Math.imul(w,Z)|0,i=(i=i+Math.imul(w,G)|0)+Math.imul(_,Z)|0,s=s+Math.imul(_,G)|0,n=n+Math.imul(g,Q)|0,i=(i=i+Math.imul(g,ee)|0)+Math.imul(y,Q)|0,s=s+Math.imul(y,ee)|0,n=n+Math.imul(p,re)|0,i=(i=i+Math.imul(p,ne)|0)+Math.imul(m,re)|0,s=s+Math.imul(m,ne)|0;var xe=(c+(n=n+Math.imul(u,se)|0)|0)+((8191&(i=(i=i+Math.imul(u,oe)|0)+Math.imul(f,se)|0))<<13)|0;c=((s=s+Math.imul(f,oe)|0)+(i>>>13)|0)+(xe>>>26)|0,xe&=67108863,n=Math.imul(O,U),i=(i=Math.imul(O,V))+Math.imul(I,U)|0,s=Math.imul(I,V),n=n+Math.imul(A,H)|0,i=(i=i+Math.imul(A,q)|0)+Math.imul(R,H)|0,s=s+Math.imul(R,q)|0,n=n+Math.imul(M,X)|0,i=(i=i+Math.imul(M,Y)|0)+Math.imul(T,X)|0,s=s+Math.imul(T,Y)|0,n=n+Math.imul(k,Z)|0,i=(i=i+Math.imul(k,G)|0)+Math.imul(S,Z)|0,s=s+Math.imul(S,G)|0,n=n+Math.imul(w,Q)|0,i=(i=i+Math.imul(w,ee)|0)+Math.imul(_,Q)|0,s=s+Math.imul(_,ee)|0,n=n+Math.imul(g,re)|0,i=(i=i+Math.imul(g,ne)|0)+Math.imul(y,re)|0,s=s+Math.imul(y,ne)|0,n=n+Math.imul(p,se)|0,i=(i=i+Math.imul(p,oe)|0)+Math.imul(m,se)|0,s=s+Math.imul(m,oe)|0;var ke=(c+(n=n+Math.imul(u,le)|0)|0)+((8191&(i=(i=i+Math.imul(u,ce)|0)+Math.imul(f,le)|0))<<13)|0;c=((s=s+Math.imul(f,ce)|0)+(i>>>13)|0)+(ke>>>26)|0,ke&=67108863,n=Math.imul(P,U),i=(i=Math.imul(P,V))+Math.imul(B,U)|0,s=Math.imul(B,V),n=n+Math.imul(O,H)|0,i=(i=i+Math.imul(O,q)|0)+Math.imul(I,H)|0,s=s+Math.imul(I,q)|0,n=n+Math.imul(A,X)|0,i=(i=i+Math.imul(A,Y)|0)+Math.imul(R,X)|0,s=s+Math.imul(R,Y)|0,n=n+Math.imul(M,Z)|0,i=(i=i+Math.imul(M,G)|0)+Math.imul(T,Z)|0,s=s+Math.imul(T,G)|0,n=n+Math.imul(k,Q)|0,i=(i=i+Math.imul(k,ee)|0)+Math.imul(S,Q)|0,s=s+Math.imul(S,ee)|0,n=n+Math.imul(w,re)|0,i=(i=i+Math.imul(w,ne)|0)+Math.imul(_,re)|0,s=s+Math.imul(_,ne)|0,n=n+Math.imul(g,se)|0,i=(i=i+Math.imul(g,oe)|0)+Math.imul(y,se)|0,s=s+Math.imul(y,oe)|0,n=n+Math.imul(p,le)|0,i=(i=i+Math.imul(p,ce)|0)+Math.imul(m,le)|0,s=s+Math.imul(m,ce)|0;var Se=(c+(n=n+Math.imul(u,ue)|0)|0)+((8191&(i=(i=i+Math.imul(u,fe)|0)+Math.imul(f,ue)|0))<<13)|0;c=((s=s+Math.imul(f,fe)|0)+(i>>>13)|0)+(Se>>>26)|0,Se&=67108863,n=Math.imul(F,U),i=(i=Math.imul(F,V))+Math.imul(L,U)|0,s=Math.imul(L,V),n=n+Math.imul(P,H)|0,i=(i=i+Math.imul(P,q)|0)+Math.imul(B,H)|0,s=s+Math.imul(B,q)|0,n=n+Math.imul(O,X)|0,i=(i=i+Math.imul(O,Y)|0)+Math.imul(I,X)|0,s=s+Math.imul(I,Y)|0,n=n+Math.imul(A,Z)|0,i=(i=i+Math.imul(A,G)|0)+Math.imul(R,Z)|0,s=s+Math.imul(R,G)|0,n=n+Math.imul(M,Q)|0,i=(i=i+Math.imul(M,ee)|0)+Math.imul(T,Q)|0,s=s+Math.imul(T,ee)|0,n=n+Math.imul(k,re)|0,i=(i=i+Math.imul(k,ne)|0)+Math.imul(S,re)|0,s=s+Math.imul(S,ne)|0,n=n+Math.imul(w,se)|0,i=(i=i+Math.imul(w,oe)|0)+Math.imul(_,se)|0,s=s+Math.imul(_,oe)|0,n=n+Math.imul(g,le)|0,i=(i=i+Math.imul(g,ce)|0)+Math.imul(y,le)|0,s=s+Math.imul(y,ce)|0,n=n+Math.imul(p,ue)|0,i=(i=i+Math.imul(p,fe)|0)+Math.imul(m,ue)|0,s=s+Math.imul(m,fe)|0;var Ce=(c+(n=n+Math.imul(u,pe)|0)|0)+((8191&(i=(i=i+Math.imul(u,me)|0)+Math.imul(f,pe)|0))<<13)|0;c=((s=s+Math.imul(f,me)|0)+(i>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,n=Math.imul(F,H),i=(i=Math.imul(F,q))+Math.imul(L,H)|0,s=Math.imul(L,q),n=n+Math.imul(P,X)|0,i=(i=i+Math.imul(P,Y)|0)+Math.imul(B,X)|0,s=s+Math.imul(B,Y)|0,n=n+Math.imul(O,Z)|0,i=(i=i+Math.imul(O,G)|0)+Math.imul(I,Z)|0,s=s+Math.imul(I,G)|0,n=n+Math.imul(A,Q)|0,i=(i=i+Math.imul(A,ee)|0)+Math.imul(R,Q)|0,s=s+Math.imul(R,ee)|0,n=n+Math.imul(M,re)|0,i=(i=i+Math.imul(M,ne)|0)+Math.imul(T,re)|0,s=s+Math.imul(T,ne)|0,n=n+Math.imul(k,se)|0,i=(i=i+Math.imul(k,oe)|0)+Math.imul(S,se)|0,s=s+Math.imul(S,oe)|0,n=n+Math.imul(w,le)|0,i=(i=i+Math.imul(w,ce)|0)+Math.imul(_,le)|0,s=s+Math.imul(_,ce)|0,n=n+Math.imul(g,ue)|0,i=(i=i+Math.imul(g,fe)|0)+Math.imul(y,ue)|0,s=s+Math.imul(y,fe)|0;var Me=(c+(n=n+Math.imul(p,pe)|0)|0)+((8191&(i=(i=i+Math.imul(p,me)|0)+Math.imul(m,pe)|0))<<13)|0;c=((s=s+Math.imul(m,me)|0)+(i>>>13)|0)+(Me>>>26)|0,Me&=67108863,n=Math.imul(F,X),i=(i=Math.imul(F,Y))+Math.imul(L,X)|0,s=Math.imul(L,Y),n=n+Math.imul(P,Z)|0,i=(i=i+Math.imul(P,G)|0)+Math.imul(B,Z)|0,s=s+Math.imul(B,G)|0,n=n+Math.imul(O,Q)|0,i=(i=i+Math.imul(O,ee)|0)+Math.imul(I,Q)|0,s=s+Math.imul(I,ee)|0,n=n+Math.imul(A,re)|0,i=(i=i+Math.imul(A,ne)|0)+Math.imul(R,re)|0,s=s+Math.imul(R,ne)|0,n=n+Math.imul(M,se)|0,i=(i=i+Math.imul(M,oe)|0)+Math.imul(T,se)|0,s=s+Math.imul(T,oe)|0,n=n+Math.imul(k,le)|0,i=(i=i+Math.imul(k,ce)|0)+Math.imul(S,le)|0,s=s+Math.imul(S,ce)|0,n=n+Math.imul(w,ue)|0,i=(i=i+Math.imul(w,fe)|0)+Math.imul(_,ue)|0,s=s+Math.imul(_,fe)|0;var Te=(c+(n=n+Math.imul(g,pe)|0)|0)+((8191&(i=(i=i+Math.imul(g,me)|0)+Math.imul(y,pe)|0))<<13)|0;c=((s=s+Math.imul(y,me)|0)+(i>>>13)|0)+(Te>>>26)|0,Te&=67108863,n=Math.imul(F,Z),i=(i=Math.imul(F,G))+Math.imul(L,Z)|0,s=Math.imul(L,G),n=n+Math.imul(P,Q)|0,i=(i=i+Math.imul(P,ee)|0)+Math.imul(B,Q)|0,s=s+Math.imul(B,ee)|0,n=n+Math.imul(O,re)|0,i=(i=i+Math.imul(O,ne)|0)+Math.imul(I,re)|0,s=s+Math.imul(I,ne)|0,n=n+Math.imul(A,se)|0,i=(i=i+Math.imul(A,oe)|0)+Math.imul(R,se)|0,s=s+Math.imul(R,oe)|0,n=n+Math.imul(M,le)|0,i=(i=i+Math.imul(M,ce)|0)+Math.imul(T,le)|0,s=s+Math.imul(T,ce)|0,n=n+Math.imul(k,ue)|0,i=(i=i+Math.imul(k,fe)|0)+Math.imul(S,ue)|0,s=s+Math.imul(S,fe)|0;var Ee=(c+(n=n+Math.imul(w,pe)|0)|0)+((8191&(i=(i=i+Math.imul(w,me)|0)+Math.imul(_,pe)|0))<<13)|0;c=((s=s+Math.imul(_,me)|0)+(i>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,n=Math.imul(F,Q),i=(i=Math.imul(F,ee))+Math.imul(L,Q)|0,s=Math.imul(L,ee),n=n+Math.imul(P,re)|0,i=(i=i+Math.imul(P,ne)|0)+Math.imul(B,re)|0,s=s+Math.imul(B,ne)|0,n=n+Math.imul(O,se)|0,i=(i=i+Math.imul(O,oe)|0)+Math.imul(I,se)|0,s=s+Math.imul(I,oe)|0,n=n+Math.imul(A,le)|0,i=(i=i+Math.imul(A,ce)|0)+Math.imul(R,le)|0,s=s+Math.imul(R,ce)|0,n=n+Math.imul(M,ue)|0,i=(i=i+Math.imul(M,fe)|0)+Math.imul(T,ue)|0,s=s+Math.imul(T,fe)|0;var Ae=(c+(n=n+Math.imul(k,pe)|0)|0)+((8191&(i=(i=i+Math.imul(k,me)|0)+Math.imul(S,pe)|0))<<13)|0;c=((s=s+Math.imul(S,me)|0)+(i>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,n=Math.imul(F,re),i=(i=Math.imul(F,ne))+Math.imul(L,re)|0,s=Math.imul(L,ne),n=n+Math.imul(P,se)|0,i=(i=i+Math.imul(P,oe)|0)+Math.imul(B,se)|0,s=s+Math.imul(B,oe)|0,n=n+Math.imul(O,le)|0,i=(i=i+Math.imul(O,ce)|0)+Math.imul(I,le)|0,s=s+Math.imul(I,ce)|0,n=n+Math.imul(A,ue)|0,i=(i=i+Math.imul(A,fe)|0)+Math.imul(R,ue)|0,s=s+Math.imul(R,fe)|0;var Re=(c+(n=n+Math.imul(M,pe)|0)|0)+((8191&(i=(i=i+Math.imul(M,me)|0)+Math.imul(T,pe)|0))<<13)|0;c=((s=s+Math.imul(T,me)|0)+(i>>>13)|0)+(Re>>>26)|0,Re&=67108863,n=Math.imul(F,se),i=(i=Math.imul(F,oe))+Math.imul(L,se)|0,s=Math.imul(L,oe),n=n+Math.imul(P,le)|0,i=(i=i+Math.imul(P,ce)|0)+Math.imul(B,le)|0,s=s+Math.imul(B,ce)|0,n=n+Math.imul(O,ue)|0,i=(i=i+Math.imul(O,fe)|0)+Math.imul(I,ue)|0,s=s+Math.imul(I,fe)|0;var je=(c+(n=n+Math.imul(A,pe)|0)|0)+((8191&(i=(i=i+Math.imul(A,me)|0)+Math.imul(R,pe)|0))<<13)|0;c=((s=s+Math.imul(R,me)|0)+(i>>>13)|0)+(je>>>26)|0,je&=67108863,n=Math.imul(F,le),i=(i=Math.imul(F,ce))+Math.imul(L,le)|0,s=Math.imul(L,ce),n=n+Math.imul(P,ue)|0,i=(i=i+Math.imul(P,fe)|0)+Math.imul(B,ue)|0,s=s+Math.imul(B,fe)|0;var Oe=(c+(n=n+Math.imul(O,pe)|0)|0)+((8191&(i=(i=i+Math.imul(O,me)|0)+Math.imul(I,pe)|0))<<13)|0;c=((s=s+Math.imul(I,me)|0)+(i>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,n=Math.imul(F,ue),i=(i=Math.imul(F,fe))+Math.imul(L,ue)|0,s=Math.imul(L,fe);var Ie=(c+(n=n+Math.imul(P,pe)|0)|0)+((8191&(i=(i=i+Math.imul(P,me)|0)+Math.imul(B,pe)|0))<<13)|0;c=((s=s+Math.imul(B,me)|0)+(i>>>13)|0)+(Ie>>>26)|0,Ie&=67108863;var Ne=(c+(n=Math.imul(F,pe))|0)+((8191&(i=(i=Math.imul(F,me))+Math.imul(L,pe)|0))<<13)|0;return c=((s=Math.imul(L,me))+(i>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,l[0]=be,l[1]=ge,l[2]=ye,l[3]=ve,l[4]=we,l[5]=_e,l[6]=xe,l[7]=ke,l[8]=Se,l[9]=Ce,l[10]=Me,l[11]=Te,l[12]=Ee,l[13]=Ae,l[14]=Re,l[15]=je,l[16]=Oe,l[17]=Ie,l[18]=Ne,0!==c&&(l[19]=c,r.length++),r};function b(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var n=0,i=0,s=0;s>>26)|0)>>>26,o&=67108863}r.words[s]=a,n=o,o=i}return 0!==n?r.words[s]=n:r.length--,r._strip()}function g(e,t,r){return b(e,t,r)}Math.imul||(m=p),i.prototype.mulTo=function(e,t){var r=this.length+e.length;return 10===this.length&&10===e.length?m(this,e,t):r<63?p(this,e,t):r<1024?b(this,e,t):g(this,e,t)},i.prototype.mul=function(e){var t=new i(null);return t.words=new Array(this.length+e.length),this.mulTo(e,t)},i.prototype.mulf=function(e){var t=new i(null);return t.words=new Array(this.length+e.length),g(this,e,t)},i.prototype.imul=function(e){return this.clone().mulTo(e,this)},i.prototype.imuln=function(e){var t=e<0;t&&(e=-e),r("number"==typeof e),r(e<67108864);for(var n=0,i=0;i>=26,n+=s/67108864|0,n+=o>>>26,this.words[i]=67108863&o}return 0!==n&&(this.words[i]=n,this.length++),t?this.ineg():this},i.prototype.muln=function(e){return this.clone().imuln(e)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r>>i&1}return t}(e);if(0===t.length)return new i(1);for(var r=this,n=0;n=0);var t,n=e%26,i=(e-n)/26,s=67108863>>>26-n<<26-n;if(0!==n){var o=0;for(t=0;t>>26-n}o&&(this.words[t]=o,this.length++)}if(0!==i){for(t=this.length-1;t>=0;t--)this.words[t+i]=this.words[t];for(t=0;t=0),i=t?(t-t%26)/26:0;var s=e%26,o=Math.min((e-s)/26,this.length),a=67108863^67108863>>>s<o)for(this.length-=o,c=0;c=0&&(0!==h||c>=i);c--){var u=0|this.words[c];this.words[c]=h<<26-s|u>>>s,h=u&a}return l&&0!==h&&(l.words[l.length++]=h),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},i.prototype.ishrn=function(e,t,n){return r(0===this.negative),this.iushrn(e,t,n)},i.prototype.shln=function(e){return this.clone().ishln(e)},i.prototype.ushln=function(e){return this.clone().iushln(e)},i.prototype.shrn=function(e){return this.clone().ishrn(e)},i.prototype.ushrn=function(e){return this.clone().iushrn(e)},i.prototype.testn=function(e){r("number"==typeof e&&e>=0);var t=e%26,n=(e-t)/26,i=1<=0);var t=e%26,n=(e-t)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=n)return this;if(0!==t&&n++,this.length=Math.min(n,this.length),0!==t){var i=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},i.prototype.isubn=function(e){if(r("number"==typeof e),r(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(l/67108864|0),this.words[i+n]=67108863&s}for(;i>26,this.words[i+n]=67108863&s;if(0===a)return this._strip();for(r(-1===a),a=0,i=0;i>26,this.words[i]=67108863&s;return this.negative=1,this._strip()},i.prototype._wordDiv=function(e,t){var r=(this.length,e.length),n=this.clone(),s=e,o=0|s.words[s.length-1];0!=(r=26-this._countBits(o))&&(s=s.ushln(r),n.iushln(r),o=0|s.words[s.length-1]);var a,l=n.length-s.length;if("mod"!==t){(a=new i(null)).length=l+1,a.words=new Array(a.length);for(var c=0;c=0;u--){var f=67108864*(0|n.words[s.length+u])+(0|n.words[s.length+u-1]);for(f=Math.min(f/o|0,67108863),n._ishlnsubmul(s,f,u);0!==n.negative;)f--,n.negative=0,n._ishlnsubmul(s,1,u),n.isZero()||(n.negative^=1);a&&(a.words[u]=f)}return a&&a._strip(),n._strip(),"div"!==t&&0!==r&&n.iushrn(r),{div:a||null,mod:n}},i.prototype.divmod=function(e,t,n){return r(!e.isZero()),this.isZero()?{div:new i(0),mod:new i(0)}:0!==this.negative&&0===e.negative?(a=this.neg().divmod(e,t),"mod"!==t&&(s=a.div.neg()),"div"!==t&&(o=a.mod.neg(),n&&0!==o.negative&&o.iadd(e)),{div:s,mod:o}):0===this.negative&&0!==e.negative?(a=this.divmod(e.neg(),t),"mod"!==t&&(s=a.div.neg()),{div:s,mod:a.mod}):this.negative&e.negative?(a=this.neg().divmod(e.neg(),t),"div"!==t&&(o=a.mod.neg(),n&&0!==o.negative&&o.isub(e)),{div:a.div,mod:o}):e.length>this.length||this.cmp(e)<0?{div:new i(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new i(this.modrn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new i(this.modrn(e.words[0]))}:this._wordDiv(e,t);var s,o,a},i.prototype.div=function(e){return this.divmod(e,"div",!1).div},i.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},i.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},i.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,n=e.ushrn(1),i=e.andln(1),s=r.cmp(n);return s<0||1===i&&0===s?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},i.prototype.modrn=function(e){var t=e<0;t&&(e=-e),r(e<=67108863);for(var n=(1<<26)%e,i=0,s=this.length-1;s>=0;s--)i=(n*i+(0|this.words[s]))%e;return t?-i:i},i.prototype.modn=function(e){return this.modrn(e)},i.prototype.idivn=function(e){var t=e<0;t&&(e=-e),r(e<=67108863);for(var n=0,i=this.length-1;i>=0;i--){var s=(0|this.words[i])+67108864*n;this.words[i]=s/e|0,n=s%e}return this._strip(),t?this.ineg():this},i.prototype.divn=function(e){return this.clone().idivn(e)},i.prototype.egcd=function(e){r(0===e.negative),r(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var s=new i(1),o=new i(0),a=new i(0),l=new i(1),c=0;t.isEven()&&n.isEven();)t.iushrn(1),n.iushrn(1),++c;for(var h=n.clone(),u=t.clone();!t.isZero();){for(var f=0,d=1;!(t.words[0]&d)&&f<26;++f,d<<=1);if(f>0)for(t.iushrn(f);f-- >0;)(s.isOdd()||o.isOdd())&&(s.iadd(h),o.isub(u)),s.iushrn(1),o.iushrn(1);for(var p=0,m=1;!(n.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(n.iushrn(p);p-- >0;)(a.isOdd()||l.isOdd())&&(a.iadd(h),l.isub(u)),a.iushrn(1),l.iushrn(1);t.cmp(n)>=0?(t.isub(n),s.isub(a),o.isub(l)):(n.isub(t),a.isub(s),l.isub(o))}return{a:a,b:l,gcd:n.iushln(c)}},i.prototype._invmp=function(e){r(0===e.negative),r(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var s,o=new i(1),a=new i(0),l=n.clone();t.cmpn(1)>0&&n.cmpn(1)>0;){for(var c=0,h=1;!(t.words[0]&h)&&c<26;++c,h<<=1);if(c>0)for(t.iushrn(c);c-- >0;)o.isOdd()&&o.iadd(l),o.iushrn(1);for(var u=0,f=1;!(n.words[0]&f)&&u<26;++u,f<<=1);if(u>0)for(n.iushrn(u);u-- >0;)a.isOdd()&&a.iadd(l),a.iushrn(1);t.cmp(n)>=0?(t.isub(n),o.isub(a)):(n.isub(t),a.isub(o))}return(s=0===t.cmpn(1)?o:a).cmpn(0)<0&&s.iadd(e),s},i.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var n=0;t.isEven()&&r.isEven();n++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=t.cmp(r);if(i<0){var s=t;t=r,r=s}else if(0===i||0===r.cmpn(1))break;t.isub(r)}return r.iushln(n)},i.prototype.invm=function(e){return this.egcd(e).a.umod(e)},i.prototype.isEven=function(){return!(1&this.words[0])},i.prototype.isOdd=function(){return!(1&~this.words[0])},i.prototype.andln=function(e){return this.words[0]&e},i.prototype.bincn=function(e){r("number"==typeof e);var t=e%26,n=(e-t)/26,i=1<>>26,a&=67108863,this.words[o]=a}return 0!==s&&(this.words[o]=s,this.length++),this},i.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},i.prototype.cmpn=function(e){var t,n=e<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;if(this._strip(),this.length>1)t=1;else{n&&(e=-e),r(e<=67108863,"Number is too big");var i=0|this.words[0];t=i===e?0:ie.length)return 1;if(this.length=0;r--){var n=0|this.words[r],i=0|e.words[r];if(n!==i){ni&&(t=1);break}}return t},i.prototype.gtn=function(e){return 1===this.cmpn(e)},i.prototype.gt=function(e){return 1===this.cmp(e)},i.prototype.gten=function(e){return this.cmpn(e)>=0},i.prototype.gte=function(e){return this.cmp(e)>=0},i.prototype.ltn=function(e){return-1===this.cmpn(e)},i.prototype.lt=function(e){return-1===this.cmp(e)},i.prototype.lten=function(e){return this.cmpn(e)<=0},i.prototype.lte=function(e){return this.cmp(e)<=0},i.prototype.eqn=function(e){return 0===this.cmpn(e)},i.prototype.eq=function(e){return 0===this.cmp(e)},i.red=function(e){return new S(e)},i.prototype.toRed=function(e){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},i.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(e){return this.red=e,this},i.prototype.forceRed=function(e){return r(!this.red,"Already a number in reduction context"),this._forceRed(e)},i.prototype.redAdd=function(e){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},i.prototype.redIAdd=function(e){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},i.prototype.redSub=function(e){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},i.prototype.redISub=function(e){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},i.prototype.redShl=function(e){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},i.prototype.redMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},i.prototype.redIMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},i.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(e){return r(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var y={k256:null,p224:null,p192:null,p25519:null};function v(e,t){this.name=e,this.p=new i(t,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function w(){v.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function _(){v.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function x(){v.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function k(){v.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function S(e){if("string"==typeof e){var t=i._prime(e);this.m=t.p,this.prime=t}else r(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function C(e){S.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}v.prototype._tmp=function(){var e=new i(null);return e.words=new Array(Math.ceil(this.n/13)),e},v.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var n=t0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},v.prototype.split=function(e,t){e.iushrn(this.n,0,t)},v.prototype.imulK=function(e){return e.imul(this.k)},n(w,v),w.prototype.split=function(e,t){for(var r=Math.min(e.length,9),n=0;n>>22,i=s}i>>>=22,e.words[n-10]=i,0===i&&e.length>10?e.length-=10:e.length-=9},w.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r>>=26,e.words[r]=i,t=n}return 0!==t&&(e.words[e.length++]=t),e},i._prime=function(e){if(y[e])return y[e];var t;if("k256"===e)t=new w;else if("p224"===e)t=new _;else if("p192"===e)t=new x;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new k}return y[e]=t,t},S.prototype._verify1=function(e){r(0===e.negative,"red works only with positives"),r(e.red,"red works only with red numbers")},S.prototype._verify2=function(e,t){r(!(e.negative|t.negative),"red works only with positives"),r(e.red&&e.red===t.red,"red works only with red numbers")},S.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):(c(e,e.umod(this.m)._forceRed(this)),e)},S.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},S.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},S.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},S.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},S.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},S.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},S.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},S.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},S.prototype.isqr=function(e){return this.imul(e,e.clone())},S.prototype.sqr=function(e){return this.mul(e,e)},S.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(r(t%2==1),3===t){var n=this.m.add(new i(1)).iushrn(2);return this.pow(e,n)}for(var s=this.m.subn(1),o=0;!s.isZero()&&0===s.andln(1);)o++,s.iushrn(1);r(!s.isZero());var a=new i(1).toRed(this),l=a.redNeg(),c=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new i(2*h*h).toRed(this);0!==this.pow(h,c).cmp(l);)h.redIAdd(l);for(var u=this.pow(h,s),f=this.pow(e,s.addn(1).iushrn(1)),d=this.pow(e,s),p=o;0!==d.cmp(a);){for(var m=d,b=0;0!==m.cmp(a);b++)m=m.redSqr();r(b=0;n--){for(var c=t.words[n],h=l-1;h>=0;h--){var u=c>>h&1;s!==r[0]&&(s=this.sqr(s)),0!==u||0!==o?(o<<=1,o|=u,(4==++a||0===n&&0===h)&&(s=this.mul(s,r[o]),a=0,o=0)):a=0}l=26}return s},S.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},S.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},i.mont=function(e){return new C(e)},n(C,S),C.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},C.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},C.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),s=i;return i.cmp(this.m)>=0?s=i.isub(this.m):i.cmpn(0)<0&&(s=i.iadd(this.m)),s._forceRed(this)},C.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new i(0)._forceRed(this);var r=e.mul(t),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),s=r.isub(n).iushrn(this.shift),o=s;return s.cmp(this.m)>=0?o=s.isub(this.m):s.cmpn(0)<0&&(o=s.iadd(this.m)),o._forceRed(this)},C.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(void 0===t||t)},{buffer:188}],187:[function(e,t,r){var n;function i(e){this.rand=e}if(t.exports=function(e){return n||(n=new i(null)),n.generate(e)},t.exports.Rand=i,i.prototype.generate=function(e){return this._rand(e)},i.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var t=new Uint8Array(e),r=0;r>>24]^h[p>>>16&255]^u[m>>>8&255]^f[255&b]^t[g++],o=c[p>>>24]^h[m>>>16&255]^u[b>>>8&255]^f[255&d]^t[g++],a=c[m>>>24]^h[b>>>16&255]^u[d>>>8&255]^f[255&p]^t[g++],l=c[b>>>24]^h[d>>>16&255]^u[p>>>8&255]^f[255&m]^t[g++],d=s,p=o,m=a,b=l;return s=(n[d>>>24]<<24|n[p>>>16&255]<<16|n[m>>>8&255]<<8|n[255&b])^t[g++],o=(n[p>>>24]<<24|n[m>>>16&255]<<16|n[b>>>8&255]<<8|n[255&d])^t[g++],a=(n[m>>>24]<<24|n[b>>>16&255]<<16|n[d>>>8&255]<<8|n[255&p])^t[g++],l=(n[b>>>24]<<24|n[d>>>16&255]<<16|n[p>>>8&255]<<8|n[255&m])^t[g++],[s>>>=0,o>>>=0,a>>>=0,l>>>=0]}var a=[0,1,2,4,8,16,32,64,128,27,54],l=function(){for(var e=new Array(256),t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;for(var r=[],n=[],i=[[],[],[],[]],s=[[],[],[],[]],o=0,a=0,l=0;l<256;++l){var c=a^a<<1^a<<2^a<<3^a<<4;c=c>>>8^255&c^99,r[o]=c,n[c]=o;var h=e[o],u=e[h],f=e[u],d=257*e[c]^16843008*c;i[0][o]=d<<24|d>>>8,i[1][o]=d<<16|d>>>16,i[2][o]=d<<8|d>>>24,i[3][o]=d,d=16843009*f^65537*u^257*h^16843008*o,s[0][c]=d<<24|d>>>8,s[1][c]=d<<16|d>>>16,s[2][c]=d<<8|d>>>24,s[3][c]=d,0===o?o=a=1:(o=h^e[e[e[f^h]]],a^=e[e[a]])}return{SBOX:r,INV_SBOX:n,SUB_MIX:i,INV_SUB_MIX:s}}();function c(e){this._key=i(e),this._reset()}c.blockSize=16,c.keySize=32,c.prototype.blockSize=c.blockSize,c.prototype.keySize=c.keySize,c.prototype._reset=function(){for(var e=this._key,t=e.length,r=t+6,n=4*(r+1),i=[],s=0;s>>24,o=l.SBOX[o>>>24]<<24|l.SBOX[o>>>16&255]<<16|l.SBOX[o>>>8&255]<<8|l.SBOX[255&o],o^=a[s/t|0]<<24):t>6&&s%t==4&&(o=l.SBOX[o>>>24]<<24|l.SBOX[o>>>16&255]<<16|l.SBOX[o>>>8&255]<<8|l.SBOX[255&o]),i[s]=i[s-t]^o}for(var c=[],h=0;h>>24]]^l.INV_SUB_MIX[1][l.SBOX[f>>>16&255]]^l.INV_SUB_MIX[2][l.SBOX[f>>>8&255]]^l.INV_SUB_MIX[3][l.SBOX[255&f]]}this._nRounds=r,this._keySchedule=i,this._invKeySchedule=c},c.prototype.encryptBlockRaw=function(e){return o(e=i(e),this._keySchedule,l.SUB_MIX,l.SBOX,this._nRounds)},c.prototype.encryptBlock=function(e){var t=this.encryptBlockRaw(e),r=n.allocUnsafe(16);return r.writeUInt32BE(t[0],0),r.writeUInt32BE(t[1],4),r.writeUInt32BE(t[2],8),r.writeUInt32BE(t[3],12),r},c.prototype.decryptBlock=function(e){var t=(e=i(e))[1];e[1]=e[3],e[3]=t;var r=o(e,this._invKeySchedule,l.INV_SUB_MIX,l.INV_SBOX,this._nRounds),s=n.allocUnsafe(16);return s.writeUInt32BE(r[0],0),s.writeUInt32BE(r[3],4),s.writeUInt32BE(r[2],8),s.writeUInt32BE(r[1],12),s},c.prototype.scrub=function(){s(this._keySchedule),s(this._invKeySchedule),s(this._key)},t.exports.AES=c},{"safe-buffer":494}],190:[function(e,t,r){var n=e("./aes"),i=e("safe-buffer").Buffer,s=e("cipher-base"),o=e("inherits"),a=e("./ghash"),l=e("buffer-xor"),c=e("./incr32");function h(e,t,r,o){s.call(this);var l=i.alloc(4,0);this._cipher=new n.AES(t);var h=this._cipher.encryptBlock(l);this._ghash=new a(h),r=function(e,t,r){if(12===t.length)return e._finID=i.concat([t,i.from([0,0,0,1])]),i.concat([t,i.from([0,0,0,2])]);var n=new a(r),s=t.length,o=s%16;n.update(t),o&&(o=16-o,n.update(i.alloc(o,0))),n.update(i.alloc(8,0));var l=8*s,h=i.alloc(8);h.writeUIntBE(l,0,8),n.update(h),e._finID=n.state;var u=i.from(e._finID);return c(u),u}(this,r,h),this._prev=i.from(r),this._cache=i.allocUnsafe(0),this._secCache=i.allocUnsafe(0),this._decrypt=o,this._alen=0,this._len=0,this._mode=e,this._authTag=null,this._called=!1}o(h,s),h.prototype._update=function(e){if(!this._called&&this._alen){var t=16-this._alen%16;t<16&&(t=i.alloc(t,0),this._ghash.update(t))}this._called=!0;var r=this._mode.encrypt(this,e);return this._decrypt?this._ghash.update(e):this._ghash.update(r),this._len+=e.length,r},h.prototype._final=function(){if(this._decrypt&&!this._authTag)throw new Error("Unsupported state or unable to authenticate data");var e=l(this._ghash.final(8*this._alen,8*this._len),this._cipher.encryptBlock(this._finID));if(this._decrypt&&function(e,t){var r=0;e.length!==t.length&&r++;for(var n=Math.min(e.length,t.length),i=0;i16)throw new Error("unable to decrypt data");for(var r=-1;++r16)return t=this.cache.slice(0,16),this.cache=this.cache.slice(16),t}else if(this.cache.length>=16)return t=this.cache.slice(0,16),this.cache=this.cache.slice(16),t;return null},u.prototype.flush=function(){if(this.cache.length)return this.cache},r.createDecipher=function(e,t){var r=s[e.toLowerCase()];if(!r)throw new TypeError("invalid suite type");var n=c(t,!1,r.key,r.iv);return f(e,n.key,n.iv)},r.createDecipheriv=f},{"./aes":189,"./authCipher":190,"./modes":202,"./streamCipher":205,"cipher-base":221,evp_bytestokey:423,inherits:440,"safe-buffer":494}],193:[function(e,t,r){var n=e("./modes"),i=e("./authCipher"),s=e("safe-buffer").Buffer,o=e("./streamCipher"),a=e("cipher-base"),l=e("./aes"),c=e("evp_bytestokey");function h(e,t,r){a.call(this),this._cache=new f,this._cipher=new l.AES(t),this._prev=s.from(r),this._mode=e,this._autopadding=!0}e("inherits")(h,a),h.prototype._update=function(e){var t,r;this._cache.add(e);for(var n=[];t=this._cache.get();)r=this._mode.encrypt(this,t),n.push(r);return s.concat(n)};var u=s.alloc(16,16);function f(){this.cache=s.allocUnsafe(0)}function d(e,t,r){var a=n[e.toLowerCase()];if(!a)throw new TypeError("invalid suite type");if("string"==typeof t&&(t=s.from(t)),t.length!==a.key/8)throw new TypeError("invalid key length "+t.length);if("string"==typeof r&&(r=s.from(r)),"GCM"!==a.mode&&r.length!==a.iv)throw new TypeError("invalid iv length "+r.length);return"stream"===a.type?new o(a.module,t,r):"auth"===a.type?new i(a.module,t,r):new h(a.module,t,r)}h.prototype._final=function(){var e=this._cache.flush();if(this._autopadding)return e=this._mode.encrypt(this,e),this._cipher.scrub(),e;if(!e.equals(u))throw this._cipher.scrub(),new Error("data not multiple of block length")},h.prototype.setAutoPadding=function(e){return this._autopadding=!!e,this},f.prototype.add=function(e){this.cache=s.concat([this.cache,e])},f.prototype.get=function(){if(this.cache.length>15){var e=this.cache.slice(0,16);return this.cache=this.cache.slice(16),e}return null},f.prototype.flush=function(){for(var e=16-this.cache.length,t=s.allocUnsafe(e),r=-1;++r>>0,0),t.writeUInt32BE(e[1]>>>0,4),t.writeUInt32BE(e[2]>>>0,8),t.writeUInt32BE(e[3]>>>0,12),t}function o(e){this.h=e,this.state=n.alloc(16,0),this.cache=n.allocUnsafe(0)}o.prototype.ghash=function(e){for(var t=-1;++t0;t--)n[t]=n[t]>>>1|(1&n[t-1])<<31;n[0]=n[0]>>>1,r&&(n[0]=n[0]^225<<24)}this.state=s(i)},o.prototype.update=function(e){var t;for(this.cache=n.concat([this.cache,e]);this.cache.length>=16;)t=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(t)},o.prototype.final=function(e,t){return this.cache.length&&this.ghash(n.concat([this.cache,i],16)),this.ghash(s([0,e,0,t])),this.state},t.exports=o},{"safe-buffer":494}],195:[function(e,t,r){t.exports=function(e){for(var t,r=e.length;r--;){if(255!==(t=e.readUInt8(r))){t++,e.writeUInt8(t,r);break}e.writeUInt8(0,r)}}},{}],196:[function(e,t,r){var n=e("buffer-xor");r.encrypt=function(e,t){var r=n(t,e._prev);return e._prev=e._cipher.encryptBlock(r),e._prev},r.decrypt=function(e,t){var r=e._prev;e._prev=t;var i=e._cipher.decryptBlock(t);return n(i,r)}},{"buffer-xor":219}],197:[function(e,t,r){var n=e("safe-buffer").Buffer,i=e("buffer-xor");function s(e,t,r){var s=t.length,o=i(t,e._cache);return e._cache=e._cache.slice(s),e._prev=n.concat([e._prev,r?t:o]),o}r.encrypt=function(e,t,r){for(var i,o=n.allocUnsafe(0);t.length;){if(0===e._cache.length&&(e._cache=e._cipher.encryptBlock(e._prev),e._prev=n.allocUnsafe(0)),!(e._cache.length<=t.length)){o=n.concat([o,s(e,t,r)]);break}i=e._cache.length,o=n.concat([o,s(e,t.slice(0,i),r)]),t=t.slice(i)}return o}},{"buffer-xor":219,"safe-buffer":494}],198:[function(e,t,r){var n=e("safe-buffer").Buffer;function i(e,t,r){for(var n,i,o=-1,a=0;++o<8;)n=t&1<<7-o?128:0,a+=(128&(i=e._cipher.encryptBlock(e._prev)[0]^n))>>o%8,e._prev=s(e._prev,r?n:i);return a}function s(e,t){var r=e.length,i=-1,s=n.allocUnsafe(e.length);for(e=n.concat([e,n.from([t])]);++i>7;return s}r.encrypt=function(e,t,r){for(var s=t.length,o=n.allocUnsafe(s),a=-1;++a=0||!t.umod(e.prime1)||!t.umod(e.prime2));return t}function o(e,t){var i,o,a={blinder:(o=s(i=t)).toRed(n.mont(i.modulus)).redPow(new n(i.publicExponent)).fromRed(),unblinder:o.invm(i.modulus)},l=t.modulus.byteLength(),c=new n(e).mul(a.blinder).umod(t.modulus),h=c.toRed(n.mont(t.prime1)),u=c.toRed(n.mont(t.prime2)),f=t.coefficient,d=t.prime1,p=t.prime2,m=h.redPow(t.exponent1).fromRed(),b=u.redPow(t.exponent2).fromRed(),g=m.isub(b).imul(f).umod(d).imul(p);return b.iadd(g).imul(a.unblinder).umod(t.modulus).toArrayLike(r,"be",l)}o.getr=s,t.exports=o}).call(this)}).call(this,e("buffer").Buffer)},{"bn.js":186,buffer:220,randombytes:475}],210:[function(e,t,r){t.exports=e("./browser/algorithms.json")},{"./browser/algorithms.json":211}],211:[function(e,t,r){t.exports={sha224WithRSAEncryption:{sign:"rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},"RSA-SHA224":{sign:"ecdsa/rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},sha256WithRSAEncryption:{sign:"rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},"RSA-SHA256":{sign:"ecdsa/rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},sha384WithRSAEncryption:{sign:"rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},"RSA-SHA384":{sign:"ecdsa/rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},sha512WithRSAEncryption:{sign:"rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA512":{sign:"ecdsa/rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA1":{sign:"rsa",hash:"sha1",id:"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{sign:"ecdsa",hash:"sha1",id:""},sha256:{sign:"ecdsa",hash:"sha256",id:""},sha224:{sign:"ecdsa",hash:"sha224",id:""},sha384:{sign:"ecdsa",hash:"sha384",id:""},sha512:{sign:"ecdsa",hash:"sha512",id:""},"DSA-SHA":{sign:"dsa",hash:"sha1",id:""},"DSA-SHA1":{sign:"dsa",hash:"sha1",id:""},DSA:{sign:"dsa",hash:"sha1",id:""},"DSA-WITH-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-WITH-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-WITH-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-WITH-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-RIPEMD160":{sign:"dsa",hash:"rmd160",id:""},ripemd160WithRSA:{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},"RSA-RIPEMD160":{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},md5WithRSAEncryption:{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"},"RSA-MD5":{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"}}},{}],212:[function(e,t,r){t.exports={"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}},{}],213:[function(e,t,r){var n=e("safe-buffer").Buffer,i=e("create-hash"),s=e("readable-stream"),o=e("inherits"),a=e("./sign"),l=e("./verify"),c=e("./algorithms.json");function h(e){s.Writable.call(this);var t=c[e];if(!t)throw new Error("Unknown message digest");this._hashType=t.hash,this._hash=i(t.hash),this._tag=t.id,this._signType=t.sign}function u(e){s.Writable.call(this);var t=c[e];if(!t)throw new Error("Unknown message digest");this._hash=i(t.hash),this._tag=t.id,this._signType=t.sign}function f(e){return new h(e)}function d(e){return new u(e)}Object.keys(c).forEach((function(e){c[e].id=n.from(c[e].id,"hex"),c[e.toLowerCase()]=c[e]})),o(h,s.Writable),h.prototype._write=function(e,t,r){this._hash.update(e),r()},h.prototype.update=function(e,t){return"string"==typeof e&&(e=n.from(e,t)),this._hash.update(e),this},h.prototype.sign=function(e,t){this.end();var r=this._hash.digest(),n=a(r,e,this._hashType,this._signType,this._tag);return t?n.toString(t):n},o(u,s.Writable),u.prototype._write=function(e,t,r){this._hash.update(e),r()},u.prototype.update=function(e,t){return"string"==typeof e&&(e=n.from(e,t)),this._hash.update(e),this},u.prototype.verify=function(e,t,r){"string"==typeof t&&(t=n.from(t,r)),this.end();var i=this._hash.digest();return l(t,i,e,this._signType,this._tag)},t.exports={Sign:f,Verify:d,createSign:f,createVerify:d}},{"./algorithms.json":211,"./sign":214,"./verify":215,"create-hash":386,inherits:440,"readable-stream":491,"safe-buffer":494}],214:[function(e,t,r){var n=e("safe-buffer").Buffer,i=e("create-hmac"),s=e("browserify-rsa"),o=e("elliptic").ec,a=e("bn.js"),l=e("parse-asn1"),c=e("./curves.json");function h(e,t,r,s){if((e=n.from(e.toArray())).length0&&r.ishrn(n),r}function f(e,t,r){var s,o;do{for(s=n.alloc(0);8*s.length=t)throw new Error("invalid sig")}t.exports=function(e,t,r,c,h){var u=o(r);if("ec"===u.type){if("ecdsa"!==c&&"ecdsa/rsa"!==c)throw new Error("wrong public key type");return function(e,t,r){var n=a[r.data.algorithm.curve.join(".")];if(!n)throw new Error("unknown curve "+r.data.algorithm.curve.join("."));var i=new s(n),o=r.data.subjectPrivateKey.data;return i.verify(t,e,o)}(e,t,u)}if("dsa"===u.type){if("dsa"!==c)throw new Error("wrong public key type");return function(e,t,r){var n=r.data.p,s=r.data.q,a=r.data.g,c=r.data.pub_key,h=o.signature.decode(e,"der"),u=h.s,f=h.r;l(u,s),l(f,s);var d=i.mont(n),p=u.invm(s);return 0===a.toRed(d).redPow(new i(t).mul(p).mod(s)).fromRed().mul(c.toRed(d).redPow(f.mul(p).mod(s)).fromRed()).mod(n).mod(s).cmp(f)}(e,t,u)}if("rsa"!==c&&"ecdsa/rsa"!==c)throw new Error("wrong public key type");t=n.concat([h,t]);for(var f=u.modulus.byteLength(),d=[1],p=0;t.length+d.length+2>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function a(e){var t=this.lastTotal-this.lastNeed,r=function(e,t){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function l(e,t){if((e.length-t)%2==0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function c(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function h(e,t){var r=(e.length-t)%3;return 0===r?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function u(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function f(e){return e.toString(this.encoding)}function d(e){return e&&e.length?this.write(e):""}r.StringDecoder=s,s.prototype.write=function(e){if(0===e.length)return"";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0?(i>0&&(e.lastNeed=i-1),i):--n=0?(i>0&&(e.lastNeed=i-2),i):--n=0?(i>0&&(2===i?i=0:e.lastNeed=i-3),i):0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)},s.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},{"safe-buffer":217}],219:[function(e,t,r){(function(e){(function(){t.exports=function(t,r){for(var n=Math.min(t.length,r.length),i=new e(n),s=0;s2147483647)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return t.__proto__=s.prototype,t}function s(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return l(e)}return o(e,t,r)}function o(e,t,r){if("string"==typeof e)return function(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!s.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var r=0|u(e,t),n=i(r),o=n.write(e,t);return o!==r&&(n=n.slice(0,o)),n}(e,t);if(ArrayBuffer.isView(e))return c(e);if(null==e)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(F(e,ArrayBuffer)||e&&F(e.buffer,ArrayBuffer))return function(e,t,r){if(t<0||e.byteLength=2147483647)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+2147483647..toString(16)+" bytes");return 0|e}function u(e,t){if(s.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||F(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var i=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return P(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return B(e).length;default:if(i)return n?-1:P(e).length;t=(""+t).toLowerCase(),i=!0}}function f(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return M(this,t,r);case"utf8":case"utf-8":return k(this,t,r);case"ascii":return S(this,t,r);case"latin1":case"binary":return C(this,t,r);case"base64":return x(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function d(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function p(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),L(r=+r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=s.from(t,n)),s.isBuffer(t))return 0===t.length?-1:m(e,t,r,n,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):m(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function m(e,t,r,n,i){var s,o=1,a=e.length,l=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;o=2,a/=2,l/=2,r/=2}function c(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(i){var h=-1;for(s=r;sa&&(r=a-l),s=r;s>=0;s--){for(var u=!0,f=0;fi&&(n=i):n=i;var s=t.length;n>s/2&&(n=s/2);for(var o=0;o>8,i=r%256,s.push(i),s.push(n);return s}(t,e.length-r),e,r,n)}function x(e,r,n){return 0===r&&n===e.length?t.fromByteArray(e):t.fromByteArray(e.slice(r,n))}function k(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i239?4:c>223?3:c>191?2:1;if(i+u<=r)switch(u){case 1:c<128&&(h=c);break;case 2:128==(192&(s=e[i+1]))&&(l=(31&c)<<6|63&s)>127&&(h=l);break;case 3:s=e[i+1],o=e[i+2],128==(192&s)&&128==(192&o)&&(l=(15&c)<<12|(63&s)<<6|63&o)>2047&&(l<55296||l>57343)&&(h=l);break;case 4:s=e[i+1],o=e[i+2],a=e[i+3],128==(192&s)&&128==(192&o)&&128==(192&a)&&(l=(15&c)<<18|(63&s)<<12|(63&o)<<6|63&a)>65535&&l<1114112&&(h=l)}null===h?(h=65533,u=1):h>65535&&(h-=65536,n.push(h>>>10&1023|55296),h=56320|1023&h),n.push(h),i+=u}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);for(var r="",n=0;nn)&&(r=n);for(var i="",s=t;sr)throw new RangeError("Trying to access beyond buffer length")}function A(e,t,r,n,i,o){if(!s.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function R(e,t,r,n,i,s){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function j(e,t,r,i,s){return t=+t,r>>>=0,s||R(e,0,r,4),n.write(e,t,r,i,23,4),r+4}function O(e,t,r,i,s){return t=+t,r>>>=0,s||R(e,0,r,8),n.write(e,t,r,i,52,8),r+8}r.Buffer=s,r.SlowBuffer=function(e){return+e!=e&&(e=0),s.alloc(+e)},r.INSPECT_MAX_BYTES=50,r.kMaxLength=2147483647,s.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()}catch(t){return!1}}(),s.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(s.prototype,"parent",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.buffer}}),Object.defineProperty(s.prototype,"offset",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.byteOffset}}),"undefined"!=typeof Symbol&&null!=Symbol.species&&s[Symbol.species]===s&&Object.defineProperty(s,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),s.poolSize=8192,s.from=function(e,t,r){return o(e,t,r)},s.prototype.__proto__=Uint8Array.prototype,s.__proto__=Uint8Array,s.alloc=function(e,t,r){return s=t,o=r,a(n=e),n<=0?i(n):void 0!==s?"string"==typeof o?i(n).fill(s,o):i(n).fill(s):i(n);var n,s,o},s.allocUnsafe=function(e){return l(e)},s.allocUnsafeSlow=function(e){return l(e)},s.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==s.prototype},s.compare=function(e,t){if(F(e,Uint8Array)&&(e=s.from(e,e.offset,e.byteLength)),F(t,Uint8Array)&&(t=s.from(t,t.offset,t.byteLength)),!s.isBuffer(e)||!s.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;for(var r=e.length,n=t.length,i=0,o=Math.min(r,n);it&&(e+=" ... "),""},s.prototype.compare=function(e,t,r,n,i){if(F(e,Uint8Array)&&(e=s.from(e,e.offset,e.byteLength)),!s.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(n>>>=0),a=(r>>>=0)-(t>>>=0),l=Math.min(o,a),c=this.slice(n,i),h=e.slice(t,r),u=0;u>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-t;if((void 0===r||r>i)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var s=!1;;)switch(n){case"hex":return b(this,e,t,r);case"utf8":case"utf-8":return g(this,e,t,r);case"ascii":return y(this,e,t,r);case"latin1":case"binary":return v(this,e,t,r);case"base64":return w(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return _(this,e,t,r);default:if(s)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),s=!0}},s.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},s.prototype.slice=function(e,t){var r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t>>=0,t>>>=0,r||E(e,t,this.length);for(var n=this[e],i=1,s=0;++s>>=0,t>>>=0,r||E(e,t,this.length);for(var n=this[e+--t],i=1;t>0&&(i*=256);)n+=this[e+--t]*i;return n},s.prototype.readUInt8=function(e,t){return e>>>=0,t||E(e,1,this.length),this[e]},s.prototype.readUInt16LE=function(e,t){return e>>>=0,t||E(e,2,this.length),this[e]|this[e+1]<<8},s.prototype.readUInt16BE=function(e,t){return e>>>=0,t||E(e,2,this.length),this[e]<<8|this[e+1]},s.prototype.readUInt32LE=function(e,t){return e>>>=0,t||E(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},s.prototype.readUInt32BE=function(e,t){return e>>>=0,t||E(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},s.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||E(e,t,this.length);for(var n=this[e],i=1,s=0;++s=(i*=128)&&(n-=Math.pow(2,8*t)),n},s.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||E(e,t,this.length);for(var n=t,i=1,s=this[e+--n];n>0&&(i*=256);)s+=this[e+--n]*i;return s>=(i*=128)&&(s-=Math.pow(2,8*t)),s},s.prototype.readInt8=function(e,t){return e>>>=0,t||E(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},s.prototype.readInt16LE=function(e,t){e>>>=0,t||E(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},s.prototype.readInt16BE=function(e,t){e>>>=0,t||E(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},s.prototype.readInt32LE=function(e,t){return e>>>=0,t||E(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},s.prototype.readInt32BE=function(e,t){return e>>>=0,t||E(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},s.prototype.readFloatLE=function(e,t){return e>>>=0,t||E(e,4,this.length),n.read(this,e,!0,23,4)},s.prototype.readFloatBE=function(e,t){return e>>>=0,t||E(e,4,this.length),n.read(this,e,!1,23,4)},s.prototype.readDoubleLE=function(e,t){return e>>>=0,t||E(e,8,this.length),n.read(this,e,!0,52,8)},s.prototype.readDoubleBE=function(e,t){return e>>>=0,t||E(e,8,this.length),n.read(this,e,!1,52,8)},s.prototype.writeUIntLE=function(e,t,r,n){e=+e,t>>>=0,r>>>=0,n||A(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,s=0;for(this[t]=255&e;++s>>=0,r>>>=0,n||A(this,e,t,r,Math.pow(2,8*r)-1,0);var i=r-1,s=1;for(this[t+i]=255&e;--i>=0&&(s*=256);)this[t+i]=e/s&255;return t+r},s.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||A(this,e,t,1,255,0),this[t]=255&e,t+1},s.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||A(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},s.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||A(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},s.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||A(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},s.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||A(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},s.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);A(this,e,t,r,i-1,-i)}var s=0,o=1,a=0;for(this[t]=255&e;++s>>=0,!n){var i=Math.pow(2,8*r-1);A(this,e,t,r,i-1,-i)}var s=r-1,o=1,a=0;for(this[t+s]=255&e;--s>=0&&(o*=256);)e<0&&0===a&&0!==this[t+s+1]&&(a=1),this[t+s]=(e/o|0)-a&255;return t+r},s.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||A(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},s.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||A(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},s.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||A(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},s.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||A(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},s.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||A(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},s.prototype.writeFloatLE=function(e,t,r){return j(this,e,t,!0,r)},s.prototype.writeFloatBE=function(e,t,r){return j(this,e,t,!1,r)},s.prototype.writeDoubleLE=function(e,t,r){return O(this,e,t,!0,r)},s.prototype.writeDoubleBE=function(e,t,r){return O(this,e,t,!1,r)},s.prototype.copy=function(e,t,r,n){if(!s.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t=0;--o)e[o+t]=this[o+r];else Uint8Array.prototype.set.call(e,this.subarray(r,n),t);return i},s.prototype.fill=function(e,t,r,n){if("string"==typeof e){if("string"==typeof t?(n=t,t=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!s.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(1===e.length){var i=e.charCodeAt(0);("utf8"===n&&i<128||"latin1"===n)&&(e=i)}}else"number"==typeof e&&(e&=255);if(t<0||this.length>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(o=t;o55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&s.push(239,191,189);continue}if(o+1===n){(t-=3)>-1&&s.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&s.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&s.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;s.push(r)}else if(r<2048){if((t-=2)<0)break;s.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;s.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;s.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return s}function B(e){return t.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(I,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function D(e,t,r,n){for(var i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function F(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function L(e){return e!=e}}).call(this)}).call(this,e("buffer").Buffer)},{"base64-js":185,buffer:220,ieee754:439}],221:[function(e,t,r){var n=e("safe-buffer").Buffer,i=e("stream").Transform,s=e("string_decoder").StringDecoder;function o(e){i.call(this),this.hashMode="string"==typeof e,this.hashMode?this[e]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}e("inherits")(o,i),o.prototype.update=function(e,t,r){"string"==typeof e&&(e=n.from(e,t));var i=this._update(e);return this.hashMode?this:(r&&(i=this._toString(i,r)),i)},o.prototype.setAutoPadding=function(){},o.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")},o.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")},o.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")},o.prototype._transform=function(e,t,r){var n;try{this.hashMode?this._update(e):this.push(this._update(e))}catch(i){n=i}finally{r(n)}},o.prototype._flush=function(e){var t;try{this.push(this.__final())}catch(r){t=r}e(t)},o.prototype._finalOrDigest=function(e){var t=this.__final()||n.alloc(0);return e&&(t=this._toString(t,e,!0)),t},o.prototype._toString=function(e,t,r){if(this._decoder||(this._decoder=new s(t),this._encoding=t),this._encoding!==t)throw new Error("can't switch encodings");var n=this._decoder.write(e);return r&&(n+=this._decoder.end()),n},t.exports=o},{inherits:440,"safe-buffer":494,stream:505,string_decoder:218}],222:[function(e,t,r){var n=e("../internals/is-callable"),i=e("../internals/try-to-string"),s=TypeError;t.exports=function(e){if(n(e))return e;throw new s(i(e)+" is not a function")}},{"../internals/is-callable":285,"../internals/try-to-string":349}],223:[function(e,t,r){var n=e("../internals/is-constructor"),i=e("../internals/try-to-string"),s=TypeError;t.exports=function(e){if(n(e))return e;throw new s(i(e)+" is not a constructor")}},{"../internals/is-constructor":286,"../internals/try-to-string":349}],224:[function(e,t,r){var n=e("../internals/is-callable"),i=String,s=TypeError;t.exports=function(e){if("object"==typeof e||n(e))return e;throw new s("Can't set "+i(e)+" as a prototype")}},{"../internals/is-callable":285}],225:[function(e,t,r){var n=e("../internals/well-known-symbol"),i=e("../internals/object-create"),s=e("../internals/object-define-property").f,o=n("unscopables"),a=Array.prototype;void 0===a[o]&&s(a,o,{configurable:!0,value:i(null)}),t.exports=function(e){a[o][e]=!0}},{"../internals/object-create":306,"../internals/object-define-property":308,"../internals/well-known-symbol":357}],226:[function(e,t,r){var n=e("../internals/object-is-prototype-of"),i=TypeError;t.exports=function(e,t){if(n(t,e))return e;throw new i("Incorrect invocation")}},{"../internals/object-is-prototype-of":314}],227:[function(e,t,r){var n=e("../internals/is-object"),i=String,s=TypeError;t.exports=function(e){if(n(e))return e;throw new s(i(e)+" is not an object")}},{"../internals/is-object":289}],228:[function(e,t,r){var n=e("../internals/to-indexed-object"),i=e("../internals/to-absolute-index"),s=e("../internals/length-of-array-like"),o=function(e){return function(t,r,o){var a,l=n(t),c=s(l),h=i(o,c);if(e&&r!=r){for(;c>h;)if((a=l[h++])!=a)return!0}else for(;c>h;h++)if((e||h in l)&&l[h]===r)return e||h||0;return!e&&-1}};t.exports={includes:o(!0),indexOf:o(!1)}},{"../internals/length-of-array-like":299,"../internals/to-absolute-index":340,"../internals/to-indexed-object":341}],229:[function(e,t,r){var n=e("../internals/function-bind-context"),i=e("../internals/function-uncurry-this"),s=e("../internals/indexed-object"),o=e("../internals/to-object"),a=e("../internals/length-of-array-like"),l=e("../internals/array-species-create"),c=i([].push),h=function(e){var t=1===e,r=2===e,i=3===e,h=4===e,u=6===e,f=7===e,d=5===e||u;return function(p,m,b,g){for(var y,v,w=o(p),_=s(w),x=n(m,b),k=a(_),S=0,C=g||l,M=t?C(p,k):r||f?C(p,0):void 0;k>S;S++)if((d||S in _)&&(v=x(y=_[S],S,w),e))if(t)M[S]=v;else if(v)switch(e){case 3:return!0;case 5:return y;case 6:return S;case 2:c(M,y)}else switch(e){case 4:return!1;case 7:c(M,y)}return u?-1:i||h?h:M}};t.exports={forEach:h(0),map:h(1),filter:h(2),some:h(3),every:h(4),find:h(5),findIndex:h(6),filterReject:h(7)}},{"../internals/array-species-create":233,"../internals/function-bind-context":262,"../internals/function-uncurry-this":268,"../internals/indexed-object":280,"../internals/length-of-array-like":299,"../internals/to-object":344}],230:[function(e,t,r){var n=e("../internals/to-absolute-index"),i=e("../internals/length-of-array-like"),s=e("../internals/create-property"),o=Array,a=Math.max;t.exports=function(e,t,r){for(var l=i(e),c=n(t,l),h=n(void 0===r?l:r,l),u=o(a(h-c,0)),f=0;c0&&n[0]<4?1:+(n[0]+n[1])),!i&&o&&(!(n=o.match(/Edge\/(\d+)/))||n[1]>=74)&&(n=o.match(/Chrome\/(\d+)/))&&(i=+n[1]),t.exports=i},{"../internals/engine-user-agent":256,"../internals/global":274}],258:[function(e,t,r){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},{}],259:[function(e,t,r){var n=e("../internals/global"),i=e("../internals/object-get-own-property-descriptor").f,s=e("../internals/create-non-enumerable-property"),o=e("../internals/define-built-in"),a=e("../internals/define-global-property"),l=e("../internals/copy-constructor-properties"),c=e("../internals/is-forced");t.exports=function(e,t){var r,h,u,f,d,p=e.target,m=e.global,b=e.stat;if(r=m?n:b?n[p]||a(p,{}):(n[p]||{}).prototype)for(h in t){if(f=t[h],u=e.dontCallGetSet?(d=i(r,h))&&d.value:r[h],!c(m?h:p+(b?".":"#")+h,e.forced)&&void 0!==u){if(typeof f==typeof u)continue;l(f,u)}(e.sham||u&&u.sham)&&s(f,"sham",!0),o(r,h,f,e)}}},{"../internals/copy-constructor-properties":237,"../internals/create-non-enumerable-property":241,"../internals/define-built-in":245,"../internals/define-global-property":246,"../internals/global":274,"../internals/is-forced":287,"../internals/object-get-own-property-descriptor":309}],260:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(t){return!0}}},{}],261:[function(e,t,r){var n=e("../internals/function-bind-native"),i=Function.prototype,s=i.apply,o=i.call;t.exports="object"==typeof Reflect&&Reflect.apply||(n?o.bind(s):function(){return o.apply(s,arguments)})},{"../internals/function-bind-native":263}],262:[function(e,t,r){var n=e("../internals/function-uncurry-this-clause"),i=e("../internals/a-callable"),s=e("../internals/function-bind-native"),o=n(n.bind);t.exports=function(e,t){return i(e),void 0===t?e:s?o(e,t):function(){return e.apply(t,arguments)}}},{"../internals/a-callable":222,"../internals/function-bind-native":263,"../internals/function-uncurry-this-clause":267}],263:[function(e,t,r){var n=e("../internals/fails");t.exports=!n((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},{"../internals/fails":260}],264:[function(e,t,r){var n=e("../internals/function-bind-native"),i=Function.prototype.call;t.exports=n?i.bind(i):function(){return i.apply(i,arguments)}},{"../internals/function-bind-native":263}],265:[function(e,t,r){var n=e("../internals/descriptors"),i=e("../internals/has-own-property"),s=Function.prototype,o=n&&Object.getOwnPropertyDescriptor,a=i(s,"name"),l=a&&"something"===function(){}.name,c=a&&(!n||n&&o(s,"name").configurable);t.exports={EXISTS:a,PROPER:l,CONFIGURABLE:c}},{"../internals/descriptors":247,"../internals/has-own-property":275}],266:[function(e,t,r){var n=e("../internals/function-uncurry-this"),i=e("../internals/a-callable");t.exports=function(e,t,r){try{return n(i(Object.getOwnPropertyDescriptor(e,t)[r]))}catch(s){}}},{"../internals/a-callable":222,"../internals/function-uncurry-this":268}],267:[function(e,t,r){var n=e("../internals/classof-raw"),i=e("../internals/function-uncurry-this");t.exports=function(e){if("Function"===n(e))return i(e)}},{"../internals/classof-raw":235,"../internals/function-uncurry-this":268}],268:[function(e,t,r){var n=e("../internals/function-bind-native"),i=Function.prototype,s=i.call,o=n&&i.bind.bind(s,s);t.exports=n?o:function(e){return function(){return s.apply(e,arguments)}}},{"../internals/function-bind-native":263}],269:[function(e,t,r){var n=e("../internals/global"),i=e("../internals/is-callable"),s=function(e){return i(e)?e:void 0};t.exports=function(e,t){return arguments.length<2?s(n[e]):n[e]&&n[e][t]}},{"../internals/global":274,"../internals/is-callable":285}],270:[function(e,t,r){var n=e("../internals/classof"),i=e("../internals/get-method"),s=e("../internals/is-null-or-undefined"),o=e("../internals/iterators"),a=e("../internals/well-known-symbol")("iterator");t.exports=function(e){if(!s(e))return i(e,a)||i(e,"@@iterator")||o[n(e)]}},{"../internals/classof":236,"../internals/get-method":273,"../internals/is-null-or-undefined":288,"../internals/iterators":298,"../internals/well-known-symbol":357}],271:[function(e,t,r){var n=e("../internals/function-call"),i=e("../internals/a-callable"),s=e("../internals/an-object"),o=e("../internals/try-to-string"),a=e("../internals/get-iterator-method"),l=TypeError;t.exports=function(e,t){var r=arguments.length<2?a(e):t;if(i(r))return s(n(r,e));throw new l(o(e)+" is not iterable")}},{"../internals/a-callable":222,"../internals/an-object":227,"../internals/function-call":264,"../internals/get-iterator-method":270,"../internals/try-to-string":349}],272:[function(e,t,r){var n=e("../internals/function-uncurry-this"),i=e("../internals/is-array"),s=e("../internals/is-callable"),o=e("../internals/classof-raw"),a=e("../internals/to-string"),l=n([].push);t.exports=function(e){if(s(e))return e;if(i(e)){for(var t=e.length,r=[],n=0;ny;y++)if((w=R(e[y]))&&c(m,w))return w;return new p(!1)}b=h(e,g)}for(_=C?e.next:b.next;!(x=i(_,b)).done;){try{w=R(x.value)}catch(j){f(b,"throw",j)}if("object"==typeof w&&w&&c(m,w))return w}return new p(!1)}},{"../internals/an-object":227,"../internals/function-bind-context":262,"../internals/function-call":264,"../internals/get-iterator":271,"../internals/get-iterator-method":270,"../internals/is-array-iterator-method":283,"../internals/iterator-close":294,"../internals/length-of-array-like":299,"../internals/object-is-prototype-of":314,"../internals/try-to-string":349}],294:[function(e,t,r){var n=e("../internals/function-call"),i=e("../internals/an-object"),s=e("../internals/get-method");t.exports=function(e,t,r){var o,a;i(e);try{if(!(o=s(e,"return"))){if("throw"===t)throw r;return r}o=n(o,e)}catch(l){a=!0,o=l}if("throw"===t)throw r;if(a)throw o;return i(o),r}},{"../internals/an-object":227,"../internals/function-call":264,"../internals/get-method":273}],295:[function(e,t,r){var n=e("../internals/iterators-core").IteratorPrototype,i=e("../internals/object-create"),s=e("../internals/create-property-descriptor"),o=e("../internals/set-to-string-tag"),a=e("../internals/iterators"),l=function(){return this};t.exports=function(e,t,r,c){var h=t+" Iterator";return e.prototype=i(n,{next:s(+!c,r)}),o(e,h,!1,!0),a[h]=l,e}},{"../internals/create-property-descriptor":242,"../internals/iterators":298,"../internals/iterators-core":297,"../internals/object-create":306,"../internals/set-to-string-tag":331}],296:[function(e,t,r){var n=e("../internals/export"),i=e("../internals/function-call"),s=e("../internals/is-pure"),o=e("../internals/function-name"),a=e("../internals/is-callable"),l=e("../internals/iterator-create-constructor"),c=e("../internals/object-get-prototype-of"),h=e("../internals/object-set-prototype-of"),u=e("../internals/set-to-string-tag"),f=e("../internals/create-non-enumerable-property"),d=e("../internals/define-built-in"),p=e("../internals/well-known-symbol"),m=e("../internals/iterators"),b=e("../internals/iterators-core"),g=o.PROPER,y=o.CONFIGURABLE,v=b.IteratorPrototype,w=b.BUGGY_SAFARI_ITERATORS,_=p("iterator"),x=function(){return this};t.exports=function(e,t,r,o,p,b,k){l(r,t,o);var S,C,M,T=function(e){if(e===p&&O)return O;if(!w&&e&&e in R)return R[e];switch(e){case"keys":case"values":case"entries":return function(){return new r(this,e)}}return function(){return new r(this)}},E=t+" Iterator",A=!1,R=e.prototype,j=R[_]||R["@@iterator"]||p&&R[p],O=!w&&j||T(p),I="Array"===t&&R.entries||j;if(I&&(S=c(I.call(new e)))!==Object.prototype&&S.next&&(s||c(S)===v||(h?h(S,v):a(S[_])||d(S,_,x)),u(S,E,!0,!0),s&&(m[E]=x)),g&&"values"===p&&j&&"values"!==j.name&&(!s&&y?f(R,"name","values"):(A=!0,O=function(){return i(j,this)})),p)if(C={values:T("values"),keys:b?O:T("keys"),entries:T("entries")},k)for(M in C)(w||A||!(M in R))&&d(R,M,C[M]);else n({target:t,proto:!0,forced:w||A},C);return s&&!k||R[_]===O||d(R,_,O,{name:p}),m[t]=O,C}},{"../internals/create-non-enumerable-property":241,"../internals/define-built-in":245,"../internals/export":259,"../internals/function-call":264,"../internals/function-name":265,"../internals/is-callable":285,"../internals/is-pure":290,"../internals/iterator-create-constructor":295,"../internals/iterators":298,"../internals/iterators-core":297,"../internals/object-get-prototype-of":313,"../internals/object-set-prototype-of":318,"../internals/set-to-string-tag":331,"../internals/well-known-symbol":357}],297:[function(e,t,r){var n,i,s,o=e("../internals/fails"),a=e("../internals/is-callable"),l=e("../internals/is-object"),c=e("../internals/object-create"),h=e("../internals/object-get-prototype-of"),u=e("../internals/define-built-in"),f=e("../internals/well-known-symbol"),d=e("../internals/is-pure"),p=f("iterator"),m=!1;[].keys&&("next"in(s=[].keys())?(i=h(h(s)))!==Object.prototype&&(n=i):m=!0),!l(n)||o((function(){var e={};return n[p].call(e)!==e}))?n={}:d&&(n=c(n)),a(n[p])||u(n,p,(function(){return this})),t.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:m}},{"../internals/define-built-in":245,"../internals/fails":260,"../internals/is-callable":285,"../internals/is-object":289,"../internals/is-pure":290,"../internals/object-create":306,"../internals/object-get-prototype-of":313,"../internals/well-known-symbol":357}],298:[function(e,t,r){arguments[4][276][0].apply(r,arguments)},{dup:276}],299:[function(e,t,r){var n=e("../internals/to-length");t.exports=function(e){return n(e.length)}},{"../internals/to-length":343}],300:[function(e,t,r){var n=e("../internals/function-uncurry-this"),i=e("../internals/fails"),s=e("../internals/is-callable"),o=e("../internals/has-own-property"),a=e("../internals/descriptors"),l=e("../internals/function-name").CONFIGURABLE,c=e("../internals/inspect-source"),h=e("../internals/internal-state"),u=h.enforce,f=h.get,d=String,p=Object.defineProperty,m=n("".slice),b=n("".replace),g=n([].join),y=a&&!i((function(){return 8!==p((function(){}),"length",{value:8}).length})),v=String(String).split("String"),w=t.exports=function(e,t,r){"Symbol("===m(d(t),0,7)&&(t="["+b(d(t),/^Symbol\(([^)]*)\)/,"$1")+"]"),r&&r.getter&&(t="get "+t),r&&r.setter&&(t="set "+t),(!o(e,"name")||l&&e.name!==t)&&(a?p(e,"name",{value:t,configurable:!0}):e.name=t),y&&r&&o(r,"arity")&&e.length!==r.arity&&p(e,"length",{value:r.arity});try{r&&o(r,"constructor")&&r.constructor?a&&p(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(i){}var n=u(e);return o(n,"source")||(n.source=g(v,"string"==typeof t?t:"")),e};Function.prototype.toString=w((function(){return s(this)&&f(this).source||c(this)}),"toString")},{"../internals/descriptors":247,"../internals/fails":260,"../internals/function-name":265,"../internals/function-uncurry-this":268,"../internals/has-own-property":275,"../internals/inspect-source":281,"../internals/internal-state":282,"../internals/is-callable":285}],301:[function(e,t,r){var n=Math.ceil,i=Math.floor;t.exports=Math.trunc||function(e){var t=+e;return(t>0?i:n)(t)}},{}],302:[function(e,t,r){var n,i,s,o,a,l=e("../internals/global"),c=e("../internals/function-bind-context"),h=e("../internals/object-get-own-property-descriptor").f,u=e("../internals/task").set,f=e("../internals/queue"),d=e("../internals/engine-is-ios"),p=e("../internals/engine-is-ios-pebble"),m=e("../internals/engine-is-webos-webkit"),b=e("../internals/engine-is-node"),g=l.MutationObserver||l.WebKitMutationObserver,y=l.document,v=l.process,w=l.Promise,_=h(l,"queueMicrotask"),x=_&&_.value;if(!x){var k=new f,S=function(){var e,t;for(b&&(e=v.domain)&&e.exit();t=k.get();)try{t()}catch(r){throw k.head&&n(),r}e&&e.enter()};d||b||m||!g||!y?!p&&w&&w.resolve?((o=w.resolve(void 0)).constructor=w,a=c(o.then,o),n=function(){a(S)}):b?n=function(){v.nextTick(S)}:(u=c(u,l),n=function(){u(S)}):(i=!0,s=y.createTextNode(""),new g(S).observe(s,{characterData:!0}),n=function(){s.data=i=!i}),x=function(e){k.head||n(),k.add(e)}}t.exports=x},{"../internals/engine-is-ios":253,"../internals/engine-is-ios-pebble":252,"../internals/engine-is-node":254,"../internals/engine-is-webos-webkit":255,"../internals/function-bind-context":262,"../internals/global":274,"../internals/object-get-own-property-descriptor":309,"../internals/queue":328,"../internals/task":339}],303:[function(e,t,r){var n=e("../internals/a-callable"),i=TypeError,s=function(e){var t,r;this.promise=new e((function(e,n){if(void 0!==t||void 0!==r)throw new i("Bad Promise constructor");t=e,r=n})),this.resolve=n(t),this.reject=n(r)};t.exports.f=function(e){return new s(e)}},{"../internals/a-callable":222}],304:[function(e,t,r){var n=e("../internals/is-regexp"),i=TypeError;t.exports=function(e){if(n(e))throw new i("The method doesn't accept regular expressions");return e}},{"../internals/is-regexp":291}],305:[function(e,t,r){var n=e("../internals/descriptors"),i=e("../internals/function-uncurry-this"),s=e("../internals/function-call"),o=e("../internals/fails"),a=e("../internals/object-keys"),l=e("../internals/object-get-own-property-symbols"),c=e("../internals/object-property-is-enumerable"),h=e("../internals/to-object"),u=e("../internals/indexed-object"),f=Object.assign,d=Object.defineProperty,p=i([].concat);t.exports=!f||o((function(){if(n&&1!==f({b:1},f(d({},"a",{enumerable:!0,get:function(){d(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},r=Symbol("assign detection");return e[r]=7,"abcdefghijklmnopqrst".split("").forEach((function(e){t[e]=e})),7!==f({},e)[r]||"abcdefghijklmnopqrst"!==a(f({},t)).join("")}))?function(e,t){for(var r=h(e),i=arguments.length,o=1,f=l.f,d=c.f;i>o;)for(var m,b=u(arguments[o++]),g=f?p(a(b),f(b)):a(b),y=g.length,v=0;y>v;)m=g[v++],n&&!s(d,b,m)||(r[m]=b[m]);return r}:f},{"../internals/descriptors":247,"../internals/fails":260,"../internals/function-call":264,"../internals/function-uncurry-this":268,"../internals/indexed-object":280,"../internals/object-get-own-property-symbols":312,"../internals/object-keys":316,"../internals/object-property-is-enumerable":317,"../internals/to-object":344}],306:[function(e,t,r){var n,i=e("../internals/an-object"),s=e("../internals/object-define-properties"),o=e("../internals/enum-bug-keys"),a=e("../internals/hidden-keys"),l=e("../internals/html"),c=e("../internals/document-create-element"),h=e("../internals/shared-key")("IE_PROTO"),u=function(){},f=function(e){return"", + "", + "", + "" + ], + "description": "Vue3.0" + } +} diff --git a/resources/vue/.vscode/vue3.2.code-snippets b/resources/vue/.vscode/vue3.2.code-snippets new file mode 100644 index 0000000..a083940 --- /dev/null +++ b/resources/vue/.vscode/vue3.2.code-snippets @@ -0,0 +1,17 @@ +{ + "Vue3.2+快速生成模板": { + "scope": "vue", + "prefix": "Vue3.2+", + "body": [ + "", + "", + "", + "", + "", + "" + ], + "description": "Vue3.2+" + } +} diff --git a/resources/vue/.vscode/vue3.3.code-snippets b/resources/vue/.vscode/vue3.3.code-snippets new file mode 100644 index 0000000..705e04f --- /dev/null +++ b/resources/vue/.vscode/vue3.3.code-snippets @@ -0,0 +1,21 @@ +{ + "Vue3.3+defineOptions快速生成模板": { + "scope": "vue", + "prefix": "Vue3.3+", + "body": [ + "", + "", + "", + "", + "", + "" + ], + "description": "Vue3.3+defineOptions快速生成模板" + } +} diff --git a/resources/vue/CHANGELOG.md b/resources/vue/CHANGELOG.md new file mode 100644 index 0000000..fd2cef3 --- /dev/null +++ b/resources/vue/CHANGELOG.md @@ -0,0 +1,386 @@ + +# 2.11.5 (2024/6/18) + +## ✨ feat + +- 支持后端文件导入([#142](https://github.com/youlaitech/vue3-element-admin/pull/142)) [@cshaptx4869](https://github.com/cshaptx4869) + + +## 🐛 fix +- vue-dev-tools 插件导致菜单路由切换卡死,暂时关闭 ([28349e](https://github.com/youlaitech/vue3-element-admin/commit/28349efe147afab36531ba148eaac3a448fe6c71)) [@haoxianrui](https://github.com/haoxianrui) + + + +# 2.11.4 (2024/6/16) + +## ✨ feat + +- 操作栏增加render配置参数([#138](https://github.com/youlaitech/vue3-element-admin/pull/140)) [@cshaptx4869](https://github.com/cshaptx4869) +- 左侧工具栏增加type配置参数([#141](https://github.com/youlaitech/vue3-element-admin/pull/141)) [@diamont1001](https://github.com/diamont1001) + +## ♻️ refactor +- 更换权限分配弹窗类型为 drawer 并添加父子联动开关([2d9193](https://github.com/youlaitech/vue3-element-admin/commit/2d9193c47fd224f01f82b9c0b2bbeb5e7cb33584)) [@haoxianrui](https://github.com/haoxianrui) + + + +# 2.11.3 (2024/6/11) + +## ✨ feat + +- 支持默认工具栏的导入([#138](https://github.com/youlaitech/vue3-element-admin/pull/138)) [@cshaptx4869](https://github.com/cshaptx4869) +- 添加CURD导入示例([19e7bb](https://github.com/youlaitech/vue3-element-admin/commit/eab91effd6a01d5a3d9257249c8d06aa252b3bf8)) [@cshaptx4869](https://github.com/cshaptx4869) + +## ♻️ refactor +- 修改导出全量数据选项文本([904fec](https://github.com/youlaitech/vue3-element-admin/commit/904fecad65217650482fcdbb10ffb7f3d27eb9ea)) [@cshaptx4869](https://github.com/cshaptx4869) + +## 🐛 fix +- 菜单列表未适配el-icon导致图标不显示问题修复([e72b68](https://github.com/youlaitech/vue3-element-admin/commit/e72b68337562b5a7ea24ad55bbe00023e1266b40)) [@haoxianrui](https://github.com/haoxianrui) + +# 2.11.2 (2024/6/8) + +## ✨ feat + +- 支持表格远程筛选([#131](https://github.com/youlaitech/vue3-element-admin/pull/131)) [@cshaptx4869](https://github.com/cshaptx4869) +- 支持标签输入框([#132](https://github.com/youlaitech/vue3-element-admin/pull/132)) [@cshaptx4869](https://github.com/cshaptx4869) +- 表单项支持tips配置([#133](https://github.com/youlaitech/vue3-element-admin/pull/133)) [@cshaptx4869](https://github.com/cshaptx4869) +- 前端导出支持全量数据([#134](https://github.com/youlaitech/vue3-element-admin/pull/134)) [@cshaptx4869](https://github.com/cshaptx4869) +- 支持选中数据导出([#135](https://github.com/youlaitech/vue3-element-admin/pull/135)) [@cshaptx4869](https://github.com/cshaptx4869) +- 表格默认工具栏的导出、搜索按钮增加权限点控制([883128](https://github.com/youlaitech/vue3-element-admin/commit/8831289b655f2cc086ecdababaa89f8d8a087c42)) [@cshaptx4869](https://github.com/cshaptx4869) +- 页签title支持动态设置([23876a](https://github.com/youlaitech/vue3-element-admin/commit/23876aa396143bf77cb5c86af8d6023d9ff6555a)) [@haoxianrui](https://github.com/haoxianrui) + +## ♻️ refactor +- 默认工具栏支持自定义([#136](https://github.com/youlaitech/vue3-element-admin/pull/136)) [@cshaptx4869](https://github.com/cshaptx4869) +- 未配置全量导出接口时选项隐藏([eab91ef](https://github.com/youlaitech/vue3-element-admin/commit/eab91effd6a01d5a3d9257249c8d06aa252b3bf8)) [@cshaptx4869](https://github.com/cshaptx4869) + +## 🐛 fix +- 修复注销登出后redirect跳转路由参数丢失([5626017](https://github.com/youlaitech/vue3-element-admin/commit/562601736731afd20bb1a5140d856f6515720159)) [@haoxianrui](https://github.com/haoxianrui) + +# 2.11.1 (2024/6/6) + +## ✨ feat + +- 增加pagination、request、parseData配置参数([#119](https://github.com/youlaitech/vue3-element-admin/pull/119)) [@cshaptx4869](https://github.com/cshaptx4869) +- 增加返回顶部功能([#120](https://github.com/youlaitech/vue3-element-admin/pull/120)) [@cshaptx4869](https://github.com/cshaptx4869) +- 支持前端导出([#126](https://github.com/youlaitech/vue3-element-admin/pull/126)) [@cshaptx4869](https://github.com/cshaptx4869) + +## ♻️ refactor +- 重构布局样式(解决页面抖动问题)([#116](https://github.com/youlaitech/vue3-element-admin/pull/116)) [@cshaptx4869](https://github.com/cshaptx4869) +- 修改CURD示例编辑弹窗尺寸([#121](https://github.com/youlaitech/vue3-element-admin/pull/121)) [@cshaptx4869](https://github.com/cshaptx4869) +- 统一注册vue插件([#122](https://github.com/youlaitech/vue3-element-admin/pull/122)) [@cshaptx4869](https://github.com/cshaptx4869) +- 默认主题跟随系统([#128](https://github.com/youlaitech/vue3-element-admin/pull/128)) [@cshaptx4869](https://github.com/cshaptx4869) +- 增加"scss.lint.unknownAtRules": "ignore"代码,解决style中使用@apply提示unknow at rules@apply提示问题([Gitee#22](https://gitee.com/youlaiorg/vue3-element-admin/pulls/22)) [@zjsy521](https://gitee.com/zjsy521) + +## 🐛 fix +- 修复左侧布局移动端菜单弹出样式 ([#117](https://github.com/youlaitech/vue3-element-admin/pull/117)) [@cshaptx4869](https://github.com/cshaptx4869) + +- 修复编辑后未清空id再新增菜单覆盖的问题([0e78eeb](https://github.com/youlaitech/vue3-element-admin/commit/0e78eeb75008fa8e9732b1b4e7d7a1ea345c7a1b)) [@haoxianrui](https://github.com/haoxianrui) +- 修复水印层级问题([#123](https://github.com/youlaitech/vue3-element-admin/pull/123)) [@cshaptx4869](https://github.com/cshaptx4869) +- 修复混合布局样式问题([#124](https://github.com/youlaitech/vue3-element-admin/pull/124)) [@cshaptx4869](https://github.com/cshaptx4869) +- 修复关闭弹窗时没有clearValidate问题([#125](https://github.com/youlaitech/vue3-element-admin/pull/125)) [@andm31](https://github.com/andm31) + + + +# 2.11.0 (2024/5/27) + +## ✨ feat +- 菜单添加路由参数设置(author by [haoxianrui](https://github.com/haoxianrui)) +- 增加列表选择组件(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 增加列表选择组件使用示例(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 增加defaultToolbar配置参数(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 表单弹窗支持drawer模式(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 表单项增加computed和watchEffect配置(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 支持switch属性修改(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 表单项增加文本类型支持(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 列表列增加show配置项(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 支持搜索表单显隐控制(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 支持input属性修改(author by [cshaptx4869](https://github.com/cshaptx4869)) +- search配置新增函数能力拓展(author by [xiudaozhe](https://github.com/xiudaozhe)) +- 表格新增列设置控制(author by [haoxianrui](https://github.com/haoxianrui)) +- 搜索添加展开和收缩(author by [haoxianrui](https://github.com/haoxianrui)) +- watch函数增加配置项参数返回(author by [cshaptx4869](https://github.com/cshaptx4869)) + +## ♻️ refactor +- 重构图标选择组件(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 重构列表选择组件默认样式 (author by [cshaptx4869](https://github.com/cshaptx4869)) +- 加强对话框表单组件和列表选择组件(author by [cshaptx4869](https://github.com/cshaptx4869)) +- routeMeta增加alwaysShow字段声明(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 分页组件增加溢出滚动效果(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 修正登录表单的Ref类型(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 点击表格刷新按钮不重置页码(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 筛选列超出一定高度滚动(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 优化加强initFn函数,表单项增加initFn函数(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 重构watch、computed、watchEffect调用(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 修改操作成功提示(author by [cshaptx4869](https://github.com/cshaptx4869)) +- PageSearch 改用card作为容器,样式改用unocss写法(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 优化首页 loading 动画效果author by [haoxianrui](https://github.com/haoxianrui)) + + +## 🐛 fix +- 路由是否始终显示不限制只有顶级目录才有的配置,开放至菜单 (author by [haoxianrui](https://github.com/haoxianrui)) +- sockjs-client 报错 global is not defined 导致开发环境无法打开 WebSocket 页面问题修复 (author by [haoxianrui](https://github.com/haoxianrui)) +- 发送用户重启密码功能,最少为6位字符(小于6位登陆时不允许的问题) (author by [dreamnyj](https://gitee.com/dreamnyj)) +- 修复系统设置面板滚动条问题(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 修复表单插槽失效问题(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 修改tagsview刷新丢失query问题(author by [xiudaozhe](https://github.com/xiudaozhe)) + +## 📦️ build +- 升级 NPM 包版本至最新 (author by [haoxianrui](https://github.com/haoxianrui)) + +## ⚙️ ci +- 规整脚本执行命令(author by [cshaptx4869](https://github.com/cshaptx4869)) + + +# 2.10.1 (2024/5/4) + +## ♻️ refactor +- 抽离CURD的使用部分代码为Hooks实现(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 修改CURD导入权限点标识名(author by [cshaptx4869](https://github.com/cshaptx4869)) +- cURD表单字段支持watch监听(author by [cshaptx4869](https://github.com/cshaptx4869)) +- cURD表单input支持number修饰(author by [cshaptx4869](https://github.com/cshaptx4869)) +- cURD表单组件支持checkbox多选框(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 优化axios响应数据TS类型提示(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 修改CURD表单组件自定义类型的attrs传值(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 同步重置密码按钮权限标识重命名(author by [haoxianrui](https://github.com/haoxianrui)) +- 重构API为静态方法实现模块化管理,并将types.ts重命名为model.ts用于存放接口模型定义(author by [haoxianrui](https://github.com/haoxianrui)) + + +## 🐛 fix +- sockjs-client 报错 global is not defined 导致开发环境无法打开 WebSocket 页面问题修复 (author by [haoxianrui](https://github.com/haoxianrui)) +- 主题颜色设置覆盖暗黑模式下el-table行激活的背景色问题修复 (author by [haoxianrui](https://github.com/haoxianrui)) +- 修复因API接口调整而影响的调用页面的问题 (author by [haoxianrui](https://github.com/haoxianrui)) + +## 📦️ build +- 升级 NPM 包版本至最新 (author by [haoxianrui](https://github.com/haoxianrui)) + + +# 2.10.0 (2024/4/26) +## ✨ feat +- 封装增删改查组件(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 集成 vite-plugin-vue-devtools 插件(author by [Tricker39](https://github.com/Tricker39)) +- 增加CURD配置化实现(author by [cshaptx4869](https://github.com/cshaptx4869)) + + +# 2.9.3 (2024/04/14) +## ✨ feat +- 增加vue文件代码片段(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 菜单 hover 背景色添加值全局SCSS变量进行控制(author by [haoxianrui](https://github.com/haoxianrui)) + +## ♻️ refactor +- 加强基础国际化(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 增加语言和布局大小枚举类型(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 增加侧边栏状态枚举类型(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 使用布局枚举替换字面量(author by [haoxianrui](https://github.com/haoxianrui)) +- 控制台使用静态数据循环渲染(author by [april](mailto:april@zen-game.cn)) +- 本地缓存的 token 变量重命名(author by [haoxianrui](https://github.com/haoxianrui)) +- 完善 Vite 环境变量类型声明(author by [haoxianrui](https://github.com/haoxianrui)) + +## 🐛 fix +- 修复构建时提示iconComponent.name可能为undefined的报错 (author by [wangji1042](https://github.com/wangji1042)) +- 修复浏览器密码自动填充时可能存在的报错 (author by [cshaptx4869](https://github.com/cshaptx4869)) +- 修复eslint报错(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 移动端下点击左侧菜单节点后关闭侧边栏(author by [haoxianrui](https://github.com/haoxianrui)) +- 添加 size 类型断言修复类型报错(author by [haoxianrui](https://github.com/haoxianrui)) + +## 📦️ build +- husky9.x版本适配 (author by [cshaptx4869](https://github.com/cshaptx4869)) +- 升级 npm 包版本至最新(author by [haoxianrui](https://github.com/haoxianrui)) + +# 2.9.2 (2024/03/05) +## ✨ feat +- vscode开发扩展推荐(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 完善基础增删改查Mock接口(author by [haoxianrui](https://github.com/haoxianrui)) + +## ♻️ refactor +- 修改login密码框功能实现(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 弱化页面进入动画效果(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 取消推荐TypeScript Vue Plugin (author by [cshaptx4869](https://github.com/cshaptx4869)) +- 网站加载动画替换 (author by [haoxianrui](https://github.com/haoxianrui)) +- 优化主题和主题色监听,避免多个页面重复初始化 (author by [haoxianrui](https://github.com/haoxianrui)) + +## 🐛 fix +- AppMain 高度在非固定头部不正确导致出现滚动条问题修复 (author by [haoxianrui](https://github.com/haoxianrui)) +- 修复混合模式开启固定Head时的样式问题 (author by [cshaptx4869](https://github.com/cshaptx4869)) +- 设置面板统一字体大小 (author by [cshaptx4869](https://github.com/cshaptx4869)) + +## 📦️build +- 通过env配置控制mock服务 (author by [cshaptx4869](https://github.com/cshaptx4869)) +- 升级依赖包至最新版本 (author by [haoxianrui](https://github.com/haoxianrui)) +- 定义vite全局常量替换项目标题和版本 (author by [cshaptx4869](https://github.com/cshaptx4869)) + +# 2.9.1 (2024/02/28) +## ♻️ refactor +- 项目配置按钮移入navbar(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 优化user数据定义(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 统一设置栏的 SVG 图标风格 + +## 🐛 fix +- 规整一些开发依赖(author by [cshaptx4869](https://github.com/cshaptx4869)) +- 修复登录页主题切换问题 (author by [cshaptx4869](https://github.com/cshaptx4869)) + +## 🚀 pref + +- 压缩图片资源 (author by [cshaptx4869](https://github.com/cshaptx4869)) + + +# 2.9.0 (2024/02/25) + +## ✨ feat +- 引入 animate.css 动画库 +- 新增水印和配置 +- 动态路由菜单支持 element plus 的图标 + +## ♻️ refactor +- Layout 布局重构和相关问题修复 +- sass 使用 @use 替代 @import 引入外部文件指令 + +## 🐛 fix +- 修复管理页面部分弹窗无法打开问题 +- 主题颜色设置按钮 hover 等未变化问题修复 + + +# 2.8.1 (2024/01/10) + +## ✨ feat +- 替换 Mock 解决方案 vite-plugin-mock 为 vite-plugin-mock-dev-server 适配 Vite5 + +# 2.8.0 (2023/12/27) + +## ⬆️ chore +- 升级 Vite4 至 Vite5 + +# 2.7.1 (2023/12/12) + +## ♻️ refactor +- 将打包后的文件进行分类 (author by [ityangzhiwen](https://gitee.com/ityangzhiwen)) + +# 2.7.0 (2023/11/19) + +## ♻️ refactor +- 代码重构优化 +- 修改自动导入组件类型声明文件路径 +- 完善 typescript 类型 + +## 🐛 fix +- 修复管理页面部分弹窗无法打开问题 + + +# 2.7.0 (2023/11/19) + +## ♻️ refactor +- 代码重构 +- 修改自动导入组件类型声明文件路径 +- 完善 typescript 类型 + +## 🐛 fix +- 修复管理页面部分弹窗无法打开问题 + + +# 2.6.3 (2023/10/22) + +## ✨ feat +- 菜单管理新增目录只有一级子路由是否始终显示(alwaysShow)和路由页面是否缓存(keepAlive)的配置 +- 接口文档新增 swagger、knife4j +- 引入和支持 tsx + +## ♻️ refactor +- 代码瘦身,整理并删除未使用的 svg +- 控制台样式优化 + +## 🐛 fix +- 菜单栏折叠和展开的图标暗黑模式显示问题修复 + + +# 2.6.2 (2023/10/11) + +## 🐛 fix +- 主题设置未持久化问题 +- UnoCSS 插件无智能提示 + +## ♻️ refactor +- WebSocket 演示样式和代码优化 +- 用户管理代码重构 + +# 2.6.1 (2023/9/4) + +## 🐛 fix +- 导航顶部模式、混合模式样式在固定 Header 出现的样式问题修复 +- 固定 Header 没有持久化问题修复 +- 字典回显兼容 String 和 Number 类型 + +# 2.6.0 (2023/8/24)💥💥💥 + +## ✨ feat +- 导航顶部模式、混合模式支持(author by [april-tong](https://april-tong.com/)) +- 平台文档(内嵌)(author by [april-tong](https://april-tong.com/)) + +# 2.5.0 (2023/8/8) + +## ✨ feat +- 新增 Mock(author by [ygcaicn](https://github.com/ygcaicn)) +- 图标 DEMO(author by [ygcaicn](https://github.com/ygcaicn)) + +## 🐛 fix +- 字典支持 Number 类型 + +# 2.4.1 (2023/7/20) + +## ✨ feat +- 整合 vite-plugin-compression 插件打包优化(3.66MB → 1.58MB) (author by [april-tong](https://april-tong.com/)) +- 字典组件封装(author by [haoxr](https://juejin.cn/user/4187394044331261/posts)) + +## 🐛 fix +- 分页组件hidden无效 +- 签名无法保存至后端 +- Git 提交 stylelint 校验部分机器报错 + +# 2.4.0 (2023/6/17) + +## ✨ feat +- 新增组件标签输入框(author by [april-tong](https://april-tong.com/)) +- 新增组件签名(author by [april-tong](https://april-tong.com/)) +- 新增组件表格(author by [april-tong](https://april-tong.com/)) +- Echarts 图表添加下载功能 author by [april-tong](https://april-tong.com/)) + +## ♻️ refactor +- 限制包管理器为 pnpm 和 node 版本16+ +- 自定义组件自动导入配置 +- 搜索框样式写法优化 + +## 🐛 fix +- 用户导入的部门回显成数字问题修复 + +## ⬆️ chore +- element-plus 版本升级 2.3.5 → 2.3.6 + +# 2.3.1 (2023/5/21) + +## 🔄 refactor +- 组件示例文件名称优化 + +# 2.2.2 (2023/5/11) + +## ✨ feat +- 组件封装示例添加源码地址 +- 角色、菜单、部门、字段按钮添加权限控制 + + +# 2.3.0 (2023/5/12) + +## ⬆️ chore +- vue 版本升级 3.2.45 → 3.3.1 ([CHANGELOG](https://github.com/vuejs/core/blob/main/CHANGELOG.md)) +- vite 版本升级 4.3.1 → 4.3.5 + +## ♻️ refactor +- 使用 vue 3.3 版本新特性 `defineOptions` 在 `setup` 定义组件名称,移除重复的 `script` 标签 + +# 2.2.2 (2023/5/11) + +## ✨ feat +- 用户新增提交添加 `vueUse` 的 `useDebounceFn` 函数实现按钮防抖节流 + + +# 2.2.1 (2023/4/25) + +## 🐛 fix +- 图标选择器组件使用 `onClickOutside` 未排除下拉弹出框元素导致无法输入搜索。 + diff --git a/resources/vue/LICENSE b/resources/vue/LICENSE new file mode 100644 index 0000000..9825cba --- /dev/null +++ b/resources/vue/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021-present 有来开源组织 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/resources/vue/README.en-US.md b/resources/vue/README.en-US.md new file mode 100644 index 0000000..68cc337 --- /dev/null +++ b/resources/vue/README.en-US.md @@ -0,0 +1,161 @@ +
+ + + + + + + +
中文 | English
+
+ + +![](https://foruda.gitee.com/images/1708618984641188532/a7cca095_716974.png "rainbow.png") + + + + +## Introduction + +[vue3-element-admin](https://gitee.com/youlaiorg/vue3-element-admin) is a free and open-source admin template for backend management frontend, built with popular technologies such as Vue3, Vite5, TypeScript, Element-Plus, and Pinia (with accompanying [backend source code](https://gitee.com/youlaiorg/youlai-boot)). + + + + +## Project Features + +- **Simple and Easy-to-use**: Upgraded version of [vue-element-admin](https://gitee.com/panjiachen/vue-element-admin) for Vue3, with minimal encapsulation and easy to get started. + +- **Data Interaction**: Support both local `Mock` data and remote API. Comes with [Java backend source code](https://gitee.com/youlaiorg/youlai-boot) and online API documentation. + +- **Permission Management**: Complete permission system for users, roles, menus, dictionaries, and departments. + +- **Essential Infrastructure**: Dynamic routing, button permissions, internationalization, code style, Git commit conventions, and common component encapsulation. + +- **Continuous Updates**: Since 2021, the project has maintained an open-source status with continuous updates, integrating new tools and dependencies in real time, and has accumulated a broad user base. + +## Project Preview + +![Light Mode](https://foruda.gitee.com/images/1709651876583793739/0ba1ee1c_716974.png) + +![Dark Mode](https://foruda.gitee.com/images/1709651875494206224/2a2b0b53_716974.png) + +![API Documentation](https://foruda.gitee.com/images/1687755822857820115/96054330_716974.png) + +## Project Links + +| Project | Gitee | Github | GitCode | +| ---- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| Frontend | [vue3-element-admin](https://gitee.com/youlaiorg/vue3-element-admin) | [vue3-element-admin](https://github.com/youlaitech/vue3-element-admin) | [vue3-element-admin](https://gitcode.net/youlai/vue3-element-admin) | +| Backend | [youlai-boot](https://gitee.com/youlaiorg/youlai-boot) | [youlai-boot](https://github.com/haoxianrui/youlai-boot.git) | [youlai-boot](https://gitcode.net/youlai/youlai-boot) | + +## Environment Setup + +| Environment | Name and Version | Download Link | +| -------------------- | :----------------------------------------------------------- | ------------------------------------------------------------ | +| **Development Tool** | VSCode | [Download](https://code.visualstudio.com/Download) | +| **Runtime Environment** | Node ≥18 | [Download](http://nodejs.cn/download) | + + +## Project Setup + +```bash +# Clone the repository +git clone https://gitee.com/youlaiorg/vue3-element-admin.git + +# Change directory +cd vue3-element-admin + +# Install pnpm +npm install pnpm -g + +# Install dependencies +pnpm install + +# Start the project +pnpm run dev +``` + +## Project Deployment + +```bash +# Build the project +pnpm run build + +# Upload files to the remote server +Copy the files generated in the `dist` directory to the `/usr/share/nginx/html` directory. + +# nginx.cofig configuration +server { + listen 80; + server_name localhost; + location / { + root /usr/share/nginx/html; + index index.html index.htm; + } + # Reverse proxy configuration + location /prod-api/ { + proxy_pass http://vapi.youlai.tech/; # Replace vapi.youlai.tech with your backend API address + } +} +``` + +## Local Mock + +The project supports both online API and local mock API. By default, it uses the online API. If you want to switch to the mock API, modify the value of `VITE_MOCK_DEV_SERVER` in the `.env.development` file to `true`. + +## Backend API + +> If you have a basic understanding of Java development, follow these steps to convert online API to local backend API and set up a full-stack development environment. + +1. Get the backend source code based on `Java` and `SpringBoot` from [youlai-boot](https://gitee.com/youlaiorg/youlai-boot.git). +2. Follow the instructions in the backend project's README.md to set up the local environment. +3. Modify the value of `VITE_APP_API_URL` in the `.env.development` file to `http://localhost:8989`, replacing it with the backend API URL. + +## Notes + +- **Auto import plugin is disabled by default** + + Component type declarations have been automatically generated for the template project. If you add and use new components, follow the instructions in the screenshot to enable automatic generation. After automatic generation is complete, remember to set it back to `false` to avoid conflicts. + + ![](https://foruda.gitee.com/images/1687755823137387608/412ea803_716974.png) + +- **Blank page when accessing the project** + + Try upgrading your browser, as older browser engines may not support certain new JavaScript syntax, such as optional chaining operator `?.`. + +- **Red highlight on project components, functions, and imports** + + Restart VSCode to try again. + +- **Other issues** + + If you have any other issues or suggestions, please open an [issue](https://gitee.com/youlaiorg/vue3-element-admin/issues/new). + +## Project Documentation + +- [Building a Backend Management System from Scratch with Vue3, Vite, TypeScript, and Element-Plus](https://blog.csdn.net/u013737132/article/details/130191394) + +- [ESLint+Prettier+Stylelint+EditorConfig for Standardized and Unified Frontend Code Style](https://blog.csdn.net/u013737132/article/details/130190788) +- [Git Commit Conventions with Husky, Lint-staged, Commitlint, Commitizen, and cz-git](https://blog.csdn.net/u013737132/article/details/130191363) + +## Commit Conventions + +Execute `pnpm run commit` to invoke interactive git commit and complete the information input and selection according to the prompts. + +![](https://foruda.gitee.com/images/1687755823165218215/c1705416_716974.png) + +## Community 🚀 + +> **Follow "Youlai Tech" WeChat Official Account to get the QR code for the community.** +> +> If the QR code for the community has expired, please add my WeChat (haoxianrui) and indicate whether you are interested in "Frontend", "Backend", or "Full Stack" to get the latest QR code. +> +> This measure is taken to ensure the quality of the community and prevent marketing advertising from infiltrating. Thank you for your understanding! + +| Official Account | Community | +|:----:|:----:| +| ![Youlai Tech WeChat Official Account QR Code](https://foruda.gitee.com/images/1687689212187063809/3c69eaee_716974.png) | ![Community QR Code](https://foruda.gitee.com/images/1687689212139273561/6a65ef69_716974.png) | + diff --git a/resources/vue/README.md b/resources/vue/README.md new file mode 100644 index 0000000..5566178 --- /dev/null +++ b/resources/vue/README.md @@ -0,0 +1,182 @@ +
+ + + + + + + +
中文 | English
+
+ +![](https://foruda.gitee.com/images/1708618984641188532/a7cca095_716974.png "rainbow.png") + + + +## 项目简介 + +[vue3-element-admin](https://gitee.com/youlaiorg/vue3-element-admin) 是基于 Vue3 + Vite5+ TypeScript5 + Element-Plus + Pinia 等主流技术栈构建的免费开源的后台管理前端模板(配套[后端源码](https://gitee.com/youlaiorg/youlai-boot))。 + + +## 项目特色 + +- **简洁易用**:基于 [vue-element-admin](https://gitee.com/panjiachen/vue-element-admin) 升级的 Vue3 版本,无过渡封装 ,易上手。 + +- **数据交互**:同时支持本地 `Mock` 和线上接口,配套 [Java 后端源码](https://gitee.com/youlaiorg/youlai-boot)和[在线接口文档](https://www.apifox.cn/apidoc/shared-195e783f-4d85-4235-a038-eec696de4ea5)。 + +- **权限管理**:用户、角色、菜单、字典、部门等完善的权限系统功能。 + +- **基础设施**:动态路由、按钮权限、国际化、代码规范、Git 提交规范、常用组件封装。 + +- **持续更新**:项目持续开源更新,实时更新工具和依赖。 + + + +## 项目预览 + +![明亮模式](https://foruda.gitee.com/images/1709651876583793739/0ba1ee1c_716974.png) + +![暗黑模式](https://foruda.gitee.com/images/1709651875494206224/2a2b0b53_716974.png) + +![接口文档](https://foruda.gitee.com/images/1687755822857820115/96054330_716974.png) + +## 项目地址 + +| 项目 | Gitee | Github | +| ---- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 前端 | [vue3-element-admin](https://gitee.com/youlaiorg/vue3-element-admin) | [vue3-element-admin](https://github.com/youlaitech/vue3-element-admin) | [vue3-element-admin](https://gitcode.net/youlai/vue3-element-admin) | +| 精简版 | [vue3-element-admin-thin](https://gitee.com/cshaptx4869/vue3-element-admin-thin) | [vue3-element-admin-thin](https://github.com/youlaitech/vue3-element-admin-thin) | +| 后端 | [youlai-boot](https://gitee.com/youlaiorg/youlai-boot) | [youlai-boot](https://github.com/haoxianrui/youlai-boot.git) | + +## 环境准备 + +| 环境 | 名称版本 | 下载地址 | +| -------------------- | :----------------------------------------------------------- | ------------------------------------------------------------ | +| **开发工具** | VSCode | [下载](https://code.visualstudio.com/Download) | +| **运行环境** | Node ≥18 (其中 20.6.0 版本不可用) | [下载](http://nodejs.cn/download) | + + +## 项目启动 + +```bash +# 克隆代码 +git clone https://gitee.com/youlaiorg/vue3-element-admin.git + +# 切换目录 +cd vue3-element-admin + +# 安装 pnpm +npm install pnpm -g + +# 安装依赖 +pnpm install + +# 启动运行 +pnpm run dev +``` + + + +## 项目部署 + +```bash +# 项目打包 +pnpm run build + +# 上传文件至远程服务器 +将打包生成在 `dist` 目录下的文件拷贝至 `/usr/share/nginx/html` 目录 + +# nginx.cofig 配置 +server { + listen 80; + server_name localhost; + location / { + root /usr/share/nginx/html; + index index.html index.htm; + } + # 反向代理配置 + location /prod-api/ { + # vapi.youlai.tech 替换后端API地址,注意保留后面的斜杠 / + proxy_pass http://vapi.youlai.tech/; + } +} +``` + +## 本地Mock + +项目同时支持在线和本地 Mock 接口,默认使用线上接口,如需替换为 Mock 接口,修改文件 `.env.development` 的 `VITE_MOCK_DEV_SERVER` 为 `true` **即可**。 + +## 后端接口 + +> 如果您具备Java开发基础,按照以下步骤将在线接口转为本地后端接口,创建企业级前后端分离开发环境,助您走向全栈之路。 + +1. 获取基于 `Java` 和 `SpringBoot` 开发的后端 [youlai-boot](https://gitee.com/youlaiorg/youlai-boot.git) 源码。 +2. 根据后端工程的说明文档 [README.md](https://gitee.com/youlaiorg/youlai-boot#%E9%A1%B9%E7%9B%AE%E8%BF%90%E8%A1%8C) 完成本地启动。 +3. 修改 `.env.development` 文件中的 `VITE_APP_API_URL` 的值,将其从 http://vapi.youlai.tech 更改为 http://localhost:8989。 + + +## 注意事项 + +- **自动导入插件自动生成默认关闭** + + 模板项目的组件类型声明已自动生成。如果添加和使用新的组件,请按照图示方法开启自动生成。在自动生成完成后,记得将其设置为 `false`,避免重复执行引发冲突。 + + ![](https://foruda.gitee.com/images/1687755823137387608/412ea803_716974.png) + +- **项目启动浏览器访问空白** + + 请升级浏览器尝试,低版本浏览器内核可能不支持某些新的 JavaScript 语法,比如可选链操作符 `?.`。 + +- **项目同步仓库更新升级** + + 项目同步仓库更新升级之后,建议 `pnpm install` 安装更新依赖之后启动 。 + +- **项目组件、函数和引用爆红** + + 重启 VSCode 尝试 + +- **其他问题** + + 如果有其他问题或者建议,建议 [ISSUE](https://gitee.com/youlaiorg/vue3-element-admin/issues/new) + + + +## 项目文档 + +- [基于 Vue3 + Vite + TypeScript + Element-Plus 从0到1搭建后台管理系统](https://blog.csdn.net/u013737132/article/details/130191394) + +- [ESLint+Prettier+Stylelint+EditorConfig 约束和统一前端代码规范](https://blog.csdn.net/u013737132/article/details/130190788) +- [Husky + Lint-staged + Commitlint + Commitizen + cz-git 配置 Git 提交规范](https://blog.csdn.net/u013737132/article/details/130191363) + + +## 提交规范 + +执行 `pnpm run commit` 唤起 git commit 交互,根据提示完成信息的输入和选择。 + +![](https://foruda.gitee.com/images/1687755823165218215/c1705416_716974.png) + + +## 项目统计 + +![Alt](https://repobeats.axiom.co/api/embed/aa7cca3d6fa9c308fc659fa6e09af9a1910506c3.svg "Repobeats analytics image") + + +Thanks to all the contributors! + +[![contributors](https://contrib.rocks/image?repo=youlaitech/vue3-element-admin)](https://github.com/youlaitech/vue3-element-admin/graphs/contributors) + + +## 交流群🚀 + +> **关注「有来技术」公众号,获取交流群二维码。** +> +> 如果交流群的二维码过期,请加微信(haoxianrui)并备注「前端」、「后端」或「全栈」以获取最新二维码。 +> +> 为确保交流群质量,防止营销广告人群混入,我们采取了此措施。望各位理解! + +| 公众号 | 交流群 | +|:----:|:----:| +| ![有来技术公众号二维码](https://foruda.gitee.com/images/1687689212187063809/3c69eaee_716974.png) | ![交流群二维码](https://foruda.gitee.com/images/1687689212139273561/6a65ef69_716974.png) | + diff --git a/resources/vue/commitlint.config.cjs b/resources/vue/commitlint.config.cjs new file mode 100644 index 0000000..89f188e --- /dev/null +++ b/resources/vue/commitlint.config.cjs @@ -0,0 +1,93 @@ +module.exports = { + // 继承的规则 + extends: ["@commitlint/config-conventional"], + // 自定义规则 + rules: { + // @see https://commitlint.js.org/#/reference-rules + + // 提交类型枚举,git提交type必须是以下类型 + "type-enum": [ + 2, + "always", + [ + "feat", // 新增功能 + "fix", // 修复缺陷 + "docs", // 文档变更 + "style", // 代码格式(不影响功能,例如空格、分号等格式修正) + "refactor", // 代码重构(不包括 bug 修复、功能新增) + "perf", // 性能优化 + "test", // 添加疏漏测试或已有测试改动 + "build", // 构建流程、外部依赖变更(如升级 npm 包、修改 webpack 配置等) + "ci", // 修改 CI 配置、脚本 + "revert", // 回滚 commit + "chore", // 对构建过程或辅助工具和库的更改(不影响源文件、测试用例) + ], + ], + "subject-case": [0], // subject大小写不做校验 + }, + + prompt: { + messages: { + type: "选择你要提交的类型 :", + scope: "选择一个提交范围(可选):", + customScope: "请输入自定义的提交范围 :", + subject: "填写简短精炼的变更描述 :\n", + body: '填写更加详细的变更描述(可选)。使用 "|" 换行 :\n', + breaking: '列举非兼容性重大的变更(可选)。使用 "|" 换行 :\n', + footerPrefixesSelect: "选择关联issue前缀(可选):", + customFooterPrefix: "输入自定义issue前缀 :", + footer: "列举关联issue (可选) 例如: #31, #I3244 :\n", + generatingByAI: "正在通过 AI 生成你的提交简短描述...", + generatedSelectByAI: "选择一个 AI 生成的简短描述:", + confirmCommit: "是否提交或修改commit ?", + }, + // prettier-ignore + types: [ + { value: "feat", name: "特性: ✨ 新增功能", emoji: ":sparkles:" }, + { value: "fix", name: "修复: 🐛 修复缺陷", emoji: ":bug:" }, + { value: "docs", name: "文档: 📝 文档变更(更新README文件,或者注释)", emoji: ":memo:" }, + { value: "style", name: "格式: 🌈 代码格式(空格、格式化、缺失的分号等)", emoji: ":lipstick:" }, + { value: "refactor", name: "重构: 🔄 代码重构(不修复错误也不添加特性的代码更改)", emoji: ":recycle:" }, + { value: "perf", name: "性能: 🚀 性能优化", emoji: ":zap:" }, + { value: "test", name: "测试: 🧪 添加疏漏测试或已有测试改动", emoji: ":white_check_mark:"}, + { value: "build", name: "构建: 📦️ 构建流程、外部依赖变更(如升级 npm 包、修改 vite 配置等)", emoji: ":package:"}, + { value: "ci", name: "集成: ⚙️ 修改 CI 配置、脚本", emoji: ":ferris_wheel:"}, + { value: "revert", name: "回退: ↩️ 回滚 commit",emoji: ":rewind:"}, + { value: "chore", name: "其他: 🛠️ 对构建过程或辅助工具和库的更改(不影响源文件、测试用例)", emoji: ":hammer:"}, + ], + useEmoji: true, + emojiAlign: "center", + useAI: false, + aiNumber: 1, + themeColorCode: "", + scopes: [], + allowCustomScopes: true, + allowEmptyScopes: true, + customScopesAlign: "bottom", + customScopesAlias: "custom", + emptyScopesAlias: "empty", + upperCaseSubject: false, + markBreakingChangeMode: false, + allowBreakingChanges: ["feat", "fix"], + breaklineNumber: 100, + breaklineChar: "|", + skipQuestions: [], + issuePrefixes: [ + { value: "closed", name: "closed: ISSUES has been processed" }, + ], + customIssuePrefixAlign: "top", + emptyIssuePrefixAlias: "skip", + customIssuePrefixAlias: "custom", + allowCustomIssuePrefix: true, + allowEmptyIssuePrefix: true, + confirmColorize: true, + maxHeaderLength: Infinity, + maxSubjectLength: Infinity, + minSubjectLength: 0, + scopeOverrides: undefined, + defaultBody: "", + defaultIssues: "", + defaultScope: "", + defaultSubject: "", + }, +}; diff --git a/resources/vue/index.html b/resources/vue/index.html new file mode 100644 index 0000000..60122e0 --- /dev/null +++ b/resources/vue/index.html @@ -0,0 +1,64 @@ + + + + + + + + + + + <%= title %> + + + +
+
+
+ + + + + diff --git a/resources/vue/licenses/vue-element-admin/LICENSE b/resources/vue/licenses/vue-element-admin/LICENSE new file mode 100644 index 0000000..3fce384 --- /dev/null +++ b/resources/vue/licenses/vue-element-admin/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017-present PanJiaChen + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/resources/vue/licenses/vue3-element-admin/LICENSE b/resources/vue/licenses/vue3-element-admin/LICENSE new file mode 100644 index 0000000..9825cba --- /dev/null +++ b/resources/vue/licenses/vue3-element-admin/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021-present 有来开源组织 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/resources/vue/mock/auth.mock.ts b/resources/vue/mock/auth.mock.ts new file mode 100644 index 0000000..90f08f7 --- /dev/null +++ b/resources/vue/mock/auth.mock.ts @@ -0,0 +1,43 @@ +import { defineMock } from "./base"; + +export default defineMock([ + { + url: "auth/captcha", + method: ["GET"], + body: { + code: "00000", + data: { + captchaKey: "534b8ef2b0a24121bec76391ddd159f9", + captchaBase64: + "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAAkCAIAAADNSmkJAAAFKUlEQVR4Xu2ZXUwcVRiGV70wMWo08V5NvPXCrDbFaGpMaZW2hqQxaoiJTRsaMBCNSYtpa2JTKiFSelFa+Q/QZcMWqEhBlh+htbEpZhMrBQrlJ0hBywLLyrJ0WZbje3bqOvPNLHPWrDvdOE9ONmfe78zkzMs335wzWJhJQrBQweS/wTQ6QWgYHdoIOcecOe05O+t2WkutO+p2ZF3Ksg/YV9ZW6FATYajR3nveg60H9327r3O8c35lHgp+r05dPdJzBL73TPSQ8SaCKIxGLsPlop+K0JHrEkPuoT31e5qGmmjARACF0agYyGVNlyVm/pzZXrN9fHGcBkz0UBid+31u93i3XFFT80vN8cvHqWqih8Lo1NpUqS5vwh3vnd223VQ10UNh9NbyrcFQUK6oCawHUipSqGqiB83oBf+CXFGDMp1mS6OqiR4Ko7FexkpOrqhpHGw82nOUqiZ6KIzGrkRuorW0dJMmOy+hOCfYGzb2RBFv6HRO0gEJw/U7y+pgL1bwmTxexN6sZ31TdEwEhdG+gA+7EqyXpUO1uZH20cWL8hMTRt1N9tBXzCJrOIRoCPJpSO2RAp4HmtCdIfZ+2JWgEBN9LbR28seTGU0Zue1tMLp+YIAMSADzfvbkKX4/eb28j4YODiGin3heqmIlLja5hAUCu+nmGY3JWKvpMAlqNGgebsauBOvlqSX+JEx7p7EbTLen53XlzfmWUioqXikrc68Y8N2juJ/fyVsNChGHEE//rBANYWaZz+TRQqpLaBgNsPfDrgSpbS21YtV87IdjrlkX9JZbt5DOma2t9ITo5F+5glN22WwL/n+yDv00mw06orKxOqQ5+J04hhViwzAXETIcJDVm8uxZqktoGx2Nj9t43Wgaul/ERQiGQvtbWnDWgZYW9CXlQFjZ/7ciyHNn+Z2MexTimIeLz59TiIln0M1e+IbPpOAaDUnEYPTi6iqKxpbycs/qKo1tCslfKcffPn9enuMiPPY1vxO/ckeFQ4h46cdGqUWoidE/y54q5tPY5WDrGzQqIXot4BgchEE57e00IMCw2/1qZSVO/7SjA78o9INzcxsbrL+fnTnDDh9mmZn8F30oG1Hm+nABv5mQMopDS/h1HxtqTzWbABMe9sxpPoe9zezeOo1GELqWhPS8t46M0IAYHbdvR1aHbaOjbjfLz2eFhez6dba4yAfgF30o0BFVE8+Mjh/wFxPI+I5mAEHU6Ls+38vhTFwOBGhMDF8gkFpbC5ffsdv/uBs6dIj19dExEtARVXv9YNbop8NFY3aZ6gRRo+tu3IBHnzmdNCBMXldXJKPfL74WzWUJRE+coDUknqsOdZXQbAJYwluVTbOZI3Qt8GFzMwxyjo3RgBiN4fr+elXVpZGRLWXl6PdOTtJBSlBDUK/lnIrjOlrtqWYTQDJaF6FrTXu9sOa1ysrVoM5HVE1GFxZQcyJ/p+xzv6K/rbr6N6+XDpUBl0tKFIrbz78qWB6YnWFMCBld4XLBms+7df75ook/GNzb0GCV7U1Qfz9p64TyQWNjYD3qe9rj4SMJtQP3MyjSDPzWIRHPjH7X4YAvfXoPuyZf9Pbi3PcuXIh4mp3NllYC6XY79C+jl2o8PBipxjnBttn4MgMNnWgfcRJGPI2OL8hTj3LloIlmRicvBhiNykvecpqoa3RSY4DRcLAwyicuOepVR1JjgNFYHWONHL04czTX0UmNAUYD7Pr+xc4wqTHGaBb2OtZvHUmNYUazcA2J6etdUmOk0f8rTKMTxF91RG0D1SwYGwAAAABJRU5ErkJggg==", + }, + msg: "一切ok", + }, + }, + + { + url: "auth/login", + method: ["POST"], + body: { + code: "00000", + data: { + accessToken: + "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImp0aSI6IjE2YWJkNTlkOTAxNzQwZDliYmI3ZjczODBhZDkyNzNhIiwidXNlcklkIjoyLCJ1c2VybmFtZSI6ImFkbWluIiwiZGVwdElkIjoxLCJkYXRhU2NvcGUiOjEsImF1dGhvcml0aWVzIjpbIlJPTEVfQURNSU4iXSwiZXhwIjoxNjkxMTAzMzgyfQ.P4cuIfmPepl3HuguhMS7NXn5a7IUPpsLbmtA_rHOhHk", + tokenType: "Bearer", + refreshToken: null, + expires: null, + }, + msg: "一切ok", + }, + }, + + { + url: "auth/logout", + method: ["DELETE"], + body: { + code: "00000", + data: {}, + msg: "string", + }, + }, +]); diff --git a/resources/vue/mock/base.ts b/resources/vue/mock/base.ts new file mode 100644 index 0000000..438e1c1 --- /dev/null +++ b/resources/vue/mock/base.ts @@ -0,0 +1,10 @@ +import path from "path"; +import { createDefineMock } from "vite-plugin-mock-dev-server"; + +export const defineMock = createDefineMock((mock) => { + // 拼接url + mock.url = path.join( + import.meta.env.VITE_APP_BASE_API + "/api/v1/", + mock.url + ); +}); diff --git a/resources/vue/mock/dept.mock.ts b/resources/vue/mock/dept.mock.ts new file mode 100644 index 0000000..e9b6d1b --- /dev/null +++ b/resources/vue/mock/dept.mock.ts @@ -0,0 +1,153 @@ +import { defineMock } from "./base"; + +export default defineMock([ + { + url: "dept/options", + method: ["GET"], + body: { + code: "00000", + data: [ + { + value: 1, + label: "有来技术", + children: [ + { + value: 2, + label: "研发部门", + }, + { + value: 3, + label: "测试部门", + }, + ], + }, + ], + msg: "一切ok", + }, + }, + + { + url: "dept", + method: ["GET"], + body: { + code: "00000", + data: [ + { + id: 1, + parentId: 0, + name: "有来技术", + code: "YOULAI", + sort: 1, + status: 1, + children: [ + { + id: 2, + parentId: 1, + name: "研发部门", + code: "RD001", + sort: 1, + status: 1, + children: [], + createTime: null, + updateTime: "2022-04-19 12:46", + }, + { + id: 3, + parentId: 1, + name: "测试部门", + code: "QA001", + sort: 1, + status: 1, + children: [], + createTime: null, + updateTime: "2022-04-19 12:46", + }, + ], + createTime: null, + updateTime: null, + }, + ], + msg: "一切ok", + }, + }, + + // 新增部门 + { + url: "dept", + method: ["POST"], + body({ body }) { + return { + code: "00000", + data: null, + msg: "新增部门" + body.name + "成功", + }; + }, + }, + + // 获取部门表单数据 + { + url: "dept/:id/form", + method: ["GET"], + body: ({ params }) => { + return { + code: "00000", + data: deptMap[params.id], + msg: "一切ok", + }; + }, + }, + + // 修改部门 + { + url: "dept/:id", + method: ["PUT"], + body({ body }) { + return { + code: "00000", + data: null, + msg: "修改部门" + body.name + "成功", + }; + }, + }, + + // 删除部门 + { + url: "dept/:id", + method: ["DELETE"], + body({ params }) { + return { + code: "00000", + data: null, + msg: "删除部门" + params.id + "成功", + }; + }, + }, +]); + +// 部门映射表数据 +const deptMap: Record = { + 1: { + id: 1, + name: "有来技术", + code: "YOULAI", + parentId: 0, + status: 1, + sort: 1, + }, + 2: { + id: 2, + name: "研发部门", + code: "RD001", + parentId: 1, + status: 1, + sort: 1, + }, + 3: { + id: 3, + name: "测试部门", + code: "QA001", + parentId: 1, + status: 1, + sort: 1, + }, +}; diff --git a/resources/vue/mock/dict.mock.ts b/resources/vue/mock/dict.mock.ts new file mode 100644 index 0000000..63b4b2c --- /dev/null +++ b/resources/vue/mock/dict.mock.ts @@ -0,0 +1,168 @@ +import { defineMock } from "./base"; + +export default defineMock([ + { + url: "dict/:code/options", + method: ["GET"], + body: ({ params }) => { + const code = params.code; + + let list = null; + + if (code == "gender") { + list = [ + { + value: "1", + label: "男", + }, + { + value: "2", + label: "女", + }, + { + value: "0", + label: "保密", + }, + ]; + } + + return { + code: "00000", + data: list, + msg: "一切ok", + }; + }, + }, + + { + url: "dict/page", + method: ["GET"], + body: { + code: "00000", + data: { + list: [ + { + id: 1, + name: "性别", + code: "gender", + status: 1, + dictItems: [ + { + id: 1, + name: "男", + value: "1", + sort: 1, + status: 1, + }, + { + id: 2, + name: "女", + value: "2", + sort: 2, + status: 1, + }, + { + id: 3, + name: "保密", + value: "0", + sort: 3, + status: 1, + }, + ], + }, + ], + total: 1, + }, + msg: "一切ok", + }, + }, + + // 新增字典 + { + url: "dict", + method: ["POST"], + body({ body }) { + return { + code: "00000", + data: null, + msg: "新增字典" + body.name + "成功", + }; + }, + }, + + // 获取字典表单数据 + { + url: "dict/:id/form", + method: ["GET"], + body: ({ params }) => { + return { + code: "00000", + data: dictMap[params.id], + msg: "一切ok", + }; + }, + }, + + // 修改字典 + { + url: "dict/:id", + method: ["PUT"], + body({ body }) { + return { + code: "00000", + data: null, + msg: "修改字典" + body.name + "成功", + }; + }, + }, + + // 删除字典 + { + url: "dict/:id", + method: ["DELETE"], + body({ params }) { + return { + code: "00000", + data: null, + msg: "删除字典" + params.id + "成功", + }; + }, + }, +]); + +// 字典映射表数据 +const dictMap: Record = { + 1: { + code: "00000", + data: { + id: 1, + name: "性别", + code: "gender", + status: 1, + dictItems: [ + { + id: 1, + name: "男", + value: "1", + sort: 1, + status: 1, + }, + { + id: 2, + name: "女", + value: "2", + sort: 2, + status: 1, + }, + { + id: 3, + name: "未知", + value: "0", + sort: 3, + status: 1, + }, + ], + }, + msg: "一切ok", + }, +}; diff --git a/resources/vue/mock/log.mock.ts b/resources/vue/mock/log.mock.ts new file mode 100644 index 0000000..08e63f2 --- /dev/null +++ b/resources/vue/mock/log.mock.ts @@ -0,0 +1,225 @@ +import { defineMock } from "./base"; + +export default defineMock([ + { + url: "logs/page", + method: ["GET"], + body: { + code: "00000", + data: { + list: [ + { + id: 36192, + module: "菜单", + content: "菜单列表", + requestUri: "/api/v1/menus", + method: null, + ip: "183.156.148.241", + region: "浙江省 杭州市", + browser: "Chrome 109.0.0.0", + os: "OSX", + executionTime: 5, + createBy: null, + createTime: "2024-07-07 20:38:47", + operator: "系统管理员", + }, + { + id: 36190, + module: "字典", + content: "字典分页列表", + requestUri: "/api/v1/dict/page", + method: null, + ip: "183.156.148.241", + region: "浙江省 杭州市", + browser: "Chrome 109.0.0.0", + os: "OSX", + executionTime: 9, + createBy: null, + createTime: "2024-07-07 20:38:45", + operator: "系统管理员", + }, + { + id: 36193, + module: "部门", + content: "部门列表", + requestUri: "/api/v1/dept", + method: null, + ip: "192.168.31.134", + region: "0 内网IP", + browser: "Chrome 125.0.0.0", + os: "Windows 10 or Windows Server 2016", + executionTime: 27, + createBy: null, + createTime: "2024-07-07 20:38:45", + operator: "系统管理员", + }, + { + id: 36191, + module: "菜单", + content: "菜单列表", + requestUri: "/api/v1/menus", + method: null, + ip: "192.168.31.134", + region: "0 内网IP", + browser: "Chrome 125.0.0.0", + os: "Windows 10 or Windows Server 2016", + executionTime: 39, + createBy: null, + createTime: "2024-07-07 20:38:44", + operator: "系统管理员", + }, + { + id: 36189, + module: "角色", + content: "角色分页列表", + requestUri: "/api/v1/roles/page", + method: null, + ip: "192.168.31.134", + region: "0 内网IP", + browser: "Chrome 125.0.0.0", + os: "Windows 10 or Windows Server 2016", + executionTime: 55, + createBy: null, + createTime: "2024-07-07 20:38:43", + operator: "系统管理员", + }, + { + id: 36188, + module: "用户", + content: "用户分页列表", + requestUri: "/api/v1/users/page", + method: null, + ip: "192.168.31.134", + region: "0 内网IP", + browser: "Chrome 125.0.0.0", + os: "Windows 10 or Windows Server 2016", + executionTime: 92, + createBy: null, + createTime: "2024-07-07 20:38:42", + operator: "系统管理员", + }, + { + id: 36187, + module: "登录", + content: "登录", + requestUri: "/api/v1/auth/login", + method: null, + ip: "192.168.31.134", + region: "0 内网IP", + browser: "Chrome 125.0.0.0", + os: "Windows 10 or Windows Server 2016", + executionTime: 19340, + createBy: null, + createTime: "2024-07-07 20:38:09", + operator: "系统管理员", + }, + { + id: 36186, + module: "登录", + content: "登录", + requestUri: "/api/v1/auth/login", + method: null, + ip: "192.168.31.134", + region: "0 内网IP", + browser: "Chrome 125.0.0.0", + os: "Windows 10 or Windows Server 2016", + executionTime: 19869, + createBy: null, + createTime: "2024-07-07 20:37:59", + operator: "系统管理员", + }, + { + id: 36185, + module: "登录", + content: "登录", + requestUri: "/api/v1/auth/login", + method: null, + ip: "112.103.111.59", + region: "黑龙江省 哈尔滨市", + browser: "Chrome 97.0.4692.98", + os: "Android", + executionTime: 96, + createBy: null, + createTime: "2024-07-07 20:37:21", + operator: "系统管理员", + }, + { + id: 36184, + module: "登录", + content: "登录", + requestUri: "/api/v1/auth/login", + method: null, + ip: "114.86.204.190", + region: "上海 上海市", + browser: "Chrome 125.0.0.0", + os: "Windows 10 or Windows Server 2016", + executionTime: 89, + createBy: null, + createTime: "2024-07-07 20:29:37", + operator: "系统管理员", + }, + ], + total: 36188, + }, + msg: "一切ok", + }, + }, + { + url: "logs/visit-trend", + method: ["GET"], + body: { + code: "00000", + data: { + dates: [ + "2024-06-30", + "2024-07-01", + "2024-07-02", + "2024-07-03", + "2024-07-04", + "2024-07-05", + "2024-07-06", + "2024-07-07", + ], + pvList: [1751, 5168, 4882, 5301, 4721, 4885, 1901, 1003], + uvList: null, + ipList: [207, 566, 565, 631, 579, 496, 222, 152], + }, + msg: "一切ok", + }, + }, + + { + url: "logs/visit-stats", + method: ["GET"], + body: { + code: "00000", + data: [ + { + type: "pv", + title: "浏览量", + todayCount: 1003, + totalCount: 36193, + growthRate: -0.35, + granularityLabel: "日", + }, + { + type: "uv", + title: "访客数", + todayCount: 100, + totalCount: 2000, + growthRate: 0, + granularityLabel: "日", + }, + { + type: "ip", + title: "IP数", + todayCount: 152, + totalCount: 3234, + growthRate: -0.2, + granularityLabel: "日", + }, + ], + msg: "一切ok", + }, + }, +]); diff --git a/resources/vue/mock/menu.mock.ts b/resources/vue/mock/menu.mock.ts new file mode 100644 index 0000000..a31ef4f --- /dev/null +++ b/resources/vue/mock/menu.mock.ts @@ -0,0 +1,1620 @@ +import { defineMock } from "./base"; + +export default defineMock([ + { + url: "menus/routes", + method: ["GET"], + body: { + code: "00000", + data: [ + { + path: "/system", + component: "Layout", + redirect: "/system/user", + name: "/system", + meta: { + title: "系统管理", + icon: "system", + hidden: false, + alwaysShow: false, + params: null, + }, + children: [ + { + path: "user", + component: "system/user/index", + name: "User", + meta: { + title: "用户管理", + icon: "el-icon-User", + hidden: false, + keepAlive: true, + alwaysShow: false, + params: null, + }, + }, + { + path: "role", + component: "system/role/index", + name: "Role", + meta: { + title: "角色管理", + icon: "role", + hidden: false, + keepAlive: true, + alwaysShow: false, + params: null, + }, + }, + { + path: "menu", + component: "system/menu/index", + name: "Menu", + meta: { + title: "菜单管理", + icon: "menu", + hidden: false, + keepAlive: true, + alwaysShow: false, + params: null, + }, + }, + { + path: "dept", + component: "system/dept/index", + name: "Dept", + meta: { + title: "部门管理", + icon: "tree", + hidden: false, + keepAlive: true, + alwaysShow: false, + params: null, + }, + }, + { + path: "dict", + component: "system/dict/index", + name: "Dict", + meta: { + title: "字典管理", + icon: "dict", + hidden: false, + keepAlive: true, + alwaysShow: false, + params: null, + }, + }, + ], + }, + { + path: "/api", + component: "Layout", + name: "/api", + meta: { + title: "接口文档", + icon: "api", + hidden: false, + alwaysShow: true, + params: null, + }, + children: [ + { + path: "apifox", + component: "demo/api/apifox", + name: "Apifox", + meta: { + title: "Apifox", + icon: "api", + hidden: false, + keepAlive: true, + alwaysShow: false, + params: null, + }, + }, + ], + }, + { + path: "/doc", + component: "Layout", + redirect: "https://juejin.cn/post/7228990409909108793", + name: "/doc", + meta: { + title: "平台文档", + icon: "document", + hidden: false, + alwaysShow: false, + params: null, + }, + children: [ + { + path: "internal-doc", + component: "demo/internal-doc", + name: "InternalDoc", + meta: { + title: "平台文档(内嵌)", + icon: "document", + hidden: false, + alwaysShow: false, + params: null, + }, + }, + { + path: "https://juejin.cn/post/7228990409909108793", + name: "Https://juejin.cn/post/7228990409909108793", + meta: { + title: "平台文档(外链)", + icon: "el-icon-Link", + hidden: false, + alwaysShow: false, + params: null, + }, + }, + ], + }, + { + path: "/multi-level", + component: "Layout", + name: "/multiLevel", + meta: { + title: "多级菜单", + icon: "cascader", + hidden: false, + alwaysShow: true, + params: null, + }, + children: [ + { + path: "multi-level1", + component: "demo/multi-level/level1", + name: "MultiLevel1", + meta: { + title: "菜单一级", + icon: "", + hidden: false, + alwaysShow: true, + params: null, + }, + children: [ + { + path: "multi-level2", + component: "demo/multi-level/children/level2", + name: "MultiLevel2", + meta: { + title: "菜单二级", + icon: "", + hidden: false, + alwaysShow: false, + params: null, + }, + children: [ + { + path: "multi-level3-1", + component: "demo/multi-level/children/children/level3-1", + name: "MultiLevel31", + meta: { + title: "菜单三级-1", + icon: "", + hidden: false, + keepAlive: true, + alwaysShow: false, + params: null, + }, + }, + { + path: "multi-level3-2", + component: "demo/multi-level/children/children/level3-2", + name: "MultiLevel32", + meta: { + title: "菜单三级-2", + icon: "", + hidden: false, + keepAlive: true, + alwaysShow: false, + params: null, + }, + }, + ], + }, + ], + }, + ], + }, + { + path: "/component", + component: "Layout", + name: "/component", + meta: { + title: "组件封装", + icon: "menu", + hidden: false, + alwaysShow: false, + params: null, + }, + children: [ + { + path: "curd", + component: "demo/curd/index", + name: "Curd", + meta: { + title: "增删改查", + icon: "", + hidden: false, + keepAlive: true, + alwaysShow: false, + params: null, + }, + }, + { + path: "table-select", + component: "demo/table-select/index", + name: "TableSelect", + meta: { + title: "列表选择器", + icon: "", + hidden: false, + keepAlive: true, + alwaysShow: false, + params: null, + }, + }, + { + path: "wang-editor", + component: "demo/wang-editor", + name: "WangEditor", + meta: { + title: "富文本编辑器", + icon: "", + hidden: false, + keepAlive: true, + alwaysShow: false, + params: null, + }, + }, + { + path: "upload", + component: "demo/upload", + name: "Upload", + meta: { + title: "图片上传", + icon: "", + hidden: false, + keepAlive: true, + alwaysShow: false, + params: null, + }, + }, + { + path: "icon-selector", + component: "demo/icon-selector", + name: "IconSelector", + meta: { + title: "图标选择器", + icon: "", + hidden: false, + keepAlive: true, + alwaysShow: false, + params: null, + }, + }, + { + path: "dict-demo", + component: "demo/dict", + name: "DictDemo", + meta: { + title: "字典组件", + icon: "", + hidden: false, + keepAlive: true, + alwaysShow: false, + params: null, + }, + }, + ], + }, + { + path: "/route-param", + component: "Layout", + name: "/routeParam", + meta: { + title: "路由参数", + icon: "el-icon-ElementPlus", + hidden: false, + alwaysShow: true, + params: null, + }, + children: [ + { + path: "route-param-type1", + component: "demo/route-param", + name: "RouteParamType1", + meta: { + title: "参数(type=1)", + icon: "el-icon-Star", + hidden: false, + keepAlive: true, + alwaysShow: false, + params: { + type: "1", + }, + }, + }, + { + path: "route-param-type2", + component: "demo/route-param", + name: "RouteParamType2", + meta: { + title: "参数(type=2)", + icon: "el-icon-StarFilled", + hidden: false, + keepAlive: true, + alwaysShow: false, + params: { + type: "2", + }, + }, + }, + ], + }, + { + path: "/function", + component: "Layout", + name: "/function", + meta: { + title: "功能演示", + icon: "menu", + hidden: false, + alwaysShow: false, + params: null, + }, + children: [ + { + path: "icon-demo", + component: "demo/icons", + name: "IconDemo", + meta: { + title: "Icons", + icon: "el-icon-Notification", + hidden: false, + keepAlive: true, + alwaysShow: false, + params: null, + }, + }, + { + path: "/function/websocket", + component: "demo/websocket", + name: "/function/websocket", + meta: { + title: "Websocket", + icon: "", + hidden: false, + keepAlive: true, + alwaysShow: false, + params: null, + }, + }, + { + path: "other/:id", + component: "demo/other", + name: "Other/:id", + meta: { + title: "敬请期待...", + icon: "", + hidden: false, + alwaysShow: false, + params: null, + }, + }, + ], + }, + ], + msg: "一切ok", + }, + }, + + { + url: "menus", + method: ["GET"], + body: { + code: "00000", + data: [ + { + id: 1, + parentId: 0, + name: "系统管理", + type: "CATALOG", + routeName: "", + routePath: "/system", + component: "Layout", + sort: 1, + visible: 1, + icon: "system", + redirect: "/system/user", + perm: null, + children: [ + { + id: 2, + parentId: 1, + name: "用户管理", + type: "MENU", + routeName: "User", + routePath: "user", + component: "system/user/index", + sort: 1, + visible: 1, + icon: "el-icon-User", + redirect: null, + perm: null, + children: [ + { + id: 105, + parentId: 2, + name: "用户查询", + type: "BUTTON", + routeName: null, + routePath: "", + component: null, + sort: 0, + visible: 1, + icon: "", + redirect: null, + perm: "sys:user:query", + children: [], + }, + { + id: 31, + parentId: 2, + name: "用户新增", + type: "BUTTON", + routeName: null, + routePath: "", + component: null, + sort: 1, + visible: 1, + icon: "", + redirect: "", + perm: "sys:user:add", + children: [], + }, + { + id: 32, + parentId: 2, + name: "用户编辑", + type: "BUTTON", + routeName: null, + routePath: "", + component: null, + sort: 2, + visible: 1, + icon: "", + redirect: "", + perm: "sys:user:edit", + children: [], + }, + { + id: 33, + parentId: 2, + name: "用户删除", + type: "BUTTON", + routeName: null, + routePath: "", + component: null, + sort: 3, + visible: 1, + icon: "", + redirect: "", + perm: "sys:user:delete", + children: [], + }, + { + id: 88, + parentId: 2, + name: "重置密码", + type: "BUTTON", + routeName: null, + routePath: "", + component: null, + sort: 4, + visible: 1, + icon: "", + redirect: null, + perm: "sys:user:password:reset", + children: [], + }, + { + id: 106, + parentId: 2, + name: "用户导入", + type: "BUTTON", + routeName: null, + routePath: "", + component: null, + sort: 5, + visible: 1, + icon: "", + redirect: null, + perm: "sys:user:import", + children: [], + }, + { + id: 107, + parentId: 2, + name: "用户导出", + type: "BUTTON", + routeName: null, + routePath: "", + component: null, + sort: 6, + visible: 1, + icon: "", + redirect: null, + perm: "sys:user:export", + children: [], + }, + ], + }, + { + id: 3, + parentId: 1, + name: "角色管理", + type: "MENU", + routeName: "Role", + routePath: "role", + component: "system/role/index", + sort: 2, + visible: 1, + icon: "role", + redirect: null, + perm: null, + children: [ + { + id: 70, + parentId: 3, + name: "角色新增", + type: "BUTTON", + routeName: null, + routePath: "", + component: null, + sort: 1, + visible: 1, + icon: "", + redirect: null, + perm: "sys:role:add", + children: [], + }, + { + id: 71, + parentId: 3, + name: "角色编辑", + type: "BUTTON", + routeName: null, + routePath: "", + component: null, + sort: 2, + visible: 1, + icon: "", + redirect: null, + perm: "sys:role:edit", + children: [], + }, + { + id: 72, + parentId: 3, + name: "角色删除", + type: "BUTTON", + routeName: null, + routePath: "", + component: null, + sort: 3, + visible: 1, + icon: "", + redirect: null, + perm: "sys:role:delete", + children: [], + }, + ], + }, + { + id: 4, + parentId: 1, + name: "菜单管理", + type: "MENU", + routeName: "Menu", + routePath: "menu", + component: "system/menu/index", + sort: 3, + visible: 1, + icon: "menu", + redirect: null, + perm: null, + children: [ + { + id: 73, + parentId: 4, + name: "菜单新增", + type: "BUTTON", + routeName: null, + routePath: "", + component: null, + sort: 1, + visible: 1, + icon: "", + redirect: null, + perm: "sys:menu:add", + children: [], + }, + { + id: 75, + parentId: 4, + name: "菜单删除", + type: "BUTTON", + routeName: null, + routePath: "", + component: null, + sort: 3, + visible: 1, + icon: "", + redirect: null, + perm: "sys:menu:delete", + children: [], + }, + { + id: 74, + parentId: 4, + name: "菜单编辑", + type: "BUTTON", + routeName: null, + routePath: "", + component: null, + sort: 3, + visible: 1, + icon: "", + redirect: null, + perm: "sys:menu:edit", + children: [], + }, + ], + }, + { + id: 5, + parentId: 1, + name: "部门管理", + type: "MENU", + routeName: "Dept", + routePath: "dept", + component: "system/dept/index", + sort: 4, + visible: 1, + icon: "tree", + redirect: null, + perm: null, + children: [ + { + id: 76, + parentId: 5, + name: "部门新增", + type: "BUTTON", + routeName: null, + routePath: "", + component: null, + sort: 1, + visible: 1, + icon: "", + redirect: null, + perm: "sys:dept:add", + children: [], + }, + { + id: 77, + parentId: 5, + name: "部门编辑", + type: "BUTTON", + routeName: null, + routePath: "", + component: null, + sort: 2, + visible: 1, + icon: "", + redirect: null, + perm: "sys:dept:edit", + children: [], + }, + { + id: 78, + parentId: 5, + name: "部门删除", + type: "BUTTON", + routeName: null, + routePath: "", + component: null, + sort: 3, + visible: 1, + icon: "", + redirect: null, + perm: "sys:dept:delete", + children: [], + }, + ], + }, + { + id: 6, + parentId: 1, + name: "字典管理", + type: "MENU", + routeName: "Dict", + routePath: "dict", + component: "system/dict/index", + sort: 5, + visible: 1, + icon: "dict", + redirect: null, + perm: null, + children: [ + { + id: 79, + parentId: 6, + name: "字典类型新增", + type: "BUTTON", + routeName: null, + routePath: "", + component: null, + sort: 1, + visible: 1, + icon: "", + redirect: null, + perm: "sys:dict_type:add", + children: [], + }, + { + id: 81, + parentId: 6, + name: "字典类型编辑", + type: "BUTTON", + routeName: null, + routePath: "", + component: null, + sort: 2, + visible: 1, + icon: "", + redirect: null, + perm: "sys:dict_type:edit", + children: [], + }, + { + id: 84, + parentId: 6, + name: "字典类型删除", + type: "BUTTON", + routeName: null, + routePath: "", + component: null, + sort: 3, + visible: 1, + icon: "", + redirect: null, + perm: "sys:dict_type:delete", + children: [], + }, + { + id: 85, + parentId: 6, + name: "字典数据新增", + type: "BUTTON", + routeName: null, + routePath: "", + component: null, + sort: 4, + visible: 1, + icon: "", + redirect: null, + perm: "sys:dict:add", + children: [], + }, + { + id: 86, + parentId: 6, + name: "字典数据编辑", + type: "BUTTON", + routeName: null, + routePath: "", + component: null, + sort: 5, + visible: 1, + icon: "", + redirect: null, + perm: "sys:dict:edit", + children: [], + }, + { + id: 87, + parentId: 6, + name: "字典数据删除", + type: "BUTTON", + routeName: null, + routePath: "", + component: null, + sort: 6, + visible: 1, + icon: "", + redirect: null, + perm: "sys:dict:delete", + children: [], + }, + ], + }, + ], + }, + { + id: 40, + parentId: 0, + name: "接口文档", + type: "CATALOG", + routeName: null, + routePath: "/api", + component: "Layout", + sort: 7, + visible: 1, + icon: "api", + redirect: "", + perm: null, + children: [ + { + id: 41, + parentId: 40, + name: "Apifox", + type: "MENU", + routeName: null, + routePath: "apifox", + component: "demo/api/apifox", + sort: 1, + visible: 1, + icon: "api", + redirect: "", + perm: null, + children: [], + }, + ], + }, + { + id: 26, + parentId: 0, + name: "平台文档", + type: "CATALOG", + routeName: null, + routePath: "/doc", + component: "Layout", + sort: 8, + visible: 1, + icon: "document", + redirect: "https://juejin.cn/post/7228990409909108793", + perm: null, + children: [ + { + id: 102, + parentId: 26, + name: "平台文档(内嵌)", + type: "EXTLINK", + routeName: null, + routePath: "internal-doc", + component: "demo/internal-doc", + sort: 1, + visible: 1, + icon: "document", + redirect: "", + perm: null, + children: [], + }, + { + id: 30, + parentId: 26, + name: "平台文档(外链)", + type: "EXTLINK", + routeName: null, + routePath: "https://juejin.cn/post/7228990409909108793", + component: "", + sort: 2, + visible: 1, + icon: "link", + redirect: "", + perm: null, + children: [], + }, + ], + }, + { + id: 20, + parentId: 0, + name: "多级菜单", + type: "CATALOG", + routeName: null, + routePath: "/multi-level", + component: "Layout", + sort: 9, + visible: 1, + icon: "cascader", + redirect: "", + perm: null, + children: [ + { + id: 21, + parentId: 20, + name: "菜单一级", + type: "MENU", + routeName: null, + routePath: "multi-level1", + component: "demo/multi-level/level1", + sort: 1, + visible: 1, + icon: "", + redirect: "", + perm: null, + children: [ + { + id: 22, + parentId: 21, + name: "菜单二级", + type: "MENU", + routeName: null, + routePath: "multi-level2", + component: "demo/multi-level/children/level2", + sort: 1, + visible: 1, + icon: "", + redirect: null, + perm: null, + children: [ + { + id: 23, + parentId: 22, + name: "菜单三级-1", + type: "MENU", + routeName: null, + routePath: "multi-level3-1", + component: "demo/multi-level/children/children/level3-1", + sort: 1, + visible: 1, + icon: "", + redirect: "", + perm: null, + children: [], + }, + { + id: 24, + parentId: 22, + name: "菜单三级-2", + type: "MENU", + routeName: null, + routePath: "multi-level3-2", + component: "demo/multi-level/children/children/level3-2", + sort: 2, + visible: 1, + icon: "", + redirect: "", + perm: null, + children: [], + }, + ], + }, + ], + }, + ], + }, + { + id: 36, + parentId: 0, + name: "组件封装", + type: "CATALOG", + routeName: null, + routePath: "/component", + component: "Layout", + sort: 10, + visible: 1, + icon: "menu", + redirect: "", + perm: null, + children: [ + { + id: 108, + parentId: 36, + name: "增删改查", + type: "MENU", + routeName: null, + routePath: "curd", + component: "demo/curd/index", + sort: 0, + visible: 1, + icon: "", + redirect: "", + perm: null, + children: [], + }, + { + id: 109, + parentId: 36, + name: "列表选择器", + type: "MENU", + routeName: null, + routePath: "table-select", + component: "demo/table-select/index", + sort: 1, + visible: 1, + icon: "", + redirect: "", + perm: null, + children: [], + }, + { + id: 37, + parentId: 36, + name: "富文本编辑器", + type: "MENU", + routeName: null, + routePath: "wang-editor", + component: "demo/wang-editor", + sort: 2, + visible: 1, + icon: "", + redirect: "", + perm: null, + children: [], + }, + { + id: 38, + parentId: 36, + name: "图片上传", + type: "MENU", + routeName: null, + routePath: "upload", + component: "demo/upload", + sort: 3, + visible: 1, + icon: "", + redirect: "", + perm: null, + children: [], + }, + { + id: 95, + parentId: 36, + name: "字典组件", + type: "MENU", + routeName: null, + routePath: "dict-demo", + component: "demo/dict", + sort: 4, + visible: 1, + icon: "", + redirect: "", + perm: null, + children: [], + }, + { + id: 39, + parentId: 36, + name: "图标选择器", + type: "MENU", + routeName: null, + routePath: "icon-selector", + component: "demo/icon-selector", + sort: 4, + visible: 1, + icon: "", + redirect: "", + perm: null, + children: [], + }, + ], + }, + { + id: 110, + parentId: 0, + name: "路由参数", + type: "CATALOG", + routeName: null, + routePath: "/route-param", + component: "Layout", + sort: 11, + visible: 1, + icon: "el-icon-ElementPlus", + redirect: null, + perm: null, + children: [ + { + id: 111, + parentId: 110, + name: "参数(type=1)", + type: "MENU", + routeName: null, + routePath: "route-param-type1", + component: "demo/route-param", + sort: 1, + visible: 1, + icon: "el-icon-Star", + redirect: null, + perm: null, + children: [], + }, + { + id: 112, + parentId: 110, + name: "参数(type=2)", + type: "MENU", + routeName: null, + routePath: "route-param-type2", + component: "demo/route-param", + sort: 2, + visible: 1, + icon: "el-icon-StarFilled", + redirect: null, + perm: null, + children: [], + }, + ], + }, + { + id: 89, + parentId: 0, + name: "功能演示", + type: "CATALOG", + routeName: null, + routePath: "/function", + component: "Layout", + sort: 12, + visible: 1, + icon: "menu", + redirect: "", + perm: null, + children: [ + { + id: 97, + parentId: 89, + name: "Icons", + type: "MENU", + routeName: null, + routePath: "icon-demo", + component: "demo/icons", + sort: 2, + visible: 1, + icon: "el-icon-Notification", + redirect: "", + perm: null, + children: [], + }, + { + id: 90, + parentId: 89, + name: "Websocket", + type: "MENU", + routeName: null, + routePath: "/function/websocket", + component: "demo/websocket", + sort: 3, + visible: 1, + icon: "", + redirect: "", + perm: null, + children: [], + }, + { + id: 91, + parentId: 89, + name: "敬请期待...", + type: "CATALOG", + routeName: null, + routePath: "other/:id", + component: "demo/other", + sort: 4, + visible: 1, + icon: "", + redirect: "", + perm: null, + children: [], + }, + ], + }, + ], + msg: "一切ok", + }, + }, + + { + url: "menus/options", + method: ["GET"], + body: { + code: "00000", + data: [ + { + value: 1, + label: "系统管理", + children: [ + { + value: 2, + label: "用户管理", + children: [ + { + value: 105, + label: "用户查询", + }, + { + value: 31, + label: "用户新增", + }, + { + value: 32, + label: "用户编辑", + }, + { + value: 33, + label: "用户删除", + }, + { + value: 88, + label: "重置密码", + }, + { + value: 106, + label: "用户导入", + }, + { + value: 107, + label: "用户导出", + }, + ], + }, + { + value: 3, + label: "角色管理", + children: [ + { + value: 70, + label: "角色新增", + }, + { + value: 71, + label: "角色编辑", + }, + { + value: 72, + label: "角色删除", + }, + ], + }, + { + value: 4, + label: "菜单管理", + children: [ + { + value: 73, + label: "菜单新增", + }, + { + value: 75, + label: "菜单删除", + }, + { + value: 74, + label: "菜单编辑", + }, + ], + }, + { + value: 5, + label: "部门管理", + children: [ + { + value: 76, + label: "部门新增", + }, + { + value: 77, + label: "部门编辑", + }, + { + value: 78, + label: "部门删除", + }, + ], + }, + { + value: 6, + label: "字典管理", + children: [ + { + value: 79, + label: "字典类型新增", + }, + { + value: 81, + label: "字典类型编辑", + }, + { + value: 84, + label: "字典类型删除", + }, + { + value: 85, + label: "字典数据新增", + }, + { + value: 86, + label: "字典数据编辑", + }, + { + value: 87, + label: "字典数据删除", + }, + ], + }, + ], + }, + { + value: 40, + label: "接口文档", + children: [ + { + value: 41, + label: "Apifox", + }, + ], + }, + { + value: 26, + label: "平台文档", + children: [ + { + value: 102, + label: "平台文档(内嵌)", + }, + { + value: 30, + label: "平台文档(外链)", + }, + ], + }, + { + value: 20, + label: "多级菜单", + children: [ + { + value: 21, + label: "菜单一级", + children: [ + { + value: 22, + label: "菜单二级", + children: [ + { + value: 23, + label: "菜单三级-1", + }, + { + value: 24, + label: "菜单三级-2", + }, + ], + }, + ], + }, + ], + }, + { + value: 36, + label: "组件封装", + children: [ + { + value: 108, + label: "增删改查", + }, + { + value: 109, + label: "列表选择器", + }, + { + value: 37, + label: "富文本编辑器", + }, + { + value: 38, + label: "图片上传", + }, + { + value: 95, + label: "字典组件", + }, + { + value: 39, + label: "图标选择器", + }, + ], + }, + { + value: 110, + label: "路由参数", + children: [ + { + value: 111, + label: "参数(type=1)", + }, + { + value: 112, + label: "参数(type=2)", + }, + ], + }, + { + value: 89, + label: "功能演示", + children: [ + { + value: 97, + label: "Icons", + }, + { + value: 90, + label: "Websocket", + }, + { + value: 91, + label: "敬请期待...", + }, + ], + }, + ], + msg: "一切ok", + }, + }, + + // 新增菜单 + { + url: "menus", + method: ["POST"], + body({ body }) { + return { + code: "00000", + data: null, + msg: "新增菜单" + body.name + "成功", + }; + }, + }, + + // 获取菜单表单数据 + { + url: "menus/:id/form", + method: ["GET"], + body: ({ params }) => { + return { + code: "00000", + data: menuMap[params.id], + msg: "一切ok", + }; + }, + }, + + // 修改菜单 + { + url: "menus/:id", + method: ["PUT"], + body({ body }) { + return { + code: "00000", + data: null, + msg: "修改菜单" + body.name + "成功", + }; + }, + }, + + // 删除菜单 + { + url: "menus/:id", + method: ["DELETE"], + body({ params }) { + return { + code: "00000", + data: null, + msg: "删除菜单" + params.id + "成功", + }; + }, + }, +]); + +// 菜单映射表数据 +const menuMap: Record = { + 1: { + id: 1, + parentId: 0, + name: "系统管理", + type: "CATALOG", + routeName: "", + routePath: "/system", + component: "Layout", + perm: null, + visible: 1, + sort: 1, + icon: "system", + redirect: "/system/user", + keepAlive: null, + alwaysShow: null, + params: null, + }, + 2: { + id: 2, + parentId: 1, + name: "用户管理", + type: "MENU", + routeName: "User", + routePath: "user", + component: "system/user/index", + perm: null, + visible: 1, + sort: 1, + icon: "user", + redirect: null, + keepAlive: 1, + alwaysShow: null, + }, + 3: { + id: 3, + parentId: 1, + name: "角色管理", + type: "MENU", + routeName: "Role", + routePath: "role", + component: "system/role/index", + perm: null, + visible: 1, + sort: 2, + icon: "role", + redirect: null, + keepAlive: 1, + alwaysShow: null, + }, + 4: { + id: 4, + parentId: 1, + name: "菜单管理", + type: "MENU", + routeName: "Menu", + routePath: "menu", + component: "system/menu/index", + perm: null, + visible: 1, + sort: 3, + icon: "menu", + redirect: null, + keepAlive: 1, + alwaysShow: null, + }, + 5: { + id: 5, + parentId: 1, + name: "部门管理", + type: "MENU", + routeName: "Dept", + routePath: "dept", + component: "system/dept/index", + perm: null, + visible: 1, + sort: 4, + icon: "tree", + redirect: null, + keepAlive: 1, + alwaysShow: null, + }, + 6: { + id: 6, + parentId: 1, + name: "字典管理", + type: "MENU", + routeName: "Dict", + routePath: "dict", + component: "system/dict/index", + perm: null, + visible: 1, + sort: 5, + icon: "dict", + redirect: null, + keepAlive: 1, + alwaysShow: null, + }, +}; diff --git a/resources/vue/mock/role.mock.ts b/resources/vue/mock/role.mock.ts new file mode 100644 index 0000000..cc87026 --- /dev/null +++ b/resources/vue/mock/role.mock.ts @@ -0,0 +1,335 @@ +import { defineMock } from "./base"; + +export default defineMock([ + { + url: "roles/options", + method: ["GET"], + body: { + code: "00000", + data: [ + { + value: 2, + label: "系统管理员", + }, + { + value: 4, + label: "系统管理员1", + }, + { + value: 5, + label: "系统管理员2", + }, + { + value: 6, + label: "系统管理员3", + }, + { + value: 7, + label: "系统管理员4", + }, + { + value: 8, + label: "系统管理员5", + }, + { + value: 9, + label: "系统管理员6", + }, + { + value: 10, + label: "系统管理员7", + }, + { + value: 11, + label: "系统管理员8", + }, + { + value: 12, + label: "系统管理员9", + }, + { + value: 3, + label: "访问游客", + }, + ], + msg: "一切ok", + }, + }, + + { + url: "roles/page", + method: ["GET"], + body: { + code: "00000", + data: { + list: [ + { + id: 2, + name: "系统管理员", + code: "ADMIN", + status: 1, + sort: 2, + createTime: "2021-03-25 12:39:54", + updateTime: null, + }, + { + id: 3, + name: "访问游客", + code: "GUEST", + status: 1, + sort: 3, + createTime: "2021-05-26 15:49:05", + updateTime: "2019-05-05 16:00:00", + }, + { + id: 4, + name: "系统管理员1", + code: "ADMIN1", + status: 1, + sort: 2, + createTime: "2021-03-25 12:39:54", + updateTime: null, + }, + { + id: 5, + name: "系统管理员2", + code: "ADMIN2", + status: 1, + sort: 2, + createTime: "2021-03-25 12:39:54", + updateTime: null, + }, + { + id: 6, + name: "系统管理员3", + code: "ADMIN3", + status: 1, + sort: 2, + createTime: "2021-03-25 12:39:54", + updateTime: null, + }, + { + id: 7, + name: "系统管理员4", + code: "ADMIN4", + status: 1, + sort: 2, + createTime: "2021-03-25 12:39:54", + updateTime: null, + }, + { + id: 8, + name: "系统管理员5", + code: "ADMIN5", + status: 1, + sort: 2, + createTime: "2021-03-25 12:39:54", + updateTime: null, + }, + { + id: 9, + name: "系统管理员6", + code: "ADMIN6", + status: 1, + sort: 2, + createTime: "2021-03-25 12:39:54", + updateTime: "2023-12-04 11:43:15", + }, + { + id: 10, + name: "系统管理员7", + code: "ADMIN7", + status: 1, + sort: 2, + createTime: "2021-03-25 12:39:54", + updateTime: null, + }, + { + id: 11, + name: "系统管理员8", + code: "ADMIN8", + status: 1, + sort: 2, + createTime: "2021-03-25 12:39:54", + updateTime: null, + }, + ], + total: 10, + }, + msg: "一切ok", + }, + }, + + // 新增角色 + { + url: "roles", + method: ["POST"], + body({ body }) { + return { + code: "00000", + data: null, + msg: "新增角色" + body.name + "成功", + }; + }, + }, + + // 获取角色表单数据 + { + url: "roles/:id/form", + method: ["GET"], + body: ({ params }) => { + return { + code: "00000", + data: roleMap[params.id], + msg: "一切ok", + }; + }, + }, + // 修改角色 + { + url: "roles/:id", + method: ["PUT"], + body({ body }) { + return { + code: "00000", + data: null, + msg: "修改角色" + body.name + "成功", + }; + }, + }, + + // 删除角色 + { + url: "roles/:id", + method: ["DELETE"], + body({ params }) { + return { + code: "00000", + data: null, + msg: "删除角色" + params.id + "成功", + }; + }, + }, + // 获取角色拥有的菜单ID + { + url: "roles/:id/menuIds", + method: ["GET"], + body: ({ params }) => { + return { + code: "00000", + data: [ + 1, 2, 31, 32, 33, 88, 3, 70, 71, 72, 4, 73, 75, 74, 5, 76, 77, 78, 6, + 79, 81, 84, 85, 86, 87, 40, 41, 26, 30, 20, 21, 22, 23, 24, 89, 90, + 91, 36, 37, 38, 39, 93, 94, 95, 97, 102, 89, 90, 91, 93, 94, 95, 97, + 102, 103, 104, + ], + msg: "一切ok", + }; + }, + }, + // 保存角色菜单 + { + url: "roles/:id/menus", + method: ["PUT"], + body: { + code: "00000", + data: null, + msg: "一切ok", + }, + }, +]); + +// 角色映射表数据 +const roleMap: Record = { + 2: { + id: 2, + name: "系统管理员", + code: "ADMIN", + status: 1, + sort: 2, + createTime: "2021-03-25 12:39:54", + updateTime: null, + }, + 3: { + id: 3, + name: "访问游客", + code: "GUEST", + status: 1, + sort: 3, + createTime: "2021-05-26 15:49:05", + updateTime: "2019-05-05 16:00:00", + }, + 4: { + id: 4, + name: "系统管理员1", + code: "ADMIN1", + status: 1, + sort: 2, + createTime: "2021-03-25 12:39:54", + updateTime: null, + }, + 5: { + id: 5, + name: "系统管理员2", + code: "ADMIN2", + status: 1, + sort: 2, + createTime: "2021-03-25 12:39:54", + updateTime: null, + }, + + 6: { + id: 6, + name: "系统管理员3", + code: "ADMIN3", + status: 1, + sort: 2, + createTime: "2021-03-25 12:39:54", + updateTime: null, + }, + 7: { + id: 7, + name: "系统管理员4", + code: "ADMIN4", + status: 1, + sort: 2, + createTime: "2021-03-25 12:39:54", + updateTime: null, + }, + 8: { + id: 8, + name: "系统管理员5", + code: "ADMIN5", + status: 1, + sort: 2, + createTime: "2021-03-25 12:39:54", + updateTime: null, + }, + 9: { + id: 9, + name: "系统管理员6", + code: "ADMIN6", + status: 1, + sort: 2, + createTime: "2021-03-25 12:39:54", + updateTime: "2023-12-04 11:43:15", + }, + 10: { + id: 10, + name: "系统管理员7", + code: "ADMIN7", + status: 1, + sort: 2, + createTime: "2021-03-25 12:39:54", + updateTime: null, + }, + 11: { + id: 11, + name: "系统管理员8", + code: "ADMIN8", + status: 1, + sort: 2, + createTime: "2021-03-25 12:39:54", + updateTime: null, + }, +}; diff --git a/resources/vue/mock/user.mock.ts b/resources/vue/mock/user.mock.ts new file mode 100644 index 0000000..bc9041e --- /dev/null +++ b/resources/vue/mock/user.mock.ts @@ -0,0 +1,189 @@ +import { defineMock } from "./base"; + +export default defineMock([ + { + url: "users/me", + method: ["GET"], + body: { + code: "00000", + data: { + userId: 2, + nickname: "系统管理员", + username: "admin", + avatar: + "https://oss.youlai.tech/youlai-boot/2023/05/16/811270ef31f548af9cffc026dfc3777b.gif", + roles: ["ROOT"], + perms: [ + "sys:menu:delete", + "sys:dept:edit", + "sys:dict_type:add", + "sys:dict:edit", + "sys:dict:delete", + "sys:dict_type:edit", + "sys:menu:add", + "sys:user:add", + "sys:role:edit", + "sys:dept:delete", + "sys:user:edit", + "sys:user:delete", + "sys:user:password:reset", + "sys:dept:add", + "sys:role:delete", + "sys:dict_type:delete", + "sys:menu:edit", + "sys:dict:add", + "sys:role:add", + "sys:user:query", + "sys:user:export", + ], + }, + msg: "一切ok", + }, + }, + + { + url: "users/page", + method: ["GET"], + body: { + code: "00000", + data: { + list: [ + { + id: 2, + username: "admin", + nickname: "系统管理员", + mobile: "17621210366", + gender: 1, + avatar: + "https://oss.youlai.tech/youlai-boot/2023/05/16/811270ef31f548af9cffc026dfc3777b.gif", + email: "", + status: 1, + deptId: 1, + roleIds: [2], + }, + { + id: 3, + username: "test", + nickname: "测试小用户", + mobile: "17621210366", + gender: 1, + avatar: + "https://oss.youlai.tech/youlai-boot/2023/05/16/811270ef31f548af9cffc026dfc3777b.gif", + email: "youlaitech@163.com", + status: 1, + deptId: 3, + roleIds: [3], + }, + ], + total: 2, + }, + msg: "一切ok", + }, + }, + + // 新增用户 + { + url: "users", + method: ["POST"], + body({ body }) { + return { + code: "00000", + data: null, + msg: "新增用户" + body.nickname + "成功", + }; + }, + }, + + // 获取用户表单数据 + { + url: "users/:userId/form", + method: ["GET"], + body: ({ params }) => { + return { + code: "00000", + data: userMap[params.userId], + msg: "一切ok", + }; + }, + }, + // 修改用户 + { + url: "users/:userId", + method: ["PUT"], + body({ body }) { + return { + code: "00000", + data: null, + msg: "修改用户" + body.nickname + "成功", + }; + }, + }, + + // 删除用户 + { + url: "users/:userId", + method: ["DELETE"], + body({ params }) { + return { + code: "00000", + data: null, + msg: "删除用户" + params.id + "成功", + }; + }, + }, + + // 重置密码 + { + url: "users/:userId/password", + method: ["PATCH"], + body({ query }) { + return { + code: "00000", + data: null, + msg: "重置密码成功,新密码为:" + query.password, + }; + }, + }, + + // 导出Excel + { + url: "users/_export", + method: ["GET"], + headers: { + "Content-Disposition": + "attachment; filename=%E7%94%A8%E6%88%B7%E5%88%97%E8%A1%A8.xlsx", + "Content-Type": + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + }, + }, +]); + +// 用户映射表数据 +const userMap: Record = { + 2: { + id: 2, + username: "admin", + nickname: "系统管理员", + mobile: "17621210366", + gender: 1, + avatar: + "https://oss.youlai.tech/youlai-boot/2023/05/16/811270ef31f548af9cffc026dfc3777b.gif", + email: "", + status: 1, + deptId: 1, + roleIds: [2], + }, + 3: { + id: 3, + username: "test", + nickname: "测试小用户", + mobile: "17621210366", + gender: 1, + avatar: + "https://oss.youlai.tech/youlai-boot/2023/05/16/811270ef31f548af9cffc026dfc3777b.gif", + email: "youlaitech@163.com", + status: 1, + deptId: 3, + roleIds: [3], + }, +}; diff --git a/resources/vue/npminstall-debug.log b/resources/vue/npminstall-debug.log new file mode 100644 index 0000000..586a7b0 --- /dev/null +++ b/resources/vue/npminstall-debug.log @@ -0,0 +1,197 @@ +{ + root: 'D:\\eve\\vue3-element-admin-master\\vue3-element-admin-master', + registry: 'https://registry.npmmirror.com', + pkgs: [], + production: false, + cacheStrict: false, + cacheDir: 'C:\\Users\\xwl\\.npminstall_tarball', + env: { + npm_config_registry: 'https://registry.npmmirror.com', + npm_config_argv: '{"remain":[],"cooked":["--fix-bug-versions","--china","--userconfig=C:\\\\Users\\\\xwl\\\\.cnpmrc","--disturl=https://cdn.npmmirror.com/binaries/node","--registry=https://registry.npmmirror.com"],"original":["--fix-bug-versions","--china","--userconfig=C:\\\\Users\\\\xwl\\\\.cnpmrc","--disturl=https://cdn.npmmirror.com/binaries/node","--registry=https://registry.npmmirror.com"]}', + npm_config_user_agent: 'npminstall/7.12.0 npm/? node/v20.14.0 win32 x64', + npm_config_cache: 'C:\\Users\\xwl\\.npminstall_tarball', + NODE: 'D:\\Program Files\\nodejs\\node.exe', + npm_node_execpath: 'D:\\Program Files\\nodejs\\node.exe', + npm_execpath: 'D:\\Users\\xwl\\AppData\\Roaming\\nvm\\v20.14.0\\node_modules\\cnpm\\node_modules\\npminstall\\bin\\install.js', + npm_config_userconfig: 'C:\\Users\\xwl\\.cnpmrc', + npm_config_disturl: 'https://cdn.npmmirror.com/binaries/node', + npm_config_r: 'https://registry.npmmirror.com', + COREPACK_NPM_REGISTRY: 'https://registry.npmmirror.com', + EDGEDRIVER_CDNURL: 'https://npmmirror.com/mirrors/edgedriver', + NODEJS_ORG_MIRROR: 'https://cdn.npmmirror.com/binaries/node', + NVM_NODEJS_ORG_MIRROR: 'https://cdn.npmmirror.com/binaries/node', + PHANTOMJS_CDNURL: 'https://cdn.npmmirror.com/binaries/phantomjs', + CHROMEDRIVER_CDNURL: 'https://cdn.npmmirror.com/binaries/chromedriver', + OPERADRIVER_CDNURL: 'https://cdn.npmmirror.com/binaries/operadriver', + CYPRESS_DOWNLOAD_PATH_TEMPLATE: 'https://cdn.npmmirror.com/binaries/cypress/${version}/${platform}-${arch}/cypress.zip', + ELECTRON_MIRROR: 'https://cdn.npmmirror.com/binaries/electron/', + ELECTRON_BUILDER_BINARIES_MIRROR: 'https://cdn.npmmirror.com/binaries/electron-builder-binaries/', + SASS_BINARY_SITE: 'https://cdn.npmmirror.com/binaries/node-sass', + SWC_BINARY_SITE: 'https://cdn.npmmirror.com/binaries/node-swc', + NWJS_URLBASE: 'https://cdn.npmmirror.com/binaries/nwjs/v', + PUPPETEER_DOWNLOAD_HOST: 'https://cdn.npmmirror.com/binaries/chrome-for-testing', + PUPPETEER_DOWNLOAD_BASE_URL: 'https://cdn.npmmirror.com/binaries/chrome-for-testing', + PLAYWRIGHT_DOWNLOAD_HOST: 'https://cdn.npmmirror.com/binaries/playwright', + SENTRYCLI_CDNURL: 'https://cdn.npmmirror.com/binaries/sentry-cli', + SAUCECTL_INSTALL_BINARY_MIRROR: 'https://cdn.npmmirror.com/binaries/saucectl', + RE2_DOWNLOAD_MIRROR: 'https://cdn.npmmirror.com/binaries/node-re2', + RE2_DOWNLOAD_SKIP_PATH: 'true', + PRISMA_ENGINES_MIRROR: 'https://cdn.npmmirror.com/binaries/prisma', + npm_config_better_sqlite3_binary_host: 'https://cdn.npmmirror.com/binaries/better-sqlite3', + npm_config_keytar_binary_host: 'https://cdn.npmmirror.com/binaries/keytar', + npm_config_sharp_binary_host: 'https://cdn.npmmirror.com/binaries/sharp', + npm_config_sharp_libvips_binary_host: 'https://cdn.npmmirror.com/binaries/sharp-libvips', + npm_config_robotjs_binary_host: 'https://cdn.npmmirror.com/binaries/robotjs', + npm_rootpath: 'D:\\eve\\vue3-element-admin-master\\vue3-element-admin-master', + INIT_CWD: 'D:\\eve\\vue3-element-admin-master\\vue3-element-admin-master' + }, + binaryMirrors: { + ENVS: { + COREPACK_NPM_REGISTRY: 'https://registry.npmmirror.com', + EDGEDRIVER_CDNURL: 'https://npmmirror.com/mirrors/edgedriver', + NODEJS_ORG_MIRROR: 'https://cdn.npmmirror.com/binaries/node', + NVM_NODEJS_ORG_MIRROR: 'https://cdn.npmmirror.com/binaries/node', + PHANTOMJS_CDNURL: 'https://cdn.npmmirror.com/binaries/phantomjs', + CHROMEDRIVER_CDNURL: 'https://cdn.npmmirror.com/binaries/chromedriver', + OPERADRIVER_CDNURL: 'https://cdn.npmmirror.com/binaries/operadriver', + CYPRESS_DOWNLOAD_PATH_TEMPLATE: 'https://cdn.npmmirror.com/binaries/cypress/${version}/${platform}-${arch}/cypress.zip', + ELECTRON_MIRROR: 'https://cdn.npmmirror.com/binaries/electron/', + ELECTRON_BUILDER_BINARIES_MIRROR: 'https://cdn.npmmirror.com/binaries/electron-builder-binaries/', + SASS_BINARY_SITE: 'https://cdn.npmmirror.com/binaries/node-sass', + SWC_BINARY_SITE: 'https://cdn.npmmirror.com/binaries/node-swc', + NWJS_URLBASE: 'https://cdn.npmmirror.com/binaries/nwjs/v', + PUPPETEER_DOWNLOAD_HOST: 'https://cdn.npmmirror.com/binaries/chrome-for-testing', + PUPPETEER_DOWNLOAD_BASE_URL: 'https://cdn.npmmirror.com/binaries/chrome-for-testing', + PLAYWRIGHT_DOWNLOAD_HOST: 'https://cdn.npmmirror.com/binaries/playwright', + SENTRYCLI_CDNURL: 'https://cdn.npmmirror.com/binaries/sentry-cli', + SAUCECTL_INSTALL_BINARY_MIRROR: 'https://cdn.npmmirror.com/binaries/saucectl', + RE2_DOWNLOAD_MIRROR: 'https://cdn.npmmirror.com/binaries/node-re2', + RE2_DOWNLOAD_SKIP_PATH: 'true', + PRISMA_ENGINES_MIRROR: 'https://cdn.npmmirror.com/binaries/prisma', + npm_config_better_sqlite3_binary_host: 'https://cdn.npmmirror.com/binaries/better-sqlite3', + npm_config_keytar_binary_host: 'https://cdn.npmmirror.com/binaries/keytar', + npm_config_sharp_binary_host: 'https://cdn.npmmirror.com/binaries/sharp', + npm_config_sharp_libvips_binary_host: 'https://cdn.npmmirror.com/binaries/sharp-libvips', + npm_config_robotjs_binary_host: 'https://cdn.npmmirror.com/binaries/robotjs' + }, + '@ali/s2': { host: 'https://cdn.npmmirror.com/binaries/looksgood-s2' }, + sharp: { replaceHostFiles: [Array], replaceHostMap: [Object] }, + '@tensorflow/tfjs-node': { + replaceHostFiles: [Array], + replaceHostRegExpMap: [Object], + replaceHostMap: [Object] + }, + cypress: { + host: 'https://cdn.npmmirror.com/binaries/cypress', + newPlatforms: [Object] + }, + 'utf-8-validate': { + host: 'https://cdn.npmmirror.com/binaries/utf-8-validate/v{version}' + }, + xprofiler: { + remote_path: './xprofiler/v{version}/', + host: 'https://cdn.npmmirror.com/binaries' + }, + leveldown: { host: 'https://cdn.npmmirror.com/binaries/leveldown/v{version}' }, + couchbase: { host: 'https://cdn.npmmirror.com/binaries/couchbase/v{version}' }, + gl: { host: 'https://cdn.npmmirror.com/binaries/gl/v{version}' }, + sqlite3: { + host: 'https://cdn.npmmirror.com/binaries/sqlite3', + remote_path: 'v{version}' + }, + '@journeyapps/sqlcipher': { host: 'https://cdn.npmmirror.com/binaries' }, + grpc: { + host: 'https://cdn.npmmirror.com/binaries', + remote_path: '{name}/v{version}' + }, + 'grpc-tools': { host: 'https://cdn.npmmirror.com/binaries' }, + wrtc: { + host: 'https://cdn.npmmirror.com/binaries', + remote_path: '{name}/v{version}' + }, + fsevents: { host: 'https://cdn.npmmirror.com/binaries/fsevents' }, + nodejieba: { host: 'https://cdn.npmmirror.com/binaries/nodejieba' }, + canvas: { host: 'https://cdn.npmmirror.com/binaries/canvas' }, + 'skia-canvas': { host: 'https://cdn.npmmirror.com/binaries/skia-canvas' }, + 'flow-bin': { + replaceHost: 'https://github.com/facebook/flow/releases/download/v', + host: 'https://cdn.npmmirror.com/binaries/flow/v' + }, + 'jpegtran-bin': { + replaceHost: [Array], + host: 'https://cdn.npmmirror.com/binaries/jpegtran-bin' + }, + 'cwebp-bin': { + replaceHost: [Array], + host: 'https://cdn.npmmirror.com/binaries/cwebp-bin' + }, + 'zopflipng-bin': { + replaceHost: [Array], + host: 'https://cdn.npmmirror.com/binaries/zopflipng-bin' + }, + 'optipng-bin': { + replaceHost: [Array], + host: 'https://cdn.npmmirror.com/binaries/optipng-bin' + }, + mozjpeg: { + replaceHost: [Array], + host: 'https://cdn.npmmirror.com/binaries/mozjpeg-bin' + }, + gifsicle: { + replaceHost: [Array], + host: 'https://cdn.npmmirror.com/binaries/gifsicle-bin' + }, + 'pngquant-bin': { + replaceHost: [Array], + host: 'https://cdn.npmmirror.com/binaries/pngquant-bin', + replaceHostMap: [Object] + }, + 'pngcrush-bin': { + replaceHost: [Array], + host: 'https://cdn.npmmirror.com/binaries/pngcrush-bin' + }, + 'jpeg-recompress-bin': { + replaceHost: [Array], + host: 'https://cdn.npmmirror.com/binaries/jpeg-recompress-bin' + }, + 'advpng-bin': { + replaceHost: [Array], + host: 'https://cdn.npmmirror.com/binaries/advpng-bin' + }, + 'pngout-bin': { + replaceHost: [Array], + host: 'https://cdn.npmmirror.com/binaries/pngout-bin' + }, + 'jpegoptim-bin': { + replaceHost: [Array], + host: 'https://cdn.npmmirror.com/binaries/jpegoptim-bin' + }, + argon2: { host: 'https://cdn.npmmirror.com/binaries/argon2' }, + 'ali-zeromq': { host: 'https://cdn.npmmirror.com/binaries/ali-zeromq' }, + 'ali-usb_ctl': { host: 'https://cdn.npmmirror.com/binaries/ali-usb_ctl' }, + 'gdal-async': { host: 'https://cdn.npmmirror.com/binaries/node-gdal-async' }, + 'libpg-query': { host: 'https://cdn.npmmirror.com/binaries' } + }, + forbiddenLicenses: null, + flatten: false, + proxy: undefined, + prune: false, + disableFallbackStore: false, + workspacesMap: Map(0) {}, + enableWorkspace: false, + workspaceRoot: 'D:\\eve\\vue3-element-admin-master\\vue3-element-admin-master', + isWorkspaceRoot: true, + isWorkspacePackage: false, + offline: false, + strictSSL: true, + ignoreScripts: false, + foregroundScripts: false, + ignoreOptionalDependencies: false, + detail: false, + forceLinkLatest: false, + trace: false, + engineStrict: false, + registryOnly: false, + client: false, + autoFixVersion: [Function: autoFixVersion] +} \ No newline at end of file diff --git a/resources/vue/package.json b/resources/vue/package.json new file mode 100644 index 0000000..970593c --- /dev/null +++ b/resources/vue/package.json @@ -0,0 +1,139 @@ +{ + "name": "ElasticView", + "version": "0.0.1", + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build --mode production --emptyOutDir", + "preview": "vite preview", + "build-only": "vite build", + "type-check": "vue-tsc --noEmit", + "lint:eslint": "eslint --fix --ext .ts,.js,.vue ./src ", + "lint:prettier": "prettier --write \"**/*.{js,cjs,ts,json,tsx,css,less,scss,vue,html,md}\"", + "lint:stylelint": "stylelint \"**/*.{css,scss,vue}\" --fix", + "lint:lint-staged": "lint-staged", + "preinstall": "npx only-allow pnpm", + "prepare": "husky", + "commit": "git-cz" + }, + "config": { + "commitizen": { + "path": "node_modules/cz-git" + } + }, + "lint-staged": { + "*.{js,ts}": [ + "eslint --fix", + "prettier --write" + ], + "*.{cjs,json}": [ + "prettier --write" + ], + "*.{vue,html}": [ + "eslint --fix", + "prettier --write", + "stylelint --fix" + ], + "*.{scss,css}": [ + "stylelint --fix", + "prettier --write" + ], + "*.md": [ + "prettier --write" + ] + }, + "dependencies": { + "@element-plus/icons-vue": "^2.3.1", + "@vavt/cm-extension": "^1.5.0", + "@vueuse/core": "^10.11.0", + "@wangeditor/editor": "^5.1.23", + "@wangeditor/editor-for-vue": "5.1.10", + "animate.css": "^4.1.1", + "axios": "^1.7.2", + "color": "^4.2.3", + "dayjs": "^1.11.12", + "echarts": "^5.5.1", + "element-plus": "^2.7.6", + "exceljs": "^4.4.0", + "lodash-es": "^4.17.21", + "md-editor-v3": "^4.20.1", + "monaco-editor": "^0.50.0", + "net": "^1.0.2", + "nprogress": "^0.2.0", + "path-browserify": "^1.0.1", + "path-to-regexp": "^6.2.2", + "pinia": "^2.1.7", + "qiankun": "^2.10.16", + "sockjs-client": "1.6.1", + "sortablejs": "^1.15.2", + "sql-formatter": "^15.4.0", + "stompjs": "^2.3.3", + "vite-plugin-dynamic-base": "^1.1.0", + "vite-plugin-html": "^3.2.2", + "vue": "^3.4.31", + "vue-i18n": "9.9.1", + "vue-router": "^4.4.0", + "vue3-json-viewer": "^2.2.2", + "vue3-markdown-it": "^1.0.10" + }, + "devDependencies": { + "@commitlint/cli": "^18.6.1", + "@commitlint/config-conventional": "^18.6.3", + "@iconify-json/ep": "^1.1.15", + "@types/color": "^3.0.6", + "@types/lodash": "^4.17.6", + "@types/node": "^20.14.10", + "@types/nprogress": "^0.2.3", + "@types/path-browserify": "^1.0.2", + "@types/sockjs-client": "^1.5.4", + "@types/sortablejs": "^1.15.8", + "@types/stompjs": "^2.3.9", + "@typescript-eslint/eslint-plugin": "^7.15.0", + "@typescript-eslint/parser": "^7.15.0", + "@vitejs/plugin-vue": "^5.0.5", + "@vitejs/plugin-vue-jsx": "^3.1.0", + "autoprefixer": "^10.4.19", + "commitizen": "^4.3.0", + "cz-git": "^1.9.3", + "eslint": "^8.57.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-vue": "^9.27.0", + "fast-glob": "^3.3.2", + "husky": "^9.0.11", + "lint-staged": "^15.2.7", + "postcss": "^8.4.39", + "postcss-html": "^1.7.0", + "postcss-scss": "^4.0.9", + "prettier": "^3.3.2", + "sass": "^1.77.6", + "stylelint": "^16.6.1", + "stylelint-config-html": "^1.1.0", + "stylelint-config-recess-order": "^4.6.0", + "stylelint-config-recommended-scss": "^14.0.0", + "stylelint-config-recommended-vue": "^1.5.0", + "stylelint-config-standard": "^36.0.1", + "terser": "^5.31.1", + "typescript": "^5.5.3", + "unocss": "^0.58.9", + "unplugin-auto-import": "^0.17.6", + "unplugin-icons": "^0.18.5", + "unplugin-vue-components": "^0.26.0", + "vite": "^5.3.3", + "vite-plugin-mock-dev-server": "^1.5.1", + "vite-plugin-monaco-editor": "^1.1.0", + "vite-plugin-svg-icons": "^2.0.1", + "vite-plugin-vue-devtools": "^7.3.5", + "vue-tsc": "^2.0.26" + }, + "repository": "https://gitee.com/youlaiorg/vue3-element-admin.git", + "author": "有来开源组织", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "packageManager": "pnpm@9.1.3+sha512.7c2ea089e1a6af306409c4fc8c4f0897bdac32b772016196c469d9428f1fe2d5a21daf8ad6512762654ac645b5d9136bb210ec9a00afa8dbc4677843ba362ecd", + "__npminstall_done": false +} diff --git a/resources/vue/public/favicon.ico b/resources/vue/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..496e09050f2d3bcf31c82100b27d717602d2b41f GIT binary patch literal 14204 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 literal 0 HcmV?d00001 diff --git a/resources/vue/src/App.vue b/resources/vue/src/App.vue new file mode 100644 index 0000000..a2739f6 --- /dev/null +++ b/resources/vue/src/App.vue @@ -0,0 +1,45 @@ + + + diff --git a/resources/vue/src/api/api-rbac.ts b/resources/vue/src/api/api-rbac.ts new file mode 100644 index 0000000..4548f9a --- /dev/null +++ b/resources/vue/src/api/api-rbac.ts @@ -0,0 +1,26 @@ +import request from '@/utils/request' + +var api = '/api/gm_user/' + +export function UrlConfig(data) { + return request({ + url: api + 'UrlConfig', + method: 'post', + data + }) +} + +export function SaveRbac(data) { + return request({ + url: api + 'SaveRbac', + method: 'post', + data + }) +} + +export function RbacList() { + return request({ + url: api + 'RbacList', + method: 'post' + }) +} diff --git a/resources/vue/src/api/auth.ts b/resources/vue/src/api/auth.ts new file mode 100644 index 0000000..3667731 --- /dev/null +++ b/resources/vue/src/api/auth.ts @@ -0,0 +1,31 @@ +import request from "@/utils/request"; + +class AuthAPI { + /** 登录 接口*/ + static login(data: LoginData) { + return request({ + url: `/api/gm_user/login`, + method: "post", + data: data, + }); + } + + /** 注销 接口*/ + static logout() { + return request({ + url: `/api/gm_user/logout`, + method: "delete", + }); + } + +} + +export default AuthAPI; + +/** 登录请求参数 */ +export interface LoginData { + /** 用户名 */ + username: string; + /** 密码 */ + password: string; +} diff --git a/resources/vue/src/api/es-link.ts b/resources/vue/src/api/es-link.ts new file mode 100644 index 0000000..c2b4616 --- /dev/null +++ b/resources/vue/src/api/es-link.ts @@ -0,0 +1,112 @@ +import request from '@/utils/request' + +const api = '/api/es_link/' + +export function DeleteAction(data) { + return request({ + url: api + 'DeleteAction', + method: 'post', + data + }) +} + +export function ListAction(data) { + return request({ + url: api + 'ListAction', + method: 'post', + data + }) +} + +export function OptAction(data) { + return request({ + url: api + 'OptAction', + method: 'post', + data + }) +} + +export function UpdateAction(data) { + return request({ + url: api + 'UpdateAction', + method: 'post', + data + }) +} + +export function InsertAction(data) { + return request({ + url: api + `InsertAction`, + method: 'post', + data + }) +} + +export function InsertEsCfgAction(data) { + return request({ + url: api + 'InsertEsCfgAction', + method: 'post', + data + }) +} + +export function UpdateEsCfgAction(data) { + return request({ + url: api + 'UpdateEsCfgAction', + method: 'post', + data + }) +} + +export function DeleteEsCfgAction(data) { + return request({ + url: api + 'DeleteEsCfgAction', + method: 'post', + data + }) +} +export function TreeAction() { + return request({ + url: api + 'TreeAction', + method: 'post' + }) +} +export function GetEsCfgByRoleId(data) { + return request({ + url: api + 'GetEsCfgByRoleId', + method: 'post', + data + }) +} + +export function SetEsCfgByRoleID(data) { + return request({ + url: api + 'SetEsCfgByRoleID', + method: 'post', + data + }) +} + +export function GetEsCfgList(data) { + return request({ + url: api + 'GetEsCfgList', + method: 'post', + data + }) +} + +export function GetEsCfgOpt(data) { + return request({ + url: api + 'GetEsCfgOpt', + method: 'post', + data + }) +} + +export function DeleteEsCfgRelation(data) { + return request({ + url: api + 'DeleteEsCfgRelation', + method: 'post', + data + }) +} diff --git a/resources/vue/src/api/es.ts b/resources/vue/src/api/es.ts new file mode 100644 index 0000000..4ce380c --- /dev/null +++ b/resources/vue/src/api/es.ts @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +const api = '/api/es/' + +export function PingAction(data) { + return request({ + url: api + `PingAction`, + method: 'post', + data + }) +} + +export function IndexsCountAction(data) { + return request({ + url: api + `IndexsCountAction`, + method: 'post', + data + }) +} + +export function CatAction(data) { + return request({ + url: api + `CatAction`, + method: 'post', + data + }) +} diff --git a/resources/vue/src/api/i18n.ts b/resources/vue/src/api/i18n.ts new file mode 100644 index 0000000..4256e7b --- /dev/null +++ b/resources/vue/src/api/i18n.ts @@ -0,0 +1,10 @@ +import request from '@/utils/request' + + +export function GetI18nCfg(data) { + return request({ + url: '/api/GetI18nCfg', + method: 'post', + data + }) +} diff --git a/resources/vue/src/api/menu.ts b/resources/vue/src/api/menu.ts new file mode 100644 index 0000000..b6c473e --- /dev/null +++ b/resources/vue/src/api/menu.ts @@ -0,0 +1,130 @@ +import request from "@/utils/request"; +// 菜单基础URL +const MENU_BASE_URL = "/api/v1/menus"; + +class MenuAPI { + /** + * 获取当前用户的路由列表 + *

+ * 无需传入角色,后端解析token获取角色自行判断是否拥有路由的权限 + * + * @returns 路由列表 + */ + static getRoutes(data) { + return request({ + url: `/api/gm_user/info`, + method: "post", + data:data + }); + } + +} + +export default MenuAPI; + +import { MenuTypeEnum } from "@/enums/MenuTypeEnum"; + +/** 菜单查询参数 */ +export interface MenuQuery { + /** 搜索关键字 */ + keywords?: string; +} + +/** 菜单视图对象 */ +export interface MenuVO { + /** 子菜单 */ + children?: MenuVO[]; + /** 组件路径 */ + component?: string; + /** ICON */ + icon?: string; + /** 菜单ID */ + id?: number; + /** 菜单名称 */ + name?: string; + /** 父菜单ID */ + parentId?: number; + /** 按钮权限标识 */ + perm?: string; + /** 跳转路径 */ + redirect?: string; + /** 路由名称 */ + routeName?: string; + /** 路由相对路径 */ + routePath?: string; + /** 菜单排序(数字越小排名越靠前) */ + sort?: number; + /** 菜单 */ + type?: MenuTypeEnum; + /** 菜单是否可见(1:显示;0:隐藏) */ + visible?: number; +} + +/** 菜单表单对象 */ +export interface MenuForm { + /** 菜单ID */ + id?: string; + /** 父菜单ID */ + parentId?: number; + /** 菜单名称 */ + name?: string; + /** 菜单是否可见(1-是 0-否) */ + visible: number; + /** ICON */ + icon?: string; + /** 排序 */ + sort?: number; + /** 路由名称 */ + routeName?: string; + /** 路由路径 */ + routePath?: string; + /** 组件路径 */ + component?: string; + /** 跳转路由路径 */ + redirect?: string; + /** 菜单 */ + type?: MenuTypeEnum; + /** 权限标识 */ + perm?: string; + /** 【菜单】是否开启页面缓存 */ + keepAlive?: number; + /** 【目录】只有一个子路由是否始终显示 */ + alwaysShow?: number; + /** 参数 */ + params?: KeyValue[]; +} + +interface KeyValue { + key: string; + value: string; +} + +/** RouteVO,路由对象 */ +export interface RouteVO { + /** 子路由列表 */ + children: RouteVO[]; + /** 组件路径 */ + component?: string; + /** 路由属性 */ + meta?: Meta; + /** 路由名称 */ + name?: string; + /** 路由路径 */ + path?: string; + /** 跳转链接 */ + redirect?: string; +} + +/** Meta,路由属性 */ +export interface Meta { + /** 【目录】只有一个子路由是否始终显示 */ + alwaysShow?: boolean; + /** 是否隐藏(true-是 false-否) */ + hidden?: boolean; + /** ICON */ + icon?: string; + /** 【菜单】是否开启页面缓存 */ + keepAlive?: boolean; + /** 路由title */ + title?: string; +} diff --git a/resources/vue/src/api/operate.ts b/resources/vue/src/api/operate.ts new file mode 100644 index 0000000..5d04afb --- /dev/null +++ b/resources/vue/src/api/operate.ts @@ -0,0 +1,9 @@ +import request from '@/utils/request' + +export function getList(data) { + return request({ + url: '/api/operater_log/ListAction', + method: 'post', + data + }) +} diff --git a/resources/vue/src/api/plugin.js b/resources/vue/src/api/plugin.js new file mode 100644 index 0000000..f66d7b0 --- /dev/null +++ b/resources/vue/src/api/plugin.js @@ -0,0 +1,31 @@ +import request from "@/utils/request"; + +export function CallPluginApi( + pluginId,path,method = 'post', + data = {}, + transformResponse, + responseType = '') { + + if (path[0] !== '/'){ + path = `/${path}` + } + + method = method.toLowerCase() + + let cfg = { + url: `/api/call_plugin/${pluginId}${path}`, + method: method, + responseType:responseType, + } + + if (method == "post"){ + cfg.data = data + }else{ + cfg.params = data + } + if (transformResponse){ + cfg.transformResponse = transformResponse + } + + return request(cfg) +} diff --git a/resources/vue/src/api/plugins.ts b/resources/vue/src/api/plugins.ts new file mode 100644 index 0000000..3f6cccc --- /dev/null +++ b/resources/vue/src/api/plugins.ts @@ -0,0 +1,70 @@ +import request from '@/utils/request' + +var api = '/api/plugins/' + +export function PluginMarket(data) { + return request({ + url: api + 'PluginMarket', + method: 'post', + data + }) +} + + +export function GetPluginInfo(data) { + return request({ + url: api + 'GetPluginInfo', + method: 'post', + data + }) +} + + + +export function InstallPlugin(data) { + return request({ + url: api + 'InstallPlugin', + method: 'post', + data + }) +} + +export function StarPlugin(data) { + return request({ + url: api + 'StarPlugin', + method: 'post', + data + }) +} + +export function ImportEvKey(data) { + return request({ + url: api + 'ImportEvKey', + method: 'post', + data + }) +} + +export function UnInstallPlugin(data) { + return request({ + url: api + 'UnInstallPlugin', + method: 'post', + data + }) +} + +export function GetWxArticleList(data) { + return request({ + url: api + 'GetWxArticleList', + method: 'post', + data + }) +} + +export function GetLocalPluginList(data) { + return request({ + url: api + 'GetLocalPluginList', + method: 'post', + data + }) +} diff --git a/resources/vue/src/api/role.ts b/resources/vue/src/api/role.ts new file mode 100644 index 0000000..92702ef --- /dev/null +++ b/resources/vue/src/api/role.ts @@ -0,0 +1,33 @@ +import request from "@/utils/request"; + +export function getRoles() { + return request({ + url: '/api/gm_user/roles', + method: 'post' + }) +} + +export function addRole(data) { + return request({ + url: '/api/gm_user/role/add', + method: 'post', + data + }) +} + +export function updateRole(data) { + return request({ + url: `/api/gm_user/role/update`, + method: 'post', + data + }) +} + +export function deleteRole(data) { + + return request({ + url: `/api/gm_user/role/delete`, + method: 'post', + data + }) +} diff --git a/resources/vue/src/api/user.ts b/resources/vue/src/api/user.ts new file mode 100644 index 0000000..bc02811 --- /dev/null +++ b/resources/vue/src/api/user.ts @@ -0,0 +1,164 @@ +import request from "@/utils/request"; + + +class UserAPI { + + /** + * 获取当前登录用户信息 + * + * @returns 登录用户昵称、头像信息,包括角色和权限 + */ + static getInfo() { + return request({ + url: `/api/gm_user/infoV2`, + method: "post", + }); + } + +} + +export default UserAPI; + +/** 登录用户信息 */ +export interface UserInfo { + /** 用户ID */ + userId?: number; + + /** 用户名 */ + username?: string; + + /** 昵称 */ + nickname?: string; + + /** 头像URL */ + avatar?: string; + +} + + +export function login(data) { + return request({ + url: '/api/gm_user/login', + method: 'post', + data + }) +} + +export function getInfo() { + return request({ + url: '/api/gm_user/info', + method: 'post', + }) +} + +export function GetRoutesConfig(data) { + return request({ + url: '/api/gm_user/GetRoutesConfig', + method: 'post', + data + }) +} + +export function logout() { + return request({ + url: '/api/gm_user/logout', + method: 'post' + }) +} + +export function userList() { + return request({ + url: '/api/gm_user/userlist', + method: 'post' + }) +} + +export function roleOption() { + return request({ + url: '/api/gm_user/roleOption', + method: 'post' + }) +} + +export function getUserById(data) { + return request({ + url: '/api/gm_user/getUserById', + method: 'post', + data + }) +} + +export function UpdateUser(data) { + return request({ + url: '/api/gm_user/UpdateUser', + method: 'post', + data + }) +} + +export function InsertUser(data) { + return request({ + url: '/api/gm_user/InsertUser', + method: 'post', + data + }) +} + +export function DelUser(data) { + return request({ + url: '/api/gm_user/DelUser', + method: 'post', + data + }) +} + +export function ModifyPwdByUserId(data) { + return request({ + url: '/api/gm_user/ModifyPwdByUserId', + method: 'post', + data + }) +} + +export function GetOAuthList(data){ + return request({ + url: '/api/GetOAuthList', + method: 'post', + data + }) +} + +export function GetOAuthConfigs(data){ + return request({ + url: '/api/gm_user/GetOAuthConfigs', + method: 'post', + data + }) +} + +export function SaveOAuthConfigs(data){ + return request({ + url: '/api/gm_user/SaveOAuthConfigs', + method: 'post', + data + }) +} + +export function SealUserAction(data){ + return request({ + url: '/api/gm_user/SealUserAction', + method: 'post', + data + }) +} + +export function UnSealUserAction(data){ + return request({ + url: '/api/gm_user/UnSealUserAction', + method: 'post', + data + }) +} + + + diff --git a/resources/vue/src/assets/icons/api.svg b/resources/vue/src/assets/icons/api.svg new file mode 100644 index 0000000..0181bdd --- /dev/null +++ b/resources/vue/src/assets/icons/api.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/backtop.svg b/resources/vue/src/assets/icons/backtop.svg new file mode 100644 index 0000000..f8e6aa0 --- /dev/null +++ b/resources/vue/src/assets/icons/backtop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/captcha.svg b/resources/vue/src/assets/icons/captcha.svg new file mode 100644 index 0000000..8b1da30 --- /dev/null +++ b/resources/vue/src/assets/icons/captcha.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/cascader.svg b/resources/vue/src/assets/icons/cascader.svg new file mode 100644 index 0000000..57209bf --- /dev/null +++ b/resources/vue/src/assets/icons/cascader.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/client.svg b/resources/vue/src/assets/icons/client.svg new file mode 100644 index 0000000..7373b3d --- /dev/null +++ b/resources/vue/src/assets/icons/client.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/close.svg b/resources/vue/src/assets/icons/close.svg new file mode 100644 index 0000000..e99c978 --- /dev/null +++ b/resources/vue/src/assets/icons/close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/close_all.svg b/resources/vue/src/assets/icons/close_all.svg new file mode 100644 index 0000000..2005198 --- /dev/null +++ b/resources/vue/src/assets/icons/close_all.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/close_left.svg b/resources/vue/src/assets/icons/close_left.svg new file mode 100644 index 0000000..fc5cf71 --- /dev/null +++ b/resources/vue/src/assets/icons/close_left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/close_other.svg b/resources/vue/src/assets/icons/close_other.svg new file mode 100644 index 0000000..27ffc32 --- /dev/null +++ b/resources/vue/src/assets/icons/close_other.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/close_right.svg b/resources/vue/src/assets/icons/close_right.svg new file mode 100644 index 0000000..b96dc1c --- /dev/null +++ b/resources/vue/src/assets/icons/close_right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/collapse.svg b/resources/vue/src/assets/icons/collapse.svg new file mode 100644 index 0000000..1507568 --- /dev/null +++ b/resources/vue/src/assets/icons/collapse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/dict.svg b/resources/vue/src/assets/icons/dict.svg new file mode 100644 index 0000000..db60220 --- /dev/null +++ b/resources/vue/src/assets/icons/dict.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/document.svg b/resources/vue/src/assets/icons/document.svg new file mode 100644 index 0000000..aaa0574 --- /dev/null +++ b/resources/vue/src/assets/icons/document.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/download.svg b/resources/vue/src/assets/icons/download.svg new file mode 100644 index 0000000..a8077dc --- /dev/null +++ b/resources/vue/src/assets/icons/download.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/fullscreen-exit.svg b/resources/vue/src/assets/icons/fullscreen-exit.svg new file mode 100644 index 0000000..2452f2b --- /dev/null +++ b/resources/vue/src/assets/icons/fullscreen-exit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/fullscreen.svg b/resources/vue/src/assets/icons/fullscreen.svg new file mode 100644 index 0000000..4b6ee11 --- /dev/null +++ b/resources/vue/src/assets/icons/fullscreen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/github.svg b/resources/vue/src/assets/icons/github.svg new file mode 100644 index 0000000..1adfa4e --- /dev/null +++ b/resources/vue/src/assets/icons/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/homepage.svg b/resources/vue/src/assets/icons/homepage.svg new file mode 100644 index 0000000..1e1feab --- /dev/null +++ b/resources/vue/src/assets/icons/homepage.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/ip.svg b/resources/vue/src/assets/icons/ip.svg new file mode 100644 index 0000000..087f3bb --- /dev/null +++ b/resources/vue/src/assets/icons/ip.svg @@ -0,0 +1 @@ + diff --git a/resources/vue/src/assets/icons/language.svg b/resources/vue/src/assets/icons/language.svg new file mode 100644 index 0000000..e754062 --- /dev/null +++ b/resources/vue/src/assets/icons/language.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/menu.svg b/resources/vue/src/assets/icons/menu.svg new file mode 100644 index 0000000..f5875d3 --- /dev/null +++ b/resources/vue/src/assets/icons/menu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/message.svg b/resources/vue/src/assets/icons/message.svg new file mode 100644 index 0000000..deacdc3 --- /dev/null +++ b/resources/vue/src/assets/icons/message.svg @@ -0,0 +1 @@ + diff --git a/resources/vue/src/assets/icons/monitor.svg b/resources/vue/src/assets/icons/monitor.svg new file mode 100644 index 0000000..f153b9c --- /dev/null +++ b/resources/vue/src/assets/icons/monitor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/project.svg b/resources/vue/src/assets/icons/project.svg new file mode 100644 index 0000000..eaf6a12 --- /dev/null +++ b/resources/vue/src/assets/icons/project.svg @@ -0,0 +1 @@ + diff --git a/resources/vue/src/assets/icons/pv.svg b/resources/vue/src/assets/icons/pv.svg new file mode 100644 index 0000000..cd7da06 --- /dev/null +++ b/resources/vue/src/assets/icons/pv.svg @@ -0,0 +1 @@ + diff --git a/resources/vue/src/assets/icons/refresh.svg b/resources/vue/src/assets/icons/refresh.svg new file mode 100644 index 0000000..e598ed1 --- /dev/null +++ b/resources/vue/src/assets/icons/refresh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/role.svg b/resources/vue/src/assets/icons/role.svg new file mode 100644 index 0000000..5d25278 --- /dev/null +++ b/resources/vue/src/assets/icons/role.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/setting.svg b/resources/vue/src/assets/icons/setting.svg new file mode 100644 index 0000000..fbc4945 --- /dev/null +++ b/resources/vue/src/assets/icons/setting.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/size.svg b/resources/vue/src/assets/icons/size.svg new file mode 100644 index 0000000..f92f852 --- /dev/null +++ b/resources/vue/src/assets/icons/size.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/system.svg b/resources/vue/src/assets/icons/system.svg new file mode 100644 index 0000000..2e6045b --- /dev/null +++ b/resources/vue/src/assets/icons/system.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/table.svg b/resources/vue/src/assets/icons/table.svg new file mode 100644 index 0000000..1a16abb --- /dev/null +++ b/resources/vue/src/assets/icons/table.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/todo.svg b/resources/vue/src/assets/icons/todo.svg new file mode 100644 index 0000000..f48e667 --- /dev/null +++ b/resources/vue/src/assets/icons/todo.svg @@ -0,0 +1 @@ + diff --git a/resources/vue/src/assets/icons/tree.svg b/resources/vue/src/assets/icons/tree.svg new file mode 100644 index 0000000..51aea8f --- /dev/null +++ b/resources/vue/src/assets/icons/tree.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/icons/user.svg b/resources/vue/src/assets/icons/user.svg new file mode 100644 index 0000000..8e693ec --- /dev/null +++ b/resources/vue/src/assets/icons/user.svg @@ -0,0 +1 @@ + diff --git a/resources/vue/src/assets/icons/uv.svg b/resources/vue/src/assets/icons/uv.svg new file mode 100644 index 0000000..c5be7eb --- /dev/null +++ b/resources/vue/src/assets/icons/uv.svg @@ -0,0 +1 @@ + diff --git a/resources/vue/src/assets/images/401.gif b/resources/vue/src/assets/images/401.gif new file mode 100644 index 0000000000000000000000000000000000000000..4c930e72a698889a0f5666d8599652c5808cfc70 GIT binary patch literal 162867 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 z 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�Q#E@9P%v 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 RAD1R`%-z%NxyyxH{|8NN4M_k1 literal 0 HcmV?d00001 diff --git a/resources/vue/src/assets/images/404_cloud.png b/resources/vue/src/assets/images/404_cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..a81d8daa2c5a025f0137a27d81ed61ce7064039f GIT binary patch literal 2644 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

Stdi;37*-(N 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 z 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%0A&N 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

Z|3I!`w~cFQ(G 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

8@t~VS~#1assLos@eBb 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�rz* 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

1s2Q{oFC4vocF})D{I~Ki*j69@Z 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­(EK{u`Zy^rV9NO&yQAOFqaZ~ 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

E(zt}j!j3(nK}7r$k| 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

JW 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

)6@~baMF5?A+h}vA=zjQ{$^= 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

;8|G}om!q=U0Il3nw!xy4f;{>^YZaiLHlDx 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 VqmGdAk%53ex>`n>wd$Cd{|6V|)GPo1 literal 0 HcmV?d00001 diff --git a/resources/vue/src/assets/images/login-background-dark.jpg b/resources/vue/src/assets/images/login-background-dark.jpg new file mode 100644 index 0000000000000000000000000000000000000000..50dc817e8fca2d229f91de8f9ee4a395572ee00a GIT binary patch literal 20471 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 Vjs4wpK(~MM=0|#bu<7w%{x1-0sn`Gj literal 0 HcmV?d00001 diff --git a/resources/vue/src/assets/images/login-background-light.jpg b/resources/vue/src/assets/images/login-background-light.jpg new file mode 100644 index 0000000000000000000000000000000000000000..993b958e243926e4dd5b1a415c879965117a3419 GIT binary patch literal 32872 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ð^j-r@`P8j452yx>Y6XIGhmq$X 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 Vk3V|iuRnJ0#=E5TTkrnQ|1Z@Pvk(9P literal 0 HcmV?d00001 diff --git a/resources/vue/src/assets/images/login_bg.png b/resources/vue/src/assets/images/login_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..67f3af3dbe26fce753719f563934648dec44ca2a GIT binary patch literal 474374 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

Nb5qeekWdUM2&z^+{te+42ib-(3 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�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 literal 0 HcmV?d00001 diff --git a/resources/vue/src/assets/images/login_bg.svg b/resources/vue/src/assets/images/login_bg.svg new file mode 100644 index 0000000..f42e56b --- /dev/null +++ b/resources/vue/src/assets/images/login_bg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/vue/src/assets/images/work_wechat.png b/resources/vue/src/assets/images/work_wechat.png new file mode 100644 index 0000000000000000000000000000000000000000..9c3f4ba657af87c8509f72a9888cd363039460f1 GIT binary patch literal 6991 zcmbVQ^;;B5xL*1Y3rCbL5d=k+B^N~UfP}D;g4815%97Guf`HPnuyjjz!%{9Q-QAK) ziY~Fzc=7%R_s;Xo%nvj3e(yKWd^Ml7U#bGBSg8O208m{`S@(9v|Ly;f-;Q#xb`t;q zHb!-2MSU;WK_+Di`>TfDQU1QXyiZzpn3i5+d2@cO)4$bIQ05hU5W$zq%-zTLDW?Q3 zs;;a(7EZdxO{YVe*v(Ic?3W=Tt0f*#3T7t4#C_Q}&?5ei-rU>Kow&cn^Buah3|)r) z)A{Q%P^{lAQ_p?>=5oe`>A@|7|69BF$yw6zzipwFh{B2m)D>QKvtlVagW)nRzbAo< zedLd)p!eSKCONYIl{K=eLmlQtYe(FY>-&vq) zd*)CWg)MCP3?vlW)S~vE&McR6b%W4VF%JUIM~<`sh(I61n01Zi!}2Hd|I!%`>57td z;syy~=i3PHVnAZ{?lebpcUsqJv82;J;iFAZ;{>t+T)0{%E-?pVBm>~ywA-}fX*C}H zx=(iM!lJo-xzB@8!IK+l0`5_yc<}CC?r4-0p|b_00mdPB9TX2IjS2E7Dr#VbdAHVF z=FY2HHKIN))dNMxxj}|QFlvBux=MB3bNZ&11Ad1j4uo#N2j6X;xSr6xliPFhV4u~c zEWF>6B1a?x^QX8yA9ypWdzkaX-E+y6CMaxdnMT&#fTHc^G{3lz{^f8=T*g2Rb1FKz;GhO#yI# z5RroE9U1qUf;@$8RDi!HS|&3GSsa}XTJPg34j|-P8y4mE&i9Z|M-6C`Uq?2iOsfWX zk?gy4T>Z*DvuTkIUBYN3FtID#M3~tuxGw6RUK#dc88$F~*0QdSwQnY*Y@x*d&bdr98L*)v;Sgu|kVs#fn zVm)or&n6QDybe7Jn53@S_BTSz_gbn4<~|+thzloKAd>gvVryy+q49IP_H$?0HJH-* zg=#hb2bSs;1RYMU%<}1%ikaDe@0TUd@5zzK(%F?9y(co*@0c4bujhBpnxXv~8}rRa z>C#r9Y2q}!ckaKIJqqTIIoh56WtoNPgVKCo%h`xWMapDClx|sl@~F% zFA$?O)0^EMI+Qe}!`1@3`NbIsH=(?H4S3j9(iWn%1nT*0U+8u!Z|HCQ(^z$#j#K>* z`P1OL7)9Ntdz7*k z-ge}3U|#tQ&6ow_pY+VZ3#2C%Dcx`72(%sQKWPyXvLRgSgEL!l>YME|`Yqk^Rz5Lee*wnsS)BFoD4b8pn7rurnOb+iO8Gw)B#xl>po zTihs&65NTpC&wx;OoUU+2K#@Ha!pMd^ORP>#wBUuWDW)m##!xV&@rI62$df-l?xg-%!yf%=&|e7QdgZCG|WVRoN+dB^lt9 zRRCaPDm2)oIoc`N4hQ!r8DRdIg0a8@cgrbwf<`c}R>bxc@+Ts{?>@A~2z#wTRWK3) z{_jbp>CCU^im9XbEmO(M`D2Slgx_zA3N3tO`?$jDp6BeZUq~zqZp&OZB1CuDD)=2K zSnH*$ffv0eOx?>gN!s2N>S#yr{SRwi1pm=6zktjQqzWhP^CkcSkTA9_5&t#CF`)AGZr)O)uQN%XN z0bW^}L_r_8V2)FnVfwpc;RQZY**eT6)BISHH}HkyMQ48_`w}G^+`zp9Eg9x#SRthB z9*-y)KxslxcD`7tgh7VYlXdq|Eqis&Wjk@)J*{Q?se*c!5L#bw#_|!%=%MVe?^`c` z$~S5``w}f1_eh$Rjx&b#`Y(b(iBuijSQ2eX$2c5G1+5X2blDwMN4zQ;v1^)e9@X2|s3VB z_T2I-3*xJUkhzN_TCbu)paO==JXqp5%8`Ml>hu5dM;^|Gh`OC0lG9bQBUm%Jl}O@P zU{2u$BM%K1LA~oG)X^cD`8I15ZxH}dEFD;Q&y=+#>9eR?%Xo6f(S4*{4GpzIp_d}W zFv6iBE1~X(dk;}zJQwUQ&eJSo+o|?%RM|+2!ASG-X78ZKQ_f0_3L1EQh(E!-GraLD zkk5oxsKv*i%`A-kzU!4!o6hM(u>&hRc*t_%cR2htzy-sy)UW$T_mMp^x6(+kEy_qz zL9E{r&2Mh@5R1BNI4njhR8v~iUk%s{DM6cFtuzbPz<5taD1zVAYn8Dn0$usO9!##jC54pTi#}#`HjsZ4R4CrdF z@cy@Y;wfT9X$7J)5MnH>L8gaOol!n1`i{7NSsG2x_R4w`AI?(!6>>QBLc>h6xY{HP z#5AwT9On5o=X~dB?=U(=eGtPpjkK_8@e0gO5Ci(VYHIA5^9R4tplG)$A zk;X*m%^Ph48Hp8LCS-rr%Xo`HG8&qJh@zj3Q{5k_Is~yOYG&p{hWuynV*bF{V>D<@ zVE*x}Ks<81 zZnwQWq<5&WD(Yv^WX@6n{QBKT(*OJZHl!aT{U^m=N}>pCb7HuVsqt@b8Ydj zuIr-$VdK+U;R6SY6dR#lRJ#ws00h06|7NvFGIJOQ%+-BR&?<=we3fg_w~00mBfD?s zkqUip$#a9T9N|sl-9WKPA{DQ_m}p$!C+rK8mOc6tpynuZ*cD#;mg}H5>EvFJ>D-$0 zf@zvC35VcuBC-VYJB($rk8bgcg2MQlIx`26H`qON)(a&)7!@G=tFnDX>!lRETLfXI-!G0$d8b+Srk;jQfqw3_q8H}UlUVA`OFOdjC!R@bM8(PO8-af; zMNEWP#lk!IPILV-&QDPG9i6XfQdMRL@BrQqzo4UWDuX)I@Ee!)Fj+>iLVd4{TXF4C z968YW*VKaV234=cU;YIS7MlE2(hw&U0ehkc&<2~4)H9{;vtaGdcalW|pB{E)8x5rx zbo`}yc5`yyk;A;2S;+MOlKvZYJ{W$Rvxrz4SL9~x1>6P*NM5L$zIbc~g6N=n?awc{ z@ED5_Szcgrh~tv*d+)=pmRlav6{0eL1ccmjcLZ!kM%okGxv%rW%-?M!W&T7m@~~D< z-rpJ9hEoQ2B3Ntgtm(48wy1M#ig%WrB3{r7=&*x04DzM-$ydR#vKGwMI)w3!eDa+N z(f8;0;C+yaCRh>?B4l@8qh1j>=~!OX=fG=qfsltBpWAn|zP1A@73y%A@f|19-9}zM zPVuM|*l3RkQO;bOsxeJ#&DMDGrU!PM@XUwb+%oV3^vnvfrWYoHEY6nW-bkjCZ~kie zO+`FC;{z1VI%ZVu-3qLGF`Qp;)iPy%w&C~%+6x7M7!Vw`og|iqIi{mzw@^+7-tA8X#lP8z zfm_ist2EdUK@%6PKLkiMR6d8nMas;s-9AU@$;r4!TXd=5!W_ojfm2G$6^>Br{)4)A zLzz?ETN&^acZ9!Q&m*RhRiQ7cEb4b50x8WE>Qj5Rpqvs>m8__aNV$b+)y`_>nSTQv zBbGW$n{6X3z6x#{E;=2|jPUuydAyk0vo#ak5RY`P%B7inakwqV-vnav8DO`$-S&|y zu0-K{mGMLvvL0&$HlmTvs7$O$1G1gy+q{l6@E}Z5;2Lolx)p5LW!Ya`{e?FMA4ho5 z*|(RS`R&3yQbct|2Cdj*&tP@2bIdsDxI}e2dEnCO5$-dWq0yo)AZpl? zao>0b8TNR8_PG4N;oKQ_CjYc(=||D6xtkCi)-ai6Yw!g+i6WHSSlL(Ab@z$=f{}eA zMc!s|uaX_-aNK#s*Ob?SEud$vL=Z$L7t z&g@^fBUziPD$4L^)kq+@%W z@=!0h=Z#*bLyDlh?A>L>^g;heK%YClh9Kd6_&fCTLVG#y4p;;O>oM<#6Q{^C-^lT! zabon#Eii+l@O*i!ksTf@>TukDOh~92N!(SCo*@*AMx&DHU&iZ6`MKxoaMhv8Didr> zlweiKOMohrXfRM_QrIZVCum@C@a1XFQ5R0de+U){-m*%@mMb_#dZk;` zUWu#T3c6Xc#9x>iHAn4itXmGZolpxO(860C3eOoWOCmN-qH4xv+!8GCY~ z{&vnGzEPQ)Pl~2v7ZxcZ`;R7Nq!n&~oM%-v{D+i6%Qxm_0NSF0YFblmjAx^wo+Ue! zr?pevS5tNC2QEwziW_`FUwvzT=YBr@3d(lQ=Wbgy)i4{?GRGj(UA$4?SVdm{hcwef+}?k^)?ZOpH>)4Gof3$j-hO)!jkuS(ub)vnkqPODD zT=T0Z^ga+Rf0Nv7p#9s|B~HOhZnE~(ER2)zl6?4x?pjIN@X-+Tbl{{rFINbKNrpG0 z@rFMJKtBUh4|VO}OD|e6z?vF@WWC;eYzF+i{PAMz(Xcp(8EZ%y?)+0v>hxSZ&jJWM z|8d_Z$io^5s$;HlK9p@7GL$|_3!Ua`N|^W2KFzb3J(iV&UPG>kZ z!biN1h>Lk>Pve-6zd2(%u;a(Fj+U>L$UE7z(M8TWoi@h>#{*?)3j(RM)i9~_TWlu- ztA0 zds+u0WY>2$j>m+lDwDgV=>49`*e<^a@nK2wohu&2cT(gp$QX;AopP_3)Ox?avt?HG z0pX(f%=1KF4uLWWahbL{l=3i#=H7k~z8!E`4VPr5Fi7sQVe5W+ybF39U|D96mK~~+ z$OWs>@!t9bDeZ2PaG&Hdj4cWVrt`?!m<{+`)RL=r`i}uoCbIDvn9R2kF6-o-P3%AV zCO96=wH9X@`2%PW5XWeg4YD zpyPR%1Kmm4{f(Uc2?cvgGli{{oGGezIwN;Uk7V)v6ZMQ0?|8BWn;fJAydEVF9>04U zeSg_<9~R&Mb>O@FBT36C5OgFVYA(Qq5UI$WUY@9x^*uHF}m@G%$12Jk2Ju7s${mL{-KOIYVJyLno|kpIU&GK7a3 zAL?N~a4Ey>cn0CftM0Z zPZHPjqaRQgBu(r~?Oq-cc2<@LxHrSv9VWsr9y`JVF?%BpiTW?*QdW}RaVUDW%|XKl zq<}iUe6FnpOAu5UqjTn?z^1XV!!9nC&`GM@_Y*z_DzhOQ%d7u<-?A)?77(>!Pz-2B z*50lCy)EV1x++h2XV^Ik(&jDZu$4VrWtKIW${%$IkT;^4?Wu}&_R z3}lYOv%(%;iLxEo-HWv?fem$<_g^0C-JDh-u+CjsXz?uOudl3+S9*IhDVOm7#x!Xy zMOrVEI&7Rd^rTUWPg{^H^S-ECZg5*&(4al!CUVK5w0R5kc=oj7hk0c{KL~v_Z;2thGJSpXT2v6hbq4dQv}nwz zN2kl(KMq;Lze<}PCXl)_A@wjMVYETf?pfl-j%f;=@#h$|9d5fqbr4l@LY4|eRfu#1 z6aRROeWgU$yh{S1U!3`aF_`)CLaoCX>N8%`CFDqR6b8-@6uQk7+=NoOrXpb@ld*;Z zZMVf(MDwME%~mg&H|Deu`DNT?3M(oP$RW!6T;J4<@V0RfkAbo1QUMTAeYw!|sS=(U zjg69e9yH()uYLKmg7G6=@z3}$k|03~tKr)+O2bDvafl9p0Caqmd&vsozgFKO2Z;Bf zPcakr-o>lbwj|oRGc@gwj8SRa$HV~9pkepw+l+6o06}lTECBGXX-u!IV+KDldvHty z5PeG^T^O}&6V&&vnICKdjD4=27piBj7I8=N9|Hg`>*mXDXp64;y+RGRA3$LQk2~?g zMo~7P)Ag4@DjDEtqj1JLTI3-B0D9w4A;I~*@9sL>#BoL=O{IuFtb|xw w+^wwCdOFVd+2@$p!m+KRTk!vHll~Y;B8UCsX5^jX@fSn=`Ag->|K0@u53S>=GXMYp literal 0 HcmV?d00001 diff --git a/resources/vue/src/assets/logo.png b/resources/vue/src/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..67132028da95dd233eb4583e08d491d9bf88716b GIT binary patch literal 73085 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 literal 0 HcmV?d00001 diff --git a/resources/vue/src/components/AppLink/index.vue b/resources/vue/src/components/AppLink/index.vue new file mode 100644 index 0000000..43bbb30 --- /dev/null +++ b/resources/vue/src/components/AppLink/index.vue @@ -0,0 +1,38 @@ + + + diff --git a/resources/vue/src/components/Breadcrumb/index.vue b/resources/vue/src/components/Breadcrumb/index.vue new file mode 100644 index 0000000..7c40eef --- /dev/null +++ b/resources/vue/src/components/Breadcrumb/index.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/resources/vue/src/components/CURD/PageContent.vue b/resources/vue/src/components/CURD/PageContent.vue new file mode 100644 index 0000000..7b73799 --- /dev/null +++ b/resources/vue/src/components/CURD/PageContent.vue @@ -0,0 +1,1022 @@ + + + + + diff --git a/resources/vue/src/components/CURD/PageForm.vue b/resources/vue/src/components/CURD/PageForm.vue new file mode 100644 index 0000000..524a6a4 --- /dev/null +++ b/resources/vue/src/components/CURD/PageForm.vue @@ -0,0 +1,174 @@ + + + diff --git a/resources/vue/src/components/CURD/PageModal.vue b/resources/vue/src/components/CURD/PageModal.vue new file mode 100644 index 0000000..3d53e39 --- /dev/null +++ b/resources/vue/src/components/CURD/PageModal.vue @@ -0,0 +1,405 @@ + + + + + diff --git a/resources/vue/src/components/CURD/PageSearch.vue b/resources/vue/src/components/CURD/PageSearch.vue new file mode 100644 index 0000000..0575149 --- /dev/null +++ b/resources/vue/src/components/CURD/PageSearch.vue @@ -0,0 +1,237 @@ + + + + + diff --git a/resources/vue/src/components/CURD/types.ts b/resources/vue/src/components/CURD/types.ts new file mode 100644 index 0000000..97f4d83 --- /dev/null +++ b/resources/vue/src/components/CURD/types.ts @@ -0,0 +1,271 @@ +import type { + DialogProps, + DrawerProps, + FormItemRule, + FormProps, + PaginationProps, + TableProps, + ColProps, +} from "element-plus"; +import PageContent from "./PageContent.vue"; +import PageForm from "./PageForm.vue"; +import PageModal from "./PageModal.vue"; +import PageSearch from "./PageSearch.vue"; + +export type PageSearchInstance = InstanceType; +export type PageContentInstance = InstanceType; +export type PageModalInstance = InstanceType; +export type PageFormInstance = InstanceType; + +export type IObject = Record; + +export interface IOperatData { + name: string; + row: IObject; + column: IObject; + $index: number; +} + +export interface ISearchConfig { + // 页面名称(参与组成权限标识,如sys:user:xxx) + pageName: string; + // 表单项 + formItems: Array<{ + // 组件类型(如input,select等) + type?: "input" | "select" | "tree-select" | "date-picker" | "input-tag"; + // 标签文本 + label: string; + // 标签提示 + tips?: string; + // 键名 + prop: string; + // 组件属性(input-tag组件支持join,btnText,size属性) + attrs?: IObject; + // 初始值 + initialValue?: any; + // 可选项(适用于select组件) + options?: { label: string; value: any }[]; + // 初始化数据函数扩展 + initFn?: (formItem: IObject) => void; + }>; + // 是否开启展开和收缩 + isExpandable?: boolean; + // 默认展示的表单项数量 + showNumber?: number; +} + +export interface IContentConfig { + // 页面名称(参与组成权限标识,如sys:user:xxx) + pageName: string; + // table组件属性 + table?: Omit, "data">; + // pagination组件属性 + pagination?: + | boolean + | Partial< + Omit< + PaginationProps, + "v-model:page-size" | "v-model:current-page" | "total" | "currentPage" + > + >; + // 列表的网络请求函数(需返回promise) + indexAction: (queryParams: T) => Promise; + // 默认的分页相关的请求参数 + request?: { + pageName: string; + limitName: string; + }; + // 数据格式解析的回调函数 + parseData?: (res: any) => { + total: number; + list: IObject[]; + [key: string]: any; + }; + // 修改属性的网络请求函数(需返回promise) + modifyAction?: (data: { + [key: string]: any; + field: string; + value: boolean | string | number; + }) => Promise; + // 删除的网络请求函数(需返回promise) + deleteAction?: (ids: string) => Promise; + // 后端导出的网络请求函数(需返回promise) + exportAction?: (queryParams: T) => Promise; + // 前端全量导出的网络请求函数(需返回promise) + exportsAction?: (queryParams: T) => Promise; + // 导入模板 + importTemplate?: string | (() => Promise); + // 后端导入的网络请求函数(需返回promise) + importAction?: (file: File) => Promise; + // 前端导入的网络请求函数(需返回promise) + importsAction?: (data: IObject[]) => Promise; + // 主键名(默认为id) + pk?: string; + // 表格工具栏(默认支持add,delete,export,也可自定义) + toolbar?: Array< + | "add" + | "delete" + | "import" + | "export" + | { + auth: string; + icon?: string; + name: string; + text: string; + type?: "primary" | "success" | "warning" | "danger" | "info"; + } + >; + // 表格工具栏右侧图标 + defaultToolbar?: Array< + | "refresh" + | "filter" + | "imports" + | "exports" + | "search" + | { + name: string; + icon: string; + title?: string; + auth?: string; + } + >; + // table组件列属性(额外的属性templet,operat,slotName) + cols: Array<{ + type?: "default" | "selection" | "index" | "expand"; + label?: string; + prop?: string; + width?: string | number; + align?: "left" | "center" | "right"; + columnKey?: string; + reserveSelection?: boolean; + // 列是否显示 + show?: boolean; + // 模板 + templet?: + | "image" + | "list" + | "url" + | "switch" + | "input" + | "price" + | "percent" + | "icon" + | "date" + | "tool" + | "custom"; + // image模板相关参数 + imageWidth?: number; + imageHeight?: number; + // list模板相关参数 + selectList?: IObject; + // switch模板相关参数 + activeValue?: boolean | string | number; + inactiveValue?: boolean | string | number; + activeText?: string; + inactiveText?: string; + // input模板相关参数 + inputType?: string; + // price模板相关参数 + priceFormat?: string; + // date模板相关参数 + dateFormat?: string; + // tool模板相关参数 + operat?: Array< + | "edit" + | "delete" + | { + auth: string; + icon?: string; + name: string; + text: string; + type?: "primary" | "success" | "warning" | "danger" | "info"; + render?: (row: IObject) => boolean; + } + >; + // filter值拼接符 + filterJoin?: string; + [key: string]: any; + // 初始化数据函数 + initFn?: (item: IObject) => void; + }>; +} + +export interface IModalConfig { + // 页面名称 + pageName?: string; + // 主键名(主要用于编辑数据,默认为id) + pk?: string; + // 组件类型 + component?: "dialog" | "drawer"; + // dialog组件属性 + dialog?: Partial>; + // drawer组件属性 + drawer?: Partial>; + // form组件属性 + form?: IForm; + // 表单项 + formItems: IFormItems; + // 提交之前处理 + beforeSubmit?: (data: T) => void; + // 提交的网络请求函数(需返回promise) + formAction: (data: T) => Promise; +} + +export type IForm = Partial>; + +// 表单项 +export type IFormItems = Array<{ + // 组件类型(如input,select,radio,custom等,默认input) + type?: + | "input" + | "select" + | "radio" + | "checkbox" + | "tree-select" + | "date-picker" + | "input-number" + | "text" + | "custom"; + // 组件属性 + attrs?: IObject; + // 组件可选项(适用于select,radio,checkbox组件) + options?: Array<{ + label: string; + value: any; + disabled?: boolean; + [key: string]: any; + }>; + // 插槽名(适用于组件类型为custom) + slotName?: string; + // 标签文本 + label: string; + // 标签提示 + tips?: string; + // 键名 + prop: string; + // 验证规则 + rules?: FormItemRule[]; + // 初始值 + initialValue?: any; + // 是否隐藏 + hidden?: boolean; + // layout组件Col属性 + col?: Partial; + // 监听函数 + watch?: (newValue: any, oldValue: any, data: T, items: IObject[]) => void; + // 计算属性函数 + computed?: (data: T) => any; + // 监听收集函数 + watchEffect?: (data: T) => void; + // 初始化数据函数扩展 + initFn?: (item: IObject) => void; +}>; + +export interface IPageForm { + // 主键名(主要用于编辑数据,默认为id) + pk?: string; + // form组件属性 + form?: IForm; + // 表单项 + formItems: IFormItems; +} diff --git a/resources/vue/src/components/CURD/usePage.ts b/resources/vue/src/components/CURD/usePage.ts new file mode 100644 index 0000000..4d410ce --- /dev/null +++ b/resources/vue/src/components/CURD/usePage.ts @@ -0,0 +1,73 @@ +import { ref } from "vue"; +import type { + IObject, + PageContentInstance, + PageModalInstance, + PageSearchInstance, +} from "./types"; + +function usePage() { + const searchRef = ref(); + const contentRef = ref(); + const addModalRef = ref(); + const editModalRef = ref(); + + // 搜索 + function handleQueryClick(queryParams: IObject) { + const filterParams = contentRef.value?.getFilterParams(); + contentRef.value?.fetchPageData({ ...queryParams, ...filterParams }, true); + } + // 重置 + function handleResetClick(queryParams: IObject) { + const filterParams = contentRef.value?.getFilterParams(); + contentRef.value?.fetchPageData({ ...queryParams, ...filterParams }, true); + } + // 新增 + function handleAddClick() { + //显示添加表单 + addModalRef.value?.setModalVisible(); + } + // 编辑 + function handleEditClick(row: IObject) { + //显示编辑表单 根据数据进行填充 + editModalRef.value?.setModalVisible(row); + } + // 表单提交 + function handleSubmitClick() { + //根据检索条件刷新列表数据 + const queryParams = searchRef.value?.getQueryParams(); + contentRef.value?.fetchPageData(queryParams, true); + } + // 导出 + function handleExportClick() { + // 根据检索条件导出数据 + const queryParams = searchRef.value?.getQueryParams(); + contentRef.value?.exportPageData(queryParams); + } + // 搜索显隐 + function handleSearchClick() { + searchRef.value?.toggleVisible(); + } + // 涮选数据 + function handleFilterChange(filterParams: IObject) { + const queryParams = searchRef.value?.getQueryParams(); + contentRef.value?.fetchPageData({ ...queryParams, ...filterParams }, true); + } + + return { + searchRef, + contentRef, + addModalRef, + editModalRef, + handleQueryClick, + handleResetClick, + handleAddClick, + handleEditClick, + handleSubmitClick, + handleExportClick, + handleSearchClick, + handleFilterChange, + }; +} + +export default usePage; diff --git a/resources/vue/src/components/CopyButton/index.vue b/resources/vue/src/components/CopyButton/index.vue new file mode 100644 index 0000000..8e88435 --- /dev/null +++ b/resources/vue/src/components/CopyButton/index.vue @@ -0,0 +1,62 @@ + + + + diff --git a/resources/vue/src/components/Date/index.vue b/resources/vue/src/components/Date/index.vue new file mode 100644 index 0000000..5d92c9b --- /dev/null +++ b/resources/vue/src/components/Date/index.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/resources/vue/src/components/Dictionary/index.vue b/resources/vue/src/components/Dictionary/index.vue new file mode 100644 index 0000000..763c2c6 --- /dev/null +++ b/resources/vue/src/components/Dictionary/index.vue @@ -0,0 +1,76 @@ + + + diff --git a/resources/vue/src/components/GithubCorner/index.vue b/resources/vue/src/components/GithubCorner/index.vue new file mode 100644 index 0000000..4c7f910 --- /dev/null +++ b/resources/vue/src/components/GithubCorner/index.vue @@ -0,0 +1,62 @@ + + + diff --git a/resources/vue/src/components/Hamburger/index.vue b/resources/vue/src/components/Hamburger/index.vue new file mode 100644 index 0000000..6ab2eb6 --- /dev/null +++ b/resources/vue/src/components/Hamburger/index.vue @@ -0,0 +1,39 @@ + + + + diff --git a/resources/vue/src/components/IconSelect/index.vue b/resources/vue/src/components/IconSelect/index.vue new file mode 100644 index 0000000..7e38308 --- /dev/null +++ b/resources/vue/src/components/IconSelect/index.vue @@ -0,0 +1,208 @@ + + + + + diff --git a/resources/vue/src/components/ImportEvKey/index.vue b/resources/vue/src/components/ImportEvKey/index.vue new file mode 100644 index 0000000..94fcbda --- /dev/null +++ b/resources/vue/src/components/ImportEvKey/index.vue @@ -0,0 +1,80 @@ + + + + + diff --git a/resources/vue/src/components/LangSelect/index.vue b/resources/vue/src/components/LangSelect/index.vue new file mode 100644 index 0000000..2f35582 --- /dev/null +++ b/resources/vue/src/components/LangSelect/index.vue @@ -0,0 +1,47 @@ + + + diff --git a/resources/vue/src/components/MarkDownView/index.vue b/resources/vue/src/components/MarkDownView/index.vue new file mode 100644 index 0000000..ea7eb34 --- /dev/null +++ b/resources/vue/src/components/MarkDownView/index.vue @@ -0,0 +1,21 @@ + + + diff --git a/resources/vue/src/components/MenuSelect/index.vue b/resources/vue/src/components/MenuSelect/index.vue new file mode 100644 index 0000000..9d56a06 --- /dev/null +++ b/resources/vue/src/components/MenuSelect/index.vue @@ -0,0 +1,126 @@ + + + + + diff --git a/resources/vue/src/components/Pagination/index.vue b/resources/vue/src/components/Pagination/index.vue new file mode 100644 index 0000000..c080e60 --- /dev/null +++ b/resources/vue/src/components/Pagination/index.vue @@ -0,0 +1,81 @@ + + + + + diff --git a/resources/vue/src/components/SelectLink/index.vue b/resources/vue/src/components/SelectLink/index.vue new file mode 100644 index 0000000..a923c55 --- /dev/null +++ b/resources/vue/src/components/SelectLink/index.vue @@ -0,0 +1,70 @@ + + + + + diff --git a/resources/vue/src/components/SizeSelect/index.vue b/resources/vue/src/components/SizeSelect/index.vue new file mode 100644 index 0000000..d3e83fe --- /dev/null +++ b/resources/vue/src/components/SizeSelect/index.vue @@ -0,0 +1,39 @@ + + + diff --git a/resources/vue/src/components/SvgIcon/index.vue b/resources/vue/src/components/SvgIcon/index.vue new file mode 100644 index 0000000..07b65e8 --- /dev/null +++ b/resources/vue/src/components/SvgIcon/index.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/resources/vue/src/components/TableSelect/index.vue b/resources/vue/src/components/TableSelect/index.vue new file mode 100644 index 0000000..28ad4b6 --- /dev/null +++ b/resources/vue/src/components/TableSelect/index.vue @@ -0,0 +1,371 @@ + + + + + diff --git a/resources/vue/src/components/Upload/ImageUpload.vue b/resources/vue/src/components/Upload/ImageUpload.vue new file mode 100644 index 0000000..a198329 --- /dev/null +++ b/resources/vue/src/components/Upload/ImageUpload.vue @@ -0,0 +1,215 @@ + + + + diff --git a/resources/vue/src/components/Upload/SingleUpload.vue b/resources/vue/src/components/Upload/SingleUpload.vue new file mode 100644 index 0000000..5da8039 --- /dev/null +++ b/resources/vue/src/components/Upload/SingleUpload.vue @@ -0,0 +1,77 @@ + + + + + diff --git a/resources/vue/src/components/WangEditor/index.vue b/resources/vue/src/components/WangEditor/index.vue new file mode 100644 index 0000000..bdc4cc8 --- /dev/null +++ b/resources/vue/src/components/WangEditor/index.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/resources/vue/src/directive/index.ts b/resources/vue/src/directive/index.ts new file mode 100644 index 0000000..9c22eb6 --- /dev/null +++ b/resources/vue/src/directive/index.ts @@ -0,0 +1,9 @@ +import type { App } from "vue"; + +import { hasPerm } from "./permission"; + +// 全局注册 directive +export function setupDirective(app: App) { + // 使 v-hasPerm 在所有组件中都可用 + app.directive("hasPerm", hasPerm); +} diff --git a/resources/vue/src/directive/permission/index.ts b/resources/vue/src/directive/permission/index.ts new file mode 100644 index 0000000..7a080e3 --- /dev/null +++ b/resources/vue/src/directive/permission/index.ts @@ -0,0 +1,38 @@ +import { hasAuth } from "@/plugins/permission"; +import { Directive, DirectiveBinding } from "vue"; + +/** + * 按钮权限 + */ +export const hasPerm: Directive = { + mounted(el: HTMLElement, binding: DirectiveBinding) { + // DOM绑定需要的按钮权限标识 + const { value: requiredPerms } = binding; + if (requiredPerms) { + if (!hasAuth(requiredPerms)) { + el.parentNode && el.parentNode.removeChild(el); + } + } else { + throw new Error( + "need perms! Like v-has-perm=\"['sys:user:add','sys:user:edit']\"" + ); + } + }, +}; + +/** + * 角色权限 + */ +export const hasRole: Directive = { + mounted(el: HTMLElement, binding: DirectiveBinding) { + // DOM绑定需要的角色编码 + const { value: requiredRoles } = binding; + if (requiredRoles) { + if (!hasAuth(requiredRoles, "role")) { + el.parentNode && el.parentNode.removeChild(el); + } + } else { + throw new Error("need roles! Like v-has-role=\"['admin','test']\""); + } + }, +}; diff --git a/resources/vue/src/enums/CacheEnum.ts b/resources/vue/src/enums/CacheEnum.ts new file mode 100644 index 0000000..f3c434b --- /dev/null +++ b/resources/vue/src/enums/CacheEnum.ts @@ -0,0 +1,4 @@ +/** + * 令牌缓存Key + */ +export const TOKEN_KEY = "accessToken"; diff --git a/resources/vue/src/enums/DeviceEnum.ts b/resources/vue/src/enums/DeviceEnum.ts new file mode 100644 index 0000000..709bcb3 --- /dev/null +++ b/resources/vue/src/enums/DeviceEnum.ts @@ -0,0 +1,14 @@ +/** + * 设备枚举 + */ +export const enum DeviceEnum { + /** + * 宽屏设备 + */ + DESKTOP = "desktop", + + /** + * 窄屏设备 + */ + MOBILE = "mobile", +} diff --git a/resources/vue/src/enums/LanguageEnum.ts b/resources/vue/src/enums/LanguageEnum.ts new file mode 100644 index 0000000..a50b655 --- /dev/null +++ b/resources/vue/src/enums/LanguageEnum.ts @@ -0,0 +1,14 @@ +/** + * 语言枚举 + */ +export const enum LanguageEnum { + /** + * 中文 + */ + ZH_CN = "zh-cn", + + /** + * 英文 + */ + EN = "en", +} diff --git a/resources/vue/src/enums/LayoutEnum.ts b/resources/vue/src/enums/LayoutEnum.ts new file mode 100644 index 0000000..68be72e --- /dev/null +++ b/resources/vue/src/enums/LayoutEnum.ts @@ -0,0 +1,18 @@ +/** + * 菜单布局枚举 + */ +export const enum LayoutEnum { + /** + * 左侧菜单布局 + */ + LEFT = "left", + /** + * 顶部菜单布局 + */ + TOP = "top", + + /** + * 混合菜单布局 + */ + MIX = "mix", +} diff --git a/resources/vue/src/enums/MenuTypeEnum.ts b/resources/vue/src/enums/MenuTypeEnum.ts new file mode 100644 index 0000000..b69942f --- /dev/null +++ b/resources/vue/src/enums/MenuTypeEnum.ts @@ -0,0 +1,22 @@ +/** + * 菜单类型枚举 + */ +export const enum MenuTypeEnum { + /** + * 目录 + */ + CATALOG = "CATALOG", + /** + * 菜单 + */ + MENU = "MENU", + + /** + * 按钮 + */ + BUTTON = "BUTTON", + /** + * 外链 + */ + EXTLINK = "EXTLINK", +} diff --git a/resources/vue/src/enums/MessageTypeEnum.ts b/resources/vue/src/enums/MessageTypeEnum.ts new file mode 100644 index 0000000..42a6fb9 --- /dev/null +++ b/resources/vue/src/enums/MessageTypeEnum.ts @@ -0,0 +1,15 @@ +/* 消息类型枚举 */ +export const enum MessageTypeEnum { + /* 消息 */ + MESSAGE = "MESSAGE", + /* 通知 */ + NOTICE = "NOTICE", + /* 待办 */ + TODO = "TODO", +} + +export const MessageTypeLabels = { + [MessageTypeEnum.MESSAGE]: "消息", + [MessageTypeEnum.NOTICE]: "通知", + [MessageTypeEnum.TODO]: "待办", +}; diff --git a/resources/vue/src/enums/NoticeTypeEnum.ts b/resources/vue/src/enums/NoticeTypeEnum.ts new file mode 100644 index 0000000..49c0f8e --- /dev/null +++ b/resources/vue/src/enums/NoticeTypeEnum.ts @@ -0,0 +1,30 @@ +/* 通知类型枚举 */ +export const enum NoticeTypeEnum { + /** 系统升级 */ + SYSTEM_UPGRADE = "SYSTEM_UPGRADE", + /** 系统维护 */ + SYSTEM_MAINTENANCE = "SYSTEM_MAINTENANCE", + /** 安全警告 */ + SECURITY_ALERT = "SECURITY_ALERT", + /** 假期通知 */ + HOLIDAY_NOTICE = "HOLIDAY_NOTICE", + /** 公司新闻 */ + COMPANY_NEWS = "COMPANY_NEWS", + /** 其他通知 */ + OTHER = "OTHER", +} + +// 定义标签映射 +const NoticeTypeLabels: Record = { + [NoticeTypeEnum.SYSTEM_UPGRADE]: "系统升级", + [NoticeTypeEnum.SYSTEM_MAINTENANCE]: "系统维护", + [NoticeTypeEnum.SECURITY_ALERT]: "安全警告", + [NoticeTypeEnum.HOLIDAY_NOTICE]: "假期通知", + [NoticeTypeEnum.COMPANY_NEWS]: "公司新闻", + [NoticeTypeEnum.OTHER]: "其他通知", +}; + +// 导出获取标签函数 +export const getNoticeLabel = (type: NoticeTypeEnum): string => { + return NoticeTypeLabels[type] || ""; +}; diff --git a/resources/vue/src/enums/ResultEnum.ts b/resources/vue/src/enums/ResultEnum.ts new file mode 100644 index 0000000..2dff7c9 --- /dev/null +++ b/resources/vue/src/enums/ResultEnum.ts @@ -0,0 +1,18 @@ +/** + * 响应码枚举 + */ +export const enum ResultEnum { + /** + * 成功 + */ + SUCCESS = "00000", + /** + * 错误 + */ + ERROR = "B0001", + + /** + * 令牌无效或过期 + */ + TOKEN_INVALID = "A0230", +} diff --git a/resources/vue/src/enums/SidebarStatusEnum.ts b/resources/vue/src/enums/SidebarStatusEnum.ts new file mode 100644 index 0000000..a0d877a --- /dev/null +++ b/resources/vue/src/enums/SidebarStatusEnum.ts @@ -0,0 +1,14 @@ +/** + * 侧边栏状态枚举 + */ +export const enum SidebarStatusEnum { + /** + * 展开 + */ + OPENED = "opened", + + /** + * 关闭 + */ + CLOSED = "closed", +} diff --git a/resources/vue/src/enums/SizeEnum.ts b/resources/vue/src/enums/SizeEnum.ts new file mode 100644 index 0000000..e91e913 --- /dev/null +++ b/resources/vue/src/enums/SizeEnum.ts @@ -0,0 +1,19 @@ +/** + * 布局大小枚举 + */ +export const enum SizeEnum { + /** + * 默认 + */ + DEFAULT = "default", + + /** + * 大型 + */ + LARGE = "large", + + /** + * 小型 + */ + SMALL = "small", +} diff --git a/resources/vue/src/enums/ThemeEnum.ts b/resources/vue/src/enums/ThemeEnum.ts new file mode 100644 index 0000000..91458e1 --- /dev/null +++ b/resources/vue/src/enums/ThemeEnum.ts @@ -0,0 +1,18 @@ +/** + * 主题枚举 + */ +export const enum ThemeEnum { + /** + * 明亮主题 + */ + LIGHT = "light", + /** + * 暗黑主题 + */ + DARK = "dark", + + /** + * 系统自动 + */ + AUTO = "auto", +} diff --git a/resources/vue/src/lang/index.ts b/resources/vue/src/lang/index.ts new file mode 100644 index 0000000..4fe5034 --- /dev/null +++ b/resources/vue/src/lang/index.ts @@ -0,0 +1,32 @@ +import type { App } from "vue"; +import { createI18n } from "vue-i18n"; +import { useAppStoreHook } from "@/store/modules/app"; +// 本地语言包 +import enLocale from "./package/en"; +import zhCnLocale from "./package/zh-cn"; +import {GetI18nCfg} from "@/api/i18n"; + +const appStore = useAppStoreHook(); + +const messages = { + "zh-cn": { + ...zhCnLocale, + }, + en: { + ...enLocale, + }, +}; + +const i18n = createI18n({ + legacy: false, + locale: appStore.language, + messages: messages, + globalInjection: true, +}); + +// 全局注册 i18n +export function setupI18n(app: App) { + app.use(i18n); +} + +export default i18n; diff --git a/resources/vue/src/lang/package/en.ts b/resources/vue/src/lang/package/en.ts new file mode 100644 index 0000000..6e00531 --- /dev/null +++ b/resources/vue/src/lang/package/en.ts @@ -0,0 +1,350 @@ +export default { + // 路由国际化 + route: { + dashboard: "Dashboard", + document: "Document", + }, + // 登录页面国际化 + login: { + username: "Username", + password: "Password", + login: "Login", + captchaCode: "Verify Code", + capsLock: "Caps Lock is On", + message: { + username: { + required: "Please enter Username", + }, + password: { + required: "Please enter Password", + min: "The password can not be less than 6 digits", + }, + captchaCode: { + required: "Please enter Verify Code", + }, + }, + }, + // 导航栏国际化 + navbar: { + dashboard: "Dashboard", + logout: "Logout", + document: "Document", + gitee: "Gitee", + }, + sizeSelect: { + tooltip: "Layout Size", + default: "Default", + large: "Large", + small: "Small", + message: { + success: "Switch Layout Size Successful!", + }, + }, + langSelect: { + message: { + success: "Switch Language Successful!", + }, + }, + settings: { + project: "Project Settings", + theme: "Theme", + interface: "Interface", + navigation: "Navigation", + themeColor: "Theme Color", + tagsView: "Tags View", + fixedHeader: "Fixed Header", + sidebarLogo: "Sidebar Logo", + watermark: "Watermark", + }, + + "登录": "Login", + "记住密码": "Remember the password", + "首页": "home page", + "注销": "cancellation", + "权限": "jurisdiction", + "总分片数": "Total number of segments", + "成功的分片数": "Number of successful slices", + "失败的分片数": "Number of failed tiles", + "索引数": "Number of indexes", + "文档数": "Number of documents", + "索引所占空间大小": "Space occupied by index", + "刷新": "Refresh", + "角色管理": "Role management", + "新建角色": "New role", + "角色id": "Role ID", + "角色名": "Role name", + "角色详细信息": "Role details", + "操作": "operation", + "编辑": "edit", + "删除": "delete", + "用户管理": "user management", + "用户名": "user name", + "所属角色": "Role", + "真实姓名": "Real name", + "修改角色": "Modify role", + "全局字体大小": "Global font size", + "数据源管理": "Connection management", + "ES状态": "Es status", + "开发工具": "dev tool", + "索引管理": "Index management", + "重建索引": "Index reconstruction", + "任务": "task", + "备份": "backups", + "数据抽取": "Data extraction", + "快照存储库": "Snapshot repository", + "请选择ES连接": "Please select es connection", + "搜索路由": "Search routing", + "确定删除这个角色吗?": "Are you sure to delete this role?", + "警告": "warning", + "确定": "confirm", + "取消": "cancel", + "序号": "ID", + "角色详情信息": "Role details", + "菜单栏": "menu bar", + "全选": "Select all", + "数据库连接池最大空闲的连接数:": "maxIdleConns", + "数据库连接池最大打开的连接数(设置为0表示不限制):": "maxOpenConns", + "输入关键字进行过滤": "Enter keywords to filter", + "当前所选表字段": "当前所选表字段", + "接口权限设置": "Interface permission setting", + "恢复备份": "Restore backup", + "仓库名": "Warehouse name", + "快照名": "Snapshot name", + "需要备份的索引": "Index to be backed up", + "迁移别名到多个索引上": "Migrate aliases to multiple indexes", + "不设置": "Not set", + "是": "yes", + "否": "no", + "创建方式": "Creation method", + "异步创建": "Asynchronous creation", + "同步创建": "Synchronous creation", + "新增/修改快照存储库": "Add / modify snapshot repository", + "存储库名": "Repository name", + "大文件分解块大小": "Large file decomposition block size", + "是否只读": "Read only", + "节点恢复速率": "Node recovery rate", + "每个节点快照速率": "Snapshot rate per node", + "创建快照": "Create Snapshot", + "存储库": "memory pool", + "请选择存储库": "Please select a repository", + "制作快照的速度": "Speed at which snapshots are taken", + "密码": "password", + "备注": "remarks", + "版本": "version", + "创建时间": "Creation time", + "修改时间": "Modification time", + "新建连接信息": "New connection information", + "测试连接": "Test connection", + "编辑连接信息": "Edit connection information", + "查看索引信息": "View index information", + "显示别名,过滤器,路由信息": "Display alias, filter and routing information", + "显示每个节点分片数量、占用空间": "Displays the number of slices and occupied space of each node", + "显示索引文档的数量": "Displays the number of indexed documents", + "查看集群健康状况": "View cluster health", + "请输入关键词": "Please enter keywords", + "搜索": "search", + "索引健康状态": "Index health status", + "索引的开启状态": "Index on state", + "索引名称": "Index Name", + "索引uuid": "Index UUID", + "索引主分片数": "Number of index primary partitions", + "索引副本分片数量": "Number of index replica fragments", + "索引中文档总数": "Total number of documents in index", + "索引中删除状态的文档": "Delete documents in the index", + "主分片+副本分分片的大小": "Size of master slice + replica slice", + "主分片的大小": "Size of main partition", + "别名": "alias", + "索引别名指向": "Index alias points to", + "过滤器": "filter", + "索引路由": "Index routing", + "写索引": "Write index", + "节点host": "Node host", + "节点ip": "Node IP", + "节点名称": "Node name", + "节点承载分片数量": "Number of node bearing segments", + "索引占用空间大小": "Index footprint", + "节点所在机器已使用的磁盘空间大小": "The amount of disk space used by the machine where the node is located", + "节点可用空间大小": "Node free space size", + "节点总空间大小": "Total node space size", + "节点磁盘占用百分比": "Node disk occupancy percentage", + "自标准时间(1970-01-01 00:00:00)以来的秒数": "Seconds since standard time (1970-01-01 00:00:00)", + "时分秒,utc时区": "Hour, minute and second, UTC time zone", + "文档总数": "Total number of documents", + "集群名称": "Cluster name", + "集群状态": "Cluster status", + "节点总数": "Total number of nodes", + "数据节点总数": "Total number of data nodes", + "分片总数": "Total number of slices", + "主分片总数": "Total number of main segments", + "复制节点总数": "Total number of replication nodes", + "初始化节点总数": "Total number of initialization nodes", + "未分配分片总数": "Total number of unallocated tiles", + "待定任务总数": "Total number of pending tasks", + "等待最长任务的等待时间": "Waiting time for the longest task", + "活动分片百分比": "Active slice percentage", + "分片序号": "Slice serial number", + "分片类型(p为主分片,r为复制分片)": "Slice type (P is the main slice, R is the copy slice)", + "分片状态": "Fragment state", + "该分片存放的文档数量": "Number of documents stored in this partition", + "该分片占用的存储空间大小": "The amount of storage space occupied by the partition", + "该分片所在的服务器ip": "IP address of the server where the partition is located", + "该分片所在的节点名称": "The node name of the partition", + "显示索引分片信息": "Display index slice information", + "添加查询窗口": "Add query window", + "PUT【更新或创建】": "PUT【Create or Update】", + "GET【查询】": "GET【Search】", + "POST【创建】": "POST【Create】", + "HEAD【是否存在】": "Head [exists]", + "官方文档": "Official documents", + "SQL转换": "SQL conversion", + "搜索历史": "Search history", + "请选择索引名": "Please select index name", + "请筛选搜索时间": "Please filter the search time", + "时间范围": "time frame", + "清空": "empty", + "美化": "beautiful", + "点击复制": "copy", + "请求Body": "Req Body", + "返回信息": "Return information", + "提示": "Tips", + "请输入新窗口标题": "Please enter a new window title", + "开始转换为DSL": "Start converting to DSL", + "表名可用索引名代替": "Table names can be replaced by index names", + "请输入索引名": "Please enter index name", + "新建索引": "New index", + "将节点切换为可读写状态": "Switch the node to read-write state", + "将所有索引刷新到磁盘": "Flush all indexes to disk", + "关闭": "close", + "打开": "open", + "强制合并索引": "Force merge index", + "清理缓存": "Clean cache", + "删除索引": "Delete Index", + "刷新索引": "Refresh Index", + "将索引刷新到磁盘": "Flush index to disk", + "修改索引配置": "Modify index configuration", + "新增索引配置": "New index configuration", + "索引名称:": "Index name:", + "新增映射结构": "New mapping structure", + "让数据持久化到磁盘中": "Make data persistent to disk", + "修改配置": "Modify config", + "修改映射": "Modify mapping", + "更多": "more", + "为了让最新的数据可以立即被搜索到": "So that the latest data can be searched immediately", + "设置": "settings", + "映射": "mapping", + "编辑索引配置": "Edit index configuration", + "修改别名": "Modify alias", + "切换为其它索引的映射": "Switch to mapping of other indexes", + "【注意:只能新增映射字段不可修改映射字段类型】": "[Note: only mapping fields can be added, and the mapping field type cannot be modified]", + "修改": "update", + "提交": "submit", + "重置": "reset", + "新增别名": "add alias", + "批量提交": "Batch submission", + "编辑配置": "edit settings", + "【forcemerge操作,手动释放磁盘空间】": "[forcemerge operation, release disk space manually]", + "清空表单": "Empty form", + "确认重建索引": "Confirm Rebuild index", + "url参数": "URL parameter", + "索引": "Indexes", + "脚本": "script", + "额外参数": "Additional parameters", + "配置": "config", + "源索引": "Source index", + "目标索引": "Target index", + "行为": "behavior", + "任务ID": "task id", + "节点ID": "node id", + "索引文档总数": "Total number of indexed documents", + "父任务ID": "parent task id", + "查看": "look", + "任务详细ID": "Task detail ID", + "开始详细时间": "Start detailed time", + "节点": "node", + "状态": "status", + "类型": "type", + "运行时间(秒)": "Running time (seconds)", + "是否可撤销": "Revocable", + "描述": "desc", + "开始时间": "start time", + "开始时间(毫秒)": "Start time (MS)", + "任务详细信息": "Task details", + "快照管理": "snapshot manager", + "新建存储库": "New repository", + "类型(type)": "Type", + "存储库地址": "Repository address", + "是否压缩": "Whether to compress", + "分解块大小": "Exploded block size", + "是否只读(默认false)": "Read only (false by default)", + "快照恢复的速度": "Speed of snapshot recovery", + "新建快照": "New snapshot", + "确认": "Confirm", + "备份索引数": "Number of backup indexes", + "结束时间": "end time", + "结束详细时间": "End detailed time", + "耗费时长": "Time consuming", + "成功分片数": "Number of successful slices", + "失败分片数": "Number of fail slices", + "数据管理": "data management", + "索引结构": "index structure", + "索引设置": "Index settings", + "映射结构": "Mapping structure", + "显示该索引结构": "Displays the index structure", + "筛选": "where", + "排序": "order by", + "增加条件": "add where", + "增加排序": "add order by", + "操作列表": "Action list", + "数据源": "data source", + "新建数据抽取任务": "New data extraction task", + "表名": "Table name", + "索引名": "Index name", + "源数据条数": "Number of source data", + "已导入数据条数": "Number of imported data", + "定时任务": "Scheduled task", + "附带信息": "message", + "任务备注:": "Task remarks:", + "选择数据源:": "Select data source:", + "表字段:": "Table fields:", + "表名:": "Table name:", + "全部字段": "All fields", + "当前ES索引字段": "Current es index field", + "添加": "add to", + "移除": "remove", + "请操作字段": "Please operate the field", + "请先选择表字段": "Please select a table field first", + "字段映射:": "Field mapping", + "是否清空该索引重新导入数据:": "Clear the index and import data again", + "协程数:": "Gorontine Num", + "源数据库每次limit条数:": "Limit entries per time in the source database", + "es入库批次数量:": "Es receipt batch quantity", + "es入库轮循间隔时间:": "Es warehousing cycle interval", + "计划任务表达式:": "Scheduled task expression", + "计划任务表达式(若无需定时跑,则不填)": "Scheduled task expression (not required if regular running is not required)", + "索引名:": "Index name:", + "表名:": "Table name:", + "全部": "all", + "查询": "search", + "新增": "new", + "端口": "port", + "数据库名": "database", + "新增数据源": "New data source", + "数据源类型": "database type", + "新建用户": "new user", + "新建用户信息": "new user", + "编辑用户信息": "edit user", + "请选择角色": "Please select a role", + "历史记录": "history", + "保存/修改映射": "save mapping", + "动态映射": "true", + "静态映射": "false", + "严格映射": "strict", + "数据导入成功": "Data import succeeded", + "数据导入失败": "Data import failed", + "数据正在导入中...": "Data import in progress", + "数据导入任务取消": "Data import task canceled", + "操作日志列表": "Operation log list", + "鉴权管理": "Auth manage" + + +}; diff --git a/resources/vue/src/lang/package/zh-cn.ts b/resources/vue/src/lang/package/zh-cn.ts new file mode 100644 index 0000000..734d971 --- /dev/null +++ b/resources/vue/src/lang/package/zh-cn.ts @@ -0,0 +1,136 @@ +export default { + // 路由国际化 + route: { + dashboard: "首页", + document: "项目文档", + }, + // 登录页面国际化 + login: { + username: "用户名", + password: "密码", + login: "登 录", + captchaCode: "验证码", + capsLock: "大写锁定已打开", + message: { + username: { + required: "请输入用户名", + }, + password: { + required: "请输入密码", + min: "密码不能少于6位", + }, + captchaCode: { + required: "请输入验证码", + }, + }, + }, + // 导航栏国际化 + navbar: { + dashboard: "首页", + logout: "登出", + document: "文档", + homePage: "官网", + }, + sizeSelect: { + tooltip: "布局大小", + default: "默认", + large: "大型", + small: "小型", + message: { + success: "切换布局大小成功!", + }, + }, + langSelect: { + message: { + success: "切换语言成功!", + }, + }, + settings: { + project: "项目配置", + theme: "主题设置", + interface: "界面设置", + navigation: "导航设置", + themeColor: "主题颜色", + tagsView: "开启 Tags-View", + fixedHeader: "固定 Header", + sidebarLogo: "侧边栏 Logo", + watermark: "开启水印", + }, + "登录": "登录", + "记住密码": "记住密码", + "首页": "首页", + "权限": "权限", + "总分片数": "总分片数", + "成功的分片数": "成功的分片数", + "失败的分片数": "失败的分片数", + "索引数": "索引数", + "文档数": "文档数", + "索引所占空间大小": "索引所占空间大小", + "刷新": "刷新", + "角色管理": "角色管理", + "新建角色": "新建角色", + "角色id": "角色id", + "角色名": "角色名", + "角色详细信息": "角色详细信息", + "操作": "操作", + "编辑": "编辑", + "删除": "删除", + "用户管理": "用户管理", + "用户名": "用户名", + "所属角色": "所属角色", + "真实姓名": "真实姓名", + "修改角色": "修改角色", + "全局字体大小": "全局字体大小", + "数据源管理": "数据源管理", + "ES状态": "ES状态", + "开发工具": "开发工具", + "索引管理": "索引管理", + "重建索引": "重建索引", + "任务": "任务", + "备份": "备份", + "数据抽取": "数据抽取", + "操作列表": "操作列表", + "数据源": "数据源", + "快照存储库": "快照存储库", + "序号": "序号", + "菜单栏": "菜单栏", + "编辑用户信息": "编辑用户信息", + "新建用户信息": "新建用户信息", + "请选择角色": "请选择角色", + "新建连接信息": "新建连接信息", + "测试连接": "测试连接", + "注销": "注销", + "密码": "密码", + "备注": "备注", + "版本": "版本", + "创建时间": "创建时间", + "修改时间": "修改时间", + "查看索引信息": "查看索引信息", + "显示别名,过滤器,路由信息": "显示别名,过滤器,路由信息", + "显示每个节点分片数量、占用空间": "显示每个节点分片数量、占用空间", + "显示索引文档的数量": "显示索引文档的数量", + "查看集群健康状况": "查看集群健康状况", + "显示索引分片信息": "显示索引分片信息", + "请输入关键词": "请输入关键词", + "搜索": "搜索", + "索引健康状态": "索引健康状态", + "索引的开启状态": "索引的开启状态", + "索引名称": "索引名称", + "索引uuid": "索引uuid", + "索引主分片数": "索引主分片数", + "索引副本分片数量": "索引副本分片数量", + "索引中文档总数": "索引中文档总数", + "索引中删除状态的文档": "索引中删除状态的文档", + "请选择ES连接": "请选择ES连接", + "搜索路由": "搜索路由", + "确定删除这个角色吗?": "确定删除这个角色吗?", + "警告": "警告", + "确定": "确定", + "取消": "取消", + "角色详情信息": "角色详情信息", + "全选": "全选", + "输入关键字进行过滤": "输入关键字进行过滤", + "接口权限设置": "接口权限设置", + "操作日志列表": "操作日志列表", + "鉴权管理": "鉴权管理" +}; diff --git a/resources/vue/src/layout/components/AppMain/index.vue b/resources/vue/src/layout/components/AppMain/index.vue new file mode 100644 index 0000000..247d060 --- /dev/null +++ b/resources/vue/src/layout/components/AppMain/index.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/resources/vue/src/layout/components/NavBar/components/NavbarAction.vue b/resources/vue/src/layout/components/NavBar/components/NavbarAction.vue new file mode 100644 index 0000000..ee8868f --- /dev/null +++ b/resources/vue/src/layout/components/NavBar/components/NavbarAction.vue @@ -0,0 +1,270 @@ + + + diff --git a/resources/vue/src/layout/components/NavBar/index.vue b/resources/vue/src/layout/components/NavBar/index.vue new file mode 100644 index 0000000..c985c0b --- /dev/null +++ b/resources/vue/src/layout/components/NavBar/index.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/resources/vue/src/layout/components/Settings/components/LayoutSelect.vue b/resources/vue/src/layout/components/Settings/components/LayoutSelect.vue new file mode 100644 index 0000000..0b880c1 --- /dev/null +++ b/resources/vue/src/layout/components/Settings/components/LayoutSelect.vue @@ -0,0 +1,108 @@ + + + + + diff --git a/resources/vue/src/layout/components/Settings/components/ThemeColorPicker.vue b/resources/vue/src/layout/components/Settings/components/ThemeColorPicker.vue new file mode 100644 index 0000000..5a0d59c --- /dev/null +++ b/resources/vue/src/layout/components/Settings/components/ThemeColorPicker.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/resources/vue/src/layout/components/Settings/index.vue b/resources/vue/src/layout/components/Settings/index.vue new file mode 100644 index 0000000..2c90a84 --- /dev/null +++ b/resources/vue/src/layout/components/Settings/index.vue @@ -0,0 +1,212 @@ + + + + + + diff --git a/resources/vue/src/layout/components/Sidebar/components/SidebarLogo.vue b/resources/vue/src/layout/components/Sidebar/components/SidebarLogo.vue new file mode 100644 index 0000000..90fc081 --- /dev/null +++ b/resources/vue/src/layout/components/Sidebar/components/SidebarLogo.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/resources/vue/src/layout/components/Sidebar/components/SidebarMenu.vue b/resources/vue/src/layout/components/Sidebar/components/SidebarMenu.vue new file mode 100644 index 0000000..418c9cd --- /dev/null +++ b/resources/vue/src/layout/components/Sidebar/components/SidebarMenu.vue @@ -0,0 +1,66 @@ + + + + diff --git a/resources/vue/src/layout/components/Sidebar/components/SidebarMenuItem.vue b/resources/vue/src/layout/components/Sidebar/components/SidebarMenuItem.vue new file mode 100644 index 0000000..e45ec8d --- /dev/null +++ b/resources/vue/src/layout/components/Sidebar/components/SidebarMenuItem.vue @@ -0,0 +1,202 @@ + + + + diff --git a/resources/vue/src/layout/components/Sidebar/components/SidebarMenuItemTitle.vue b/resources/vue/src/layout/components/Sidebar/components/SidebarMenuItemTitle.vue new file mode 100644 index 0000000..06bfef1 --- /dev/null +++ b/resources/vue/src/layout/components/Sidebar/components/SidebarMenuItemTitle.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/resources/vue/src/layout/components/Sidebar/components/SidebarMixTopMenu.vue b/resources/vue/src/layout/components/Sidebar/components/SidebarMixTopMenu.vue new file mode 100644 index 0000000..5893f15 --- /dev/null +++ b/resources/vue/src/layout/components/Sidebar/components/SidebarMixTopMenu.vue @@ -0,0 +1,90 @@ + + + + diff --git a/resources/vue/src/layout/components/Sidebar/index.vue b/resources/vue/src/layout/components/Sidebar/index.vue new file mode 100644 index 0000000..59c6b6b --- /dev/null +++ b/resources/vue/src/layout/components/Sidebar/index.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/resources/vue/src/layout/components/TagsView/index.vue b/resources/vue/src/layout/components/TagsView/index.vue new file mode 100644 index 0000000..031d864 --- /dev/null +++ b/resources/vue/src/layout/components/TagsView/index.vue @@ -0,0 +1,448 @@ + + + + + diff --git a/resources/vue/src/layout/index.vue b/resources/vue/src/layout/index.vue new file mode 100644 index 0000000..31c701e --- /dev/null +++ b/resources/vue/src/layout/index.vue @@ -0,0 +1,303 @@ + + + + + diff --git a/resources/vue/src/main.ts b/resources/vue/src/main.ts new file mode 100644 index 0000000..e892d40 --- /dev/null +++ b/resources/vue/src/main.ts @@ -0,0 +1,55 @@ +import { createApp } from "vue"; +import App from "./App.vue"; +import setupPlugins from "@/plugins"; + +// 本地SVG图标 +import "virtual:svg-icons-register"; + +// 样式 +import "element-plus/theme-chalk/dark/css-vars.css"; +import "@/styles/index.scss"; +import "uno.css"; +import "animate.css"; + +//json view +import JsonViewer from "vue3-json-viewer"; +import "vue3-json-viewer/dist/index.css"; +import {GetI18nCfg} from "@/api/i18n"; +import i18n from "@/lang"; +import {createI18n} from "vue-i18n"; +import zhCnLocale from "@/lang/package/zh-cn"; +import enLocale from "@/lang/package/en"; // 引入样式 + + +const app = createApp(App); +app.use(setupPlugins); +app.use(JsonViewer) + +const loadMessages = async () => { + try { + + const res = await GetI18nCfg({}); + if(res.code == 0){ + if(res.data !=null) { + + const i18n = createI18n({ + legacy: false, + locale: window["lang"], + messages: res.data, + globalInjection: true, + }) + + app.use(i18n) + } + } + + // 挂载应用 + app.mount('#app'); + } catch (error) { + console.error('Failed to load messages:', error); + app.mount('#app'); // 即使加载失败,也需要挂载应用 + } +}; + + +loadMessages() diff --git a/resources/vue/src/plugins/icons.ts b/resources/vue/src/plugins/icons.ts new file mode 100644 index 0000000..fa85ba1 --- /dev/null +++ b/resources/vue/src/plugins/icons.ts @@ -0,0 +1,9 @@ +import type { App } from "vue"; +import * as ElementPlusIconsVue from "@element-plus/icons-vue"; + +// 注册所有图标 +export function setupElIcons(app: App) { + for (const [key, component] of Object.entries(ElementPlusIconsVue)) { + app.component(key, component); + } +} diff --git a/resources/vue/src/plugins/index.ts b/resources/vue/src/plugins/index.ts new file mode 100644 index 0000000..c64e7ad --- /dev/null +++ b/resources/vue/src/plugins/index.ts @@ -0,0 +1,24 @@ +import { setupDirective } from "@/directive"; +import { setupI18n } from "@/lang"; +import { setupRouter } from "@/router"; +import { setupStore } from "@/store"; +import type { App } from "vue"; +import { setupElIcons } from "./icons"; +import { setupPermission } from "./permission"; + +export default { + install(app: App) { + // 自定义指令(directive) + setupDirective(app); + // 路由(router) + setupRouter(app); + // 状态管理(store) + setupStore(app); + // 国际化 + //setupI18n(app); + // Element-plus图标 + setupElIcons(app); + // 路由守卫 + setupPermission(); + }, +}; diff --git a/resources/vue/src/plugins/permission.ts b/resources/vue/src/plugins/permission.ts new file mode 100644 index 0000000..83c6425 --- /dev/null +++ b/resources/vue/src/plugins/permission.ts @@ -0,0 +1,116 @@ +import { + NavigationGuardNext, + RouteLocationNormalized, + RouteRecordRaw, +} from "vue-router"; + +import NProgress from "@/utils/nprogress"; +import router from "@/router"; +import { usePermissionStore, useUserStore } from "@/store"; +import {RegisterMicroApps} from "@/utils/plugin"; + +import {getToken, removeToken} from "@/utils/auth"; + +export function setupPermission() { + // 白名单路由 + const whiteList = ["/login"]; + + router.beforeEach(async (to, from, next) => { + NProgress.start(); + const hasToken = getToken(); + + if (hasToken) { + if (to.path === "/login") { + // 如果已登录,跳转到首页 + next({ path: "/" }); + NProgress.done(); + } else { + const userStore = useUserStore(); + const hasRoles = + userStore.user.roles && userStore.user.roles.length > 0; + + if (hasRoles) { + console.log(userStore.user.roles ) + // 如果未匹配到任何路由,跳转到404页面 + if (to.matched.length === 0) { + next(from.name ? { name: from.name } : "/404"); + } else { + // 如果路由参数中有 title,覆盖路由元信息中的 title + const title = + (to.params.title as string) || (to.query.title as string); + if (title) { + to.meta.title = title; + } + next(); + } + } else { + const permissionStore = usePermissionStore(); + try { + await userStore.getUserInfo(); + const res = await permissionStore.generateRoutes(); + let dynamicRoutes = res.dynamicRoutes + let qiankunMicroApps = res.qiankunMicroApps + + dynamicRoutes.forEach((route: RouteRecordRaw) => + router.addRoute(route) + ); + + if(qiankunMicroApps !=null &&qiankunMicroApps.length >0){ + RegisterMicroApps(qiankunMicroApps) + } + + next({ ...to, replace: true }); + } catch (error) { + console.log("err",error) + // 移除 token 并重定向到登录页,携带当前页面路由作为跳转参数 + removeToken() + redirectToLogin(to, next); + NProgress.done(); + } + } + } + } else { + // 未登录 + if (whiteList.includes(to.path)) { + next(); // 在白名单,直接进入 + } else { + // 不在白名单,重定向到登录页 + redirectToLogin(to, next); + NProgress.done(); + } + } + }); + + router.afterEach(() => { + NProgress.done(); + }); +} + +/** 重定向到登录页 */ +function redirectToLogin( + to: RouteLocationNormalized, + next: NavigationGuardNext +) { + const params = new URLSearchParams(to.query as Record); + const queryString = params.toString(); + const redirect = queryString ? `${to.path}?${queryString}` : to.path; + next(`/login?redirect=${encodeURIComponent(redirect)}`); +} + +/** 判断是否有权限 */ +export function hasAuth( + value: string | string[], + type: "button" | "role" = "button" +) { + const { roles, perms } = useUserStore().user; + + // 超级管理员 拥有所有权限 + if (type === "button" && roles.includes("ROOT")) { + return true; + } + + const auths = type === "button" ? perms : roles; + return typeof value === "string" + ? auths.includes(value) + : value.some((perm) => auths.includes(perm)); +} diff --git a/resources/vue/src/router/index.ts b/resources/vue/src/router/index.ts new file mode 100644 index 0000000..ca00a81 --- /dev/null +++ b/resources/vue/src/router/index.ts @@ -0,0 +1,85 @@ +import type { App } from "vue"; +import { createRouter, createWebHashHistory, RouteRecordRaw } from "vue-router"; + +export const Layout = () => import("@/layout/index.vue"); + +// 静态路由 +export const constantRoutes: RouteRecordRaw[] = [ + { + path: "/redirect", + component: Layout, + meta: { hidden: true }, + children: [ + { + path: "/redirect/:path(.*)", + component: () => import("@/views/redirect/index.vue"), + meta: { hidden: true }, + }, + ], + }, + + { + path: "/login", + component: () => import("@/views/login/index.vue"), + meta: { hidden: true }, + }, + + { + path: "/", + name: "/", + component: Layout, + redirect: "/dashboard", + children: [ + { + path: "dashboard", + component: () => import("@/views/dashboard/index.vue"), + // 用于 keep-alive 功能,需要与 SFC 中自动推导或显式声明的组件名称一致 + // 参考文档: https://cn.vuejs.org/guide/built-ins/keep-alive.html#include-exclude + name: "Dashboard", + meta: { + title: "首页", + icon: "homepage", + affix: true, + keepAlive: true, + }, + }, + + { + path: "401", + component: () => import("@/views/error-page/401.vue"), + meta: { hidden: true }, + }, + { + path: "404", + component: () => import("@/views/error-page/404.vue"), + meta: { hidden: true }, + }, + ], + }, + +]; + +/** + * 创建路由 + */ +const router = createRouter({ + history: createWebHashHistory(), + routes: constantRoutes, + // 刷新时,滚动条位置还原 + scrollBehavior: () => ({ left: 0, top: 0 }), +}); + +// 全局注册 router +export function setupRouter(app: App) { + app.use(router); +} + +/** + * 重置路由 + */ +export function resetRouter() { + router.replace({ path: "/login" }); +} + + +export default router; diff --git a/resources/vue/src/settings.ts b/resources/vue/src/settings.ts new file mode 100644 index 0000000..e25fef2 --- /dev/null +++ b/resources/vue/src/settings.ts @@ -0,0 +1,26 @@ +import { SizeEnum } from "./enums/SizeEnum"; +import { LayoutEnum } from "./enums/LayoutEnum"; +import { ThemeEnum } from "./enums/ThemeEnum"; +import { LanguageEnum } from "./enums/LanguageEnum"; + +const { pkg } = __APP_INFO__; + +const mediaQueryList = window.matchMedia("(prefers-color-scheme: dark)"); + +const defaultSettings: AppSettings = { + title: pkg.name, + version: pkg.version, + showSettings: true, + tagsView: true, + fixedHeader: true, + sidebarLogo: true, + layout: LayoutEnum.LEFT, + theme: mediaQueryList.matches ? ThemeEnum.DARK : ThemeEnum.LIGHT, + size: SizeEnum.DEFAULT, + language: LanguageEnum.ZH_CN, + themeColor: "#409EFF", + watermarkEnabled: false, + watermarkContent: pkg.name, +}; + +export default defaultSettings; diff --git a/resources/vue/src/store/index.ts b/resources/vue/src/store/index.ts new file mode 100644 index 0000000..8dd6ea9 --- /dev/null +++ b/resources/vue/src/store/index.ts @@ -0,0 +1,16 @@ +import type { App } from "vue"; +import { createPinia } from "pinia"; + +const store = createPinia(); + +// 全局注册 store +export function setupStore(app: App) { + app.use(store); +} + +export * from "./modules/app"; +export * from "./modules/permission"; +export * from "./modules/settings"; +export * from "./modules/tagsView"; +export * from "./modules/user"; +export { store }; diff --git a/resources/vue/src/store/modules/app.ts b/resources/vue/src/store/modules/app.ts new file mode 100644 index 0000000..13a42b6 --- /dev/null +++ b/resources/vue/src/store/modules/app.ts @@ -0,0 +1,109 @@ +import defaultSettings from "@/settings"; + +// 导入 Element Plus 中英文语言包 +import zhCn from "element-plus/es/locale/lang/zh-cn"; +import en from "element-plus/es/locale/lang/en"; +import { store } from "@/store"; +import { DeviceEnum } from "@/enums/DeviceEnum"; +import { SidebarStatusEnum } from "@/enums/SidebarStatusEnum"; + +export const useAppStore = defineStore("app", () => { + // 设备类型 + const device = useStorage("device", DeviceEnum.DESKTOP); + // 布局大小 + const size = useStorage("size", defaultSettings.size); + // 语言 + const language = window["lang"] //useStorage("language", defaultSettings.language); + // 侧边栏状态 + const sidebarStatus = useStorage("sidebarStatus", SidebarStatusEnum.CLOSED); + const sidebar = reactive({ + opened: sidebarStatus.value === SidebarStatusEnum.OPENED, + withoutAnimation: false, + }); + + // 顶部菜单激活路径 + const activeTopMenuPath = useStorage("activeTopMenuPath", ""); + + /** + * 根据语言标识读取对应的语言包 + */ + const locale = computed(() => { + if (language == "en") { + return en; + } else { + return zhCn; + } + }); + + // 切换侧边栏 + function toggleSidebar() { + sidebar.opened = !sidebar.opened; + sidebarStatus.value = sidebar.opened + ? SidebarStatusEnum.OPENED + : SidebarStatusEnum.CLOSED; + } + + // 关闭侧边栏 + function closeSideBar() { + sidebar.opened = false; + sidebarStatus.value = SidebarStatusEnum.CLOSED; + } + + // 打开侧边栏 + function openSideBar() { + sidebar.opened = true; + sidebarStatus.value = SidebarStatusEnum.OPENED; + } + + // 切换设备 + function toggleDevice(val: string) { + device.value = val; + } + + /** + * 改变布局大小 + * + * @param val 布局大小 default | small | large + */ + function changeSize(val: string) { + size.value = val; + } + /** + * 切换语言 + * + * @param val + */ + function changeLanguage(val: string) { + language.value = val; + } + /** + * 混合模式顶部切换 + */ + function activeTopMenu(val: string) { + activeTopMenuPath.value = val; + } + return { + device, + sidebar, + language, + locale, + size, + activeTopMenu, + toggleDevice, + changeSize, + changeLanguage, + toggleSidebar, + closeSideBar, + openSideBar, + activeTopMenuPath, + }; +}); + +/** + * 用于在组件外部(如在Pinia Store 中)使用 Pinia 提供的 store 实例。 + * 官方文档解释了如何在组件外部使用 Pinia Store: + * https://pinia.vuejs.org/core-concepts/outside-component-usage.html#using-a-store-outside-of-a-component + */ +export function useAppStoreHook() { + return useAppStore(store); +} diff --git a/resources/vue/src/store/modules/permission.ts b/resources/vue/src/store/modules/permission.ts new file mode 100644 index 0000000..ace7866 --- /dev/null +++ b/resources/vue/src/store/modules/permission.ts @@ -0,0 +1,148 @@ +import { RouteRecordRaw } from "vue-router"; +import { constantRoutes } from "@/router"; +import { store } from "@/store"; +import MenuAPI, { RouteVO } from "@/api/menu"; +import {asyncRoutes} from "@/utils/asyncRoutes"; +import path from "path-browserify"; + +const modules = import.meta.glob("../../views/**/**.vue"); +const Layout = () => import("@/layout/index.vue"); + +const generateRoutes = (routes, basePath = '/')=> { + const res = [] + + for (let route of routes) { + if (route.hidden && !route.service) { + continue + } + + const onlyOneShowingChild = onlyOneShowingChildFn(route.children, route) + + if (route.children && route.children.length > 0 && onlyOneShowingChild && !route.alwaysShow) { + route = onlyOneShowingChild + } + + const data = { + path: path.resolve(basePath, route.path), + title: route.meta && route.meta.title + } + + if (route.children && route.children.length >0 ) { + + data.children = generateRoutes(route.children, data.path) + } + res.push(data) + } + return res +} + +export const usePermissionStore = defineStore("permission", () => { + /** + * 应用中所有的路由列表,包括静态路由和动态路由 + */ + const routes = ref([]); + /** + * 混合模式左侧菜单列表 + */ + const mixLeftMenus = ref([]); + + /** + * 生成动态路由 + */ + function generateRoutes() { + return new Promise((resolve, reject) => { + MenuAPI.getRoutes({baseRoutes:asyncRoutes}) + .then((res) => { + + if (res.code !== 0) { + ElMessage.error(res.msg) + return + } + + let evDownloadUrl = res.data.evDownloadUrl + let evLatestVersion = res.data.evLatestVersion + let evUpdateAvailable = res.data.evUpdateAvailable + + if (evUpdateAvailable) { + ElNotification({ + title: `您的Ev落后于官网最新版本:${evLatestVersion}`, + dangerouslyUseHTMLString: true, + message: ' 点我前往下载页面', + }) + } + + let data = JSON.parse(res.data.list) + + const dynamicRoutes = transformRoutes(data); + routes.value = constantRoutes.concat(dynamicRoutes); + resolve({ + dynamicRoutes:dynamicRoutes, + qiankunMicroApps:res.data.qiankunMicroApps + }); + }) + .catch((error) => { + reject(error); + }); + }); + } + + /** + * 混合模式菜单下根据顶部菜单路径设置左侧菜单 + * + * @param topMenuPath - 顶部菜单路径 + */ + const setMixLeftMenus = (topMenuPath: string) => { + const matchedItem = routes.value.find((item) => item.path === topMenuPath); + if (matchedItem && matchedItem.children) { + mixLeftMenus.value = matchedItem.children; + } + }; + + return { + routes, + generateRoutes, + mixLeftMenus, + setMixLeftMenus, + }; +}); + +/** + * 转换路由数据为组件 + */ +const transformRoutes = (routes: RouteVO[]) => { + const asyncRoutes: RouteRecordRaw[] = []; + routes.forEach((route) => { + const tmpRoute = { ...route } as RouteRecordRaw; + // 顶级目录,替换为 Layout 组件 + if (tmpRoute.component?.toString().toLowerCase() == "layout") { + tmpRoute.component = Layout; + } else { + let component = null + // 其他菜单,根据组件路径动态加载组件 + if (tmpRoute.component && tmpRoute.component!=''){ + component = modules[`../../${tmpRoute.component}.vue`]; + } + + if (component) { + tmpRoute.component = component; + } + } + + if (tmpRoute.children) { + tmpRoute.children = transformRoutes(route.children); + } + + asyncRoutes.push(tmpRoute); + }); + + return asyncRoutes; +}; + +/** + * 用于在组件外部(如在Pinia Store 中)使用 Pinia 提供的 store 实例。 + * 官方文档解释了如何在组件外部使用 Pinia Store: + * https://pinia.vuejs.org/core-concepts/outside-component-usage.html#using-a-store-outside-of-a-component + */ +export function usePermissionStoreHook() { + return usePermissionStore(store); +} diff --git a/resources/vue/src/store/modules/settings.ts b/resources/vue/src/store/modules/settings.ts new file mode 100644 index 0000000..90a0d18 --- /dev/null +++ b/resources/vue/src/store/modules/settings.ts @@ -0,0 +1,130 @@ +import defaultSettings from "@/settings"; +import { ThemeEnum } from "@/enums/ThemeEnum"; +import Color from "color"; +import {store, useAppStore} from "@/store"; + +type SettingsValue = boolean | string; + +export const useSettingsStore = defineStore("setting", () => { + // 是否显示设置 + const settingsVisible = ref(false); + // 是否显示标签视图 + const tagsView = useStorage("tagsView", defaultSettings.tagsView); + // 是否显示侧边栏logo + const sidebarLogo = useStorage( + "sidebarLogo", + defaultSettings.sidebarLogo + ); + // 是否固定头部 + const fixedHeader = useStorage( + "fixedHeader", + defaultSettings.fixedHeader + ); + // 布局模式:left-左侧模式(默认) top-顶部模式 mix-混合模式 + const layout = useStorage("layout", defaultSettings.layout); + // 主题颜色 + const themeColor = useStorage( + "themeColor", + defaultSettings.themeColor + ); + // 主题:light-亮色(默认) dark-暗色 + const theme = useStorage("theme", defaultSettings.theme); + // 是否开启水印 + const watermarkEnabled = useStorage( + "watermarkEnabled", + defaultSettings.watermarkEnabled + ); + + watch( + [theme, themeColor], + ([newTheme, newThemeColor], [oldTheme, oldThemeColor]) => { + if (newTheme !== oldTheme) { + if (newTheme === ThemeEnum.DARK) { + document.documentElement.classList.add("dark"); + } else { + document.documentElement.classList.remove("dark"); + } + } + + if (newThemeColor !== oldThemeColor) { + const rootStyle = document.documentElement.style; + rootStyle.setProperty(`--el-color-primary`, newThemeColor); + rootStyle.setProperty(`--el-color-primary-dark-2`, newThemeColor); + + for (let i = 1; i < 10; i++) { + rootStyle.setProperty( + `--el-color-primary-light-${i}`, + `${Color(newThemeColor).alpha(1 - i * 0.1)}` + ); + } + } + }, + { + immediate: true, // 立即执行,确保在侦听器创建时执行一次 + } + ); + + const settingsMap: Record> = { + fixedHeader, + tagsView, + sidebarLogo, + layout, + watermarkEnabled, + }; + + function changeSetting({ + key, + value, + }: { + key: string; + value: SettingsValue; + }) { + const setting = settingsMap[key]; + if (setting) { + setting.value = value; + } + } + + /** + * 切换主题 + */ + function changeTheme(val: string) { + theme.value = val; + } + + /** + * 切换主题颜色 + * + * @param color 主题颜色 + * + */ + function changeThemeColor(color: string) { + themeColor.value = color; + } + + /** + * 切换布局 + */ + function changeLayout(val: string) { + layout.value = val; + } + + return { + settingsVisible, + tagsView, + fixedHeader, + sidebarLogo, + layout, + themeColor, + theme, + watermarkEnabled, + changeSetting, + changeTheme, + changeThemeColor, + changeLayout, + }; +}); + +export function useSettingsStoreHook() { + return useSettingsStore(store); +} diff --git a/resources/vue/src/store/modules/tagsView.ts b/resources/vue/src/store/modules/tagsView.ts new file mode 100644 index 0000000..a92e4fe --- /dev/null +++ b/resources/vue/src/store/modules/tagsView.ts @@ -0,0 +1,253 @@ +export const useTagsViewStore = defineStore("tagsView", () => { + const visitedViews = ref([]); + const cachedViews = ref([]); + const router = useRouter(); + const route = useRoute(); + /** + * 添加已访问视图到已访问视图列表中 + */ + function addVisitedView(view: TagView) { + // 如果已经存在于已访问的视图列表中,则不再添加 + if (visitedViews.value.some((v) => v.path === view.path)) { + return; + } + // 如果视图是固定的(affix),则在已访问的视图列表的开头添加 + if (view.affix) { + visitedViews.value.unshift(view); + } else { + // 如果视图不是固定的,则在已访问的视图列表的末尾添加 + visitedViews.value.push(view); + } + } + + /** + * 添加缓存视图到缓存视图列表中 + */ + function addCachedView(view: TagView) { + const viewName = view.name; + // 如果缓存视图名称已经存在于缓存视图列表中,则不再添加 + if (cachedViews.value.includes(viewName)) { + return; + } + + // 如果视图需要缓存(keepAlive),则将其路由名称添加到缓存视图列表中 + if (view.keepAlive) { + cachedViews.value.push(viewName); + } + } + + /** + * 从已访问视图列表中删除指定的视图 + */ + function delVisitedView(view: TagView) { + return new Promise((resolve) => { + for (const [i, v] of visitedViews.value.entries()) { + // 找到与指定视图路径匹配的视图,在已访问视图列表中删除该视图 + if (v.path === view.path) { + visitedViews.value.splice(i, 1); + break; + } + } + resolve([...visitedViews.value]); + }); + } + + function delCachedView(view: TagView) { + const viewName = view.name; + return new Promise((resolve) => { + const index = cachedViews.value.indexOf(viewName); + index > -1 && cachedViews.value.splice(index, 1); + resolve([...cachedViews.value]); + }); + } + + function delOtherVisitedViews(view: TagView) { + return new Promise((resolve) => { + visitedViews.value = visitedViews.value.filter((v) => { + return v?.affix || v.path === view.path; + }); + resolve([...visitedViews.value]); + }); + } + + function delOtherCachedViews(view: TagView) { + const viewName = view.name as string; + return new Promise((resolve) => { + const index = cachedViews.value.indexOf(viewName); + if (index > -1) { + cachedViews.value = cachedViews.value.slice(index, index + 1); + } else { + // if index = -1, there is no cached tags + cachedViews.value = []; + } + resolve([...cachedViews.value]); + }); + } + + function updateVisitedView(view: TagView) { + for (let v of visitedViews.value) { + if (v.path === view.path) { + v = Object.assign(v, view); + break; + } + } + } + + function addView(view: TagView) { + addVisitedView(view); + addCachedView(view); + } + + function delView(view: TagView) { + return new Promise((resolve) => { + delVisitedView(view); + delCachedView(view); + resolve({ + visitedViews: [...visitedViews.value], + cachedViews: [...cachedViews.value], + }); + }); + } + + function delOtherViews(view: TagView) { + return new Promise((resolve) => { + delOtherVisitedViews(view); + delOtherCachedViews(view); + resolve({ + visitedViews: [...visitedViews.value], + cachedViews: [...cachedViews.value], + }); + }); + } + + function delLeftViews(view: TagView) { + return new Promise((resolve) => { + const currIndex = visitedViews.value.findIndex( + (v) => v.path === view.path + ); + if (currIndex === -1) { + return; + } + visitedViews.value = visitedViews.value.filter((item, index) => { + if (index >= currIndex || item?.affix) { + return true; + } + + const cacheIndex = cachedViews.value.indexOf(item.name); + if (cacheIndex > -1) { + cachedViews.value.splice(cacheIndex, 1); + } + return false; + }); + resolve({ + visitedViews: [...visitedViews.value], + }); + }); + } + function delRightViews(view: TagView) { + return new Promise((resolve) => { + const currIndex = visitedViews.value.findIndex( + (v) => v.path === view.path + ); + if (currIndex === -1) { + return; + } + visitedViews.value = visitedViews.value.filter((item, index) => { + if (index <= currIndex || item?.affix) { + return true; + } + }); + resolve({ + visitedViews: [...visitedViews.value], + }); + }); + } + + function delAllViews() { + return new Promise((resolve) => { + const affixTags = visitedViews.value.filter((tag) => tag?.affix); + visitedViews.value = affixTags; + cachedViews.value = []; + resolve({ + visitedViews: [...visitedViews.value], + cachedViews: [...cachedViews.value], + }); + }); + } + + function delAllVisitedViews() { + return new Promise((resolve) => { + const affixTags = visitedViews.value.filter((tag) => tag?.affix); + visitedViews.value = affixTags; + resolve([...visitedViews.value]); + }); + } + + function delAllCachedViews() { + return new Promise((resolve) => { + cachedViews.value = []; + resolve([...cachedViews.value]); + }); + } + + /** + * 关闭当前tagView + */ + function closeCurrentView() { + const tags: TagView = { + name: route.name as string, + title: route.meta.title as string, + path: route.path, + fullPath: route.fullPath, + affix: route.meta?.affix, + keepAlive: route.meta?.keepAlive, + query: route.query, + }; + delView(tags).then((res: any) => { + if (isActive(tags)) { + toLastView(res.visitedViews, tags); + } + }); + } + function isActive(tag: TagView) { + return tag.path === route.path; + } + + function toLastView(visitedViews: TagView[], view?: TagView) { + const latestView = visitedViews.slice(-1)[0]; + if (latestView && latestView.fullPath) { + router.push(latestView.fullPath); + } else { + // now the default is to redirect to the home page if there is no tags-view, + // you can adjust it according to your needs. + if (view?.name === "Dashboard") { + // to reload home page + router.replace("/redirect" + view.fullPath); + } else { + router.push("/"); + } + } + } + return { + visitedViews, + cachedViews, + addVisitedView, + addCachedView, + delVisitedView, + delCachedView, + delOtherVisitedViews, + delOtherCachedViews, + updateVisitedView, + addView, + delView, + delOtherViews, + delLeftViews, + delRightViews, + delAllViews, + delAllVisitedViews, + delAllCachedViews, + closeCurrentView, + isActive, + toLastView, + }; +}); diff --git a/resources/vue/src/store/modules/user.ts b/resources/vue/src/store/modules/user.ts new file mode 100644 index 0000000..bed1a7e --- /dev/null +++ b/resources/vue/src/store/modules/user.ts @@ -0,0 +1,90 @@ +import AuthAPI, { LoginData } from "@/api/auth"; +import UserAPI, { UserInfo } from "@/api/user"; +import { resetRouter } from "@/router"; +import { store } from "@/store"; + +import { TOKEN_KEY } from "@/enums/CacheEnum"; +import {removeToken} from "@/utils/auth"; + +export const useUserStore = defineStore("user", () => { + const user = ref({ + roles:[], + avatar:'' + }); + + /** + * 登录 + * + * @param {LoginData} + * @returns + */ + function login(loginData: LoginData) { + return new Promise((resolve, reject) => { + + AuthAPI.login(loginData) + .then((res) => { + resolve(res); + }) + .catch((error) => { + reject(error); + }); + }); + } + + // 获取信息(用户昵称、头像、角色集合、权限集合) + function getUserInfo() { + return new Promise((resolve, reject) => { + UserAPI.getInfo() + .then((res) => { + Object.assign(user.value, { ...res.data }); + console.log("user",user.value) + resolve(res); + }) + .catch((error) => { + reject(error); + }); + }); + } + + // user logout + function logout() { + return new Promise((resolve, reject) => { + AuthAPI.logout() + .then(() => { + removeToken() + location.reload(); // 清空路由 + resolve(); + }) + .catch((error) => { + reject(error); + }); + }); + } + + // remove token + function resetToken() { + console.log("resetToken"); + return new Promise((resolve) => { + localStorage.setItem(TOKEN_KEY, ""); + resetRouter(); + resolve(); + }); + } + + return { + user, + login, + getUserInfo, + logout, + resetToken, + }; +}); + +/** + * 用于在组件外部(如在Pinia Store 中)使用 Pinia 提供的 store 实例。 + * 官方文档解释了如何在组件外部使用 Pinia Store: + * https://pinia.vuejs.org/core-concepts/outside-component-usage.html#using-a-store-outside-of-a-component + */ +export function useUserStoreHook() { + return useUserStore(store); +} diff --git a/resources/vue/src/styles/index.scss b/resources/vue/src/styles/index.scss new file mode 100644 index 0000000..b431308 --- /dev/null +++ b/resources/vue/src/styles/index.scss @@ -0,0 +1,28 @@ +@use "./reset"; + +.app-container { + padding: 15px; +} + +.search-container { + padding: 18px 0 0 10px; + margin-bottom: 10px; + background-color: var(--el-bg-color-overlay); + border: 1px solid var(--el-border-color-light); + border-radius: 4px; + box-shadow: var(--el-box-shadow-light); +} + +.table-container > .el-card__header { + padding: calc(var(--el-card-padding) - 8px) var(--el-card-padding); +} + +.link-type, +.link-type:focus { + color: #337ab7; + cursor: pointer; + + &:hover { + color: rgb(32 160 255); + } +} diff --git a/resources/vue/src/styles/login.scss b/resources/vue/src/styles/login.scss new file mode 100644 index 0000000..ede3489 --- /dev/null +++ b/resources/vue/src/styles/login.scss @@ -0,0 +1,81 @@ +.login-container { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + height: 100%; + overflow-y: auto; + background: url("@/assets/images/login-background-light.jpg") no-repeat center + right; + + .top-bar { + position: absolute; + top: 0; + left: 0; + display: flex; + align-items: center; + justify-content: flex-end; + width: 100%; + padding: 10px; + } + + .login-card { + width: 400px; + background: transparent; + border: none; + border-radius: 4%; + + @media (width <= 640px) { + width: 340px; + } + + .input-wrapper { + display: flex; + align-items: center; + width: 100%; + } + + .captcha-image { + height: 48px; + cursor: pointer; + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; + } + } + + .icp-info { + position: absolute; + bottom: 4px; + font-size: 12px; + text-align: center; + } + + .el-form-item { + background: var(--el-input-bg-color); + border: 1px solid var(--el-border-color); + border-radius: 5px; + } + + .el-input { + .el-input__wrapper { + padding: 0; + background-color: transparent; + box-shadow: none; + + &.is-focus, + &:hover { + box-shadow: none !important; + } + + input:-webkit-autofill { + /* 通过延时渲染背景色变相去除背景颜色 */ + transition: background-color 1000s ease-in-out 0s; + } + } + } +} + +html.dark .login-container { + background: url("@/assets/images/login-background-dark.jpg") no-repeat center + right; +} diff --git a/resources/vue/src/styles/reset.scss b/resources/vue/src/styles/reset.scss new file mode 100644 index 0000000..a20f04a --- /dev/null +++ b/resources/vue/src/styles/reset.scss @@ -0,0 +1,76 @@ +*, +::before, +::after { + box-sizing: border-box; + border-color: currentcolor; + border-style: solid; + border-width: 0; +} + +#app { + width: 100%; + height: 100%; +} + +html { + box-sizing: border-box; + width: 100%; + height: 100%; + line-height: 1.5; + tab-size: 4; + text-size-adjust: 100%; +} + +body { + width: 100%; + height: 100%; + margin: 0; + font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", + "Microsoft YaHei", "微软雅黑", Arial, sans-serif; + line-height: inherit; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + text-rendering: optimizelegibility; +} + +a { + color: inherit; + text-decoration: inherit; +} + +img, +svg { + display: inline-block; +} + +svg { + // 因icon大小被设置为和字体大小一致,而span等标签的下边缘会和字体的基线对齐,故需设置一个往下的偏移比例,来纠正视觉上的未对齐效果 + vertical-align: -0.15em; +} + +ul, +li { + padding: 0; + margin: 0; + list-style: none; +} + +*, +*::before, +*::after { + box-sizing: inherit; +} + +a, +a:focus, +a:hover { + color: inherit; + text-decoration: none; + cursor: pointer; +} + +a:focus, +a:active, +div:focus { + outline: none; +} diff --git a/resources/vue/src/styles/variables.module.scss b/resources/vue/src/styles/variables.module.scss new file mode 100644 index 0000000..20a624d --- /dev/null +++ b/resources/vue/src/styles/variables.module.scss @@ -0,0 +1,11 @@ +/* stylelint-disable property-no-unknown */ +:export { + sidebar-width: $sidebar-width; + navbar-height: $navbar-height; + tags-view-height: $tags-view-height; + menu-background: $menu-background; + menu-text: $menu-text; + menu-active-text: $menu-active-text; + menu-hover: $menu-hover; +} +/* stylelint-enable property-no-unknown */ diff --git a/resources/vue/src/styles/variables.scss b/resources/vue/src/styles/variables.scss new file mode 100644 index 0000000..e0d498a --- /dev/null +++ b/resources/vue/src/styles/variables.scss @@ -0,0 +1,36 @@ +/** 全局SCSS变量 */ + + + +:root { + --menu-background: #304156; + --menu-text: #bfcbd9; + --menu-active-text: var(--el-menu-active-color); + --menu-hover: #263445; + --sidebar-logo-background: #2d3748; + + // 修复表格 fixed 列被选中后由于透明色导致叠字的 bug + .el-table { + --el-table-current-row-bg-color: rgb(235 243 250); + } +} + +/** 暗黑主题 */ +html.dark { + --menu-background: var(--el-bg-color-overlay); + --menu-text: #fff; + --menu-active-text: var(--el-menu-active-color); + --menu-hover: rgb(0 0 0 / 20%); + --sidebar-logo-background: rgb(0 0 0 / 20%); +} + +$menu-background: var(--menu-background); // 菜单背景色 +$menu-text: var(--menu-text); // 菜单文字颜色 +$menu-active-text: var(--menu-active-text); // 菜单激活文字颜色 +$menu-hover: var(--menu-hover); // 菜单悬停背景色 +$sidebar-logo-background: var(--sidebar-logo-background); // 侧边栏 Logo 背景色 + +$sidebar-width: 210px; // 侧边栏宽度 +$sidebar-width-collapsed: 54px; // 侧边栏收缩宽度 +$navbar-height: 50px; // 导航栏高度 +$tags-view-height: 34px; // TagsView 高度 diff --git a/resources/vue/src/types/auto-imports.d.ts b/resources/vue/src/types/auto-imports.d.ts new file mode 100644 index 0000000..f4a814d --- /dev/null +++ b/resources/vue/src/types/auto-imports.d.ts @@ -0,0 +1,1780 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// noinspection JSUnusedGlobalSymbols +// Generated by unplugin-auto-import +export {} +declare global { + const EffectScope: (typeof import("vue"))["EffectScope"]; + const ElForm: (typeof import("element-plus/es"))["ElForm"]; + const ElMessage: (typeof import("element-plus/es"))["ElMessage"]; + const ElMessageBox: (typeof import("element-plus/es"))["ElMessageBox"]; + const ElNotification: (typeof import("element-plus/es"))["ElNotification"]; + const ElTree: (typeof import("element-plus/es"))["ElTree"]; + const acceptHMRUpdate: (typeof import("pinia"))["acceptHMRUpdate"]; + const asyncComputed: (typeof import("@vueuse/core"))["asyncComputed"]; + const autoResetRef: (typeof import("@vueuse/core"))["autoResetRef"]; + const computed: (typeof import("vue"))["computed"]; + const computedAsync: (typeof import("@vueuse/core"))["computedAsync"]; + const computedEager: (typeof import("@vueuse/core"))["computedEager"]; + const computedInject: (typeof import("@vueuse/core"))["computedInject"]; + const computedWithControl: (typeof import("@vueuse/core"))["computedWithControl"]; + const controlledComputed: (typeof import("@vueuse/core"))["controlledComputed"]; + const controlledRef: (typeof import("@vueuse/core"))["controlledRef"]; + const createApp: (typeof import("vue"))["createApp"]; + const createEventHook: (typeof import("@vueuse/core"))["createEventHook"]; + const createGlobalState: (typeof import("@vueuse/core"))["createGlobalState"]; + const createInjectionState: (typeof import("@vueuse/core"))["createInjectionState"]; + const createPinia: (typeof import("pinia"))["createPinia"]; + const createReactiveFn: (typeof import("@vueuse/core"))["createReactiveFn"]; + const createReusableTemplate: (typeof import("@vueuse/core"))["createReusableTemplate"]; + const createSharedComposable: (typeof import("@vueuse/core"))["createSharedComposable"]; + const createTemplatePromise: (typeof import("@vueuse/core"))["createTemplatePromise"]; + const createUnrefFn: (typeof import("@vueuse/core"))["createUnrefFn"]; + const customRef: (typeof import("vue"))["customRef"]; + const debouncedRef: (typeof import("@vueuse/core"))["debouncedRef"]; + const debouncedWatch: (typeof import("@vueuse/core"))["debouncedWatch"]; + const defineAsyncComponent: (typeof import("vue"))["defineAsyncComponent"]; + const defineComponent: (typeof import("vue"))["defineComponent"]; + const defineStore: (typeof import("pinia"))["defineStore"]; + const eagerComputed: (typeof import("@vueuse/core"))["eagerComputed"]; + const effectScope: (typeof import("vue"))["effectScope"]; + const extendRef: (typeof import("@vueuse/core"))["extendRef"]; + const getActivePinia: (typeof import("pinia"))["getActivePinia"]; + const getCurrentInstance: (typeof import("vue"))["getCurrentInstance"]; + const getCurrentScope: (typeof import("vue"))["getCurrentScope"]; + const h: (typeof import("vue"))["h"]; + const ignorableWatch: (typeof import("@vueuse/core"))["ignorableWatch"]; + const inject: (typeof import("vue"))["inject"]; + const injectLocal: (typeof import("@vueuse/core"))["injectLocal"]; + const isDefined: (typeof import("@vueuse/core"))["isDefined"]; + const isProxy: (typeof import("vue"))["isProxy"]; + const isReactive: (typeof import("vue"))["isReactive"]; + const isReadonly: (typeof import("vue"))["isReadonly"]; + const isRef: (typeof import("vue"))["isRef"]; + const makeDestructurable: (typeof import("@vueuse/core"))["makeDestructurable"]; + const mapActions: (typeof import("pinia"))["mapActions"]; + const mapGetters: (typeof import("pinia"))["mapGetters"]; + const mapState: (typeof import("pinia"))["mapState"]; + const mapStores: (typeof import("pinia"))["mapStores"]; + const mapWritableState: (typeof import("pinia"))["mapWritableState"]; + const markRaw: (typeof import("vue"))["markRaw"]; + const nextTick: (typeof import("vue"))["nextTick"]; + const onActivated: (typeof import("vue"))["onActivated"]; + const onBeforeMount: (typeof import("vue"))["onBeforeMount"]; + const onBeforeRouteLeave: (typeof import("vue-router"))["onBeforeRouteLeave"]; + const onBeforeRouteUpdate: (typeof import("vue-router"))["onBeforeRouteUpdate"]; + const onBeforeUnmount: (typeof import("vue"))["onBeforeUnmount"]; + const onBeforeUpdate: (typeof import("vue"))["onBeforeUpdate"]; + const onClickOutside: (typeof import("@vueuse/core"))["onClickOutside"]; + const onDeactivated: (typeof import("vue"))["onDeactivated"]; + const onErrorCaptured: (typeof import("vue"))["onErrorCaptured"]; + const onKeyStroke: (typeof import("@vueuse/core"))["onKeyStroke"]; + const onLongPress: (typeof import("@vueuse/core"))["onLongPress"]; + const onMounted: (typeof import("vue"))["onMounted"]; + const onRenderTracked: (typeof import("vue"))["onRenderTracked"]; + const onRenderTriggered: (typeof import("vue"))["onRenderTriggered"]; + const onScopeDispose: (typeof import("vue"))["onScopeDispose"]; + const onServerPrefetch: (typeof import("vue"))["onServerPrefetch"]; + const onStartTyping: (typeof import("@vueuse/core"))["onStartTyping"]; + const onUnmounted: (typeof import("vue"))["onUnmounted"]; + const onUpdated: (typeof import("vue"))["onUpdated"]; + const pausableWatch: (typeof import("@vueuse/core"))["pausableWatch"]; + const provide: (typeof import("vue"))["provide"]; + const provideLocal: (typeof import("@vueuse/core"))["provideLocal"]; + const reactify: (typeof import("@vueuse/core"))["reactify"]; + const reactifyObject: (typeof import("@vueuse/core"))["reactifyObject"]; + const reactive: (typeof import("vue"))["reactive"]; + const reactiveComputed: (typeof import("@vueuse/core"))["reactiveComputed"]; + const reactiveOmit: (typeof import("@vueuse/core"))["reactiveOmit"]; + const reactivePick: (typeof import("@vueuse/core"))["reactivePick"]; + const readonly: (typeof import("vue"))["readonly"]; + const ref: (typeof import("vue"))["ref"]; + const refAutoReset: (typeof import("@vueuse/core"))["refAutoReset"]; + const refDebounced: (typeof import("@vueuse/core"))["refDebounced"]; + const refDefault: (typeof import("@vueuse/core"))["refDefault"]; + const refThrottled: (typeof import("@vueuse/core"))["refThrottled"]; + const refWithControl: (typeof import("@vueuse/core"))["refWithControl"]; + const resolveComponent: (typeof import("vue"))["resolveComponent"]; + const resolveRef: (typeof import("@vueuse/core"))["resolveRef"]; + const resolveUnref: (typeof import("@vueuse/core"))["resolveUnref"]; + const setActivePinia: (typeof import("pinia"))["setActivePinia"]; + const setMapStoreSuffix: (typeof import("pinia"))["setMapStoreSuffix"]; + const shallowReactive: (typeof import("vue"))["shallowReactive"]; + const shallowReadonly: (typeof import("vue"))["shallowReadonly"]; + const shallowRef: (typeof import("vue"))["shallowRef"]; + const storeToRefs: (typeof import("pinia"))["storeToRefs"]; + const syncRef: (typeof import("@vueuse/core"))["syncRef"]; + const syncRefs: (typeof import("@vueuse/core"))["syncRefs"]; + const templateRef: (typeof import("@vueuse/core"))["templateRef"]; + const throttledRef: (typeof import("@vueuse/core"))["throttledRef"]; + const throttledWatch: (typeof import("@vueuse/core"))["throttledWatch"]; + const toRaw: (typeof import("vue"))["toRaw"]; + const toReactive: (typeof import("@vueuse/core"))["toReactive"]; + const toRef: (typeof import("vue"))["toRef"]; + const toRefs: (typeof import("vue"))["toRefs"]; + const toValue: (typeof import("vue"))["toValue"]; + const triggerRef: (typeof import("vue"))["triggerRef"]; + const tryOnBeforeMount: (typeof import("@vueuse/core"))["tryOnBeforeMount"]; + const tryOnBeforeUnmount: (typeof import("@vueuse/core"))["tryOnBeforeUnmount"]; + const tryOnMounted: (typeof import("@vueuse/core"))["tryOnMounted"]; + const tryOnScopeDispose: (typeof import("@vueuse/core"))["tryOnScopeDispose"]; + const tryOnUnmounted: (typeof import("@vueuse/core"))["tryOnUnmounted"]; + const unref: (typeof import("vue"))["unref"]; + const unrefElement: (typeof import("@vueuse/core"))["unrefElement"]; + const until: (typeof import("@vueuse/core"))["until"]; + const useActiveElement: (typeof import("@vueuse/core"))["useActiveElement"]; + const useAnimate: (typeof import("@vueuse/core"))["useAnimate"]; + const useArrayDifference: (typeof import("@vueuse/core"))["useArrayDifference"]; + const useArrayEvery: (typeof import("@vueuse/core"))["useArrayEvery"]; + const useArrayFilter: (typeof import("@vueuse/core"))["useArrayFilter"]; + const useArrayFind: (typeof import("@vueuse/core"))["useArrayFind"]; + const useArrayFindIndex: (typeof import("@vueuse/core"))["useArrayFindIndex"]; + const useArrayFindLast: (typeof import("@vueuse/core"))["useArrayFindLast"]; + const useArrayIncludes: (typeof import("@vueuse/core"))["useArrayIncludes"]; + const useArrayJoin: (typeof import("@vueuse/core"))["useArrayJoin"]; + const useArrayMap: (typeof import("@vueuse/core"))["useArrayMap"]; + const useArrayReduce: (typeof import("@vueuse/core"))["useArrayReduce"]; + const useArraySome: (typeof import("@vueuse/core"))["useArraySome"]; + const useArrayUnique: (typeof import("@vueuse/core"))["useArrayUnique"]; + const useAsyncQueue: (typeof import("@vueuse/core"))["useAsyncQueue"]; + const useAsyncState: (typeof import("@vueuse/core"))["useAsyncState"]; + const useAttrs: (typeof import("vue"))["useAttrs"]; + const useBase64: (typeof import("@vueuse/core"))["useBase64"]; + const useBattery: (typeof import("@vueuse/core"))["useBattery"]; + const useBluetooth: (typeof import("@vueuse/core"))["useBluetooth"]; + const useBreakpoints: (typeof import("@vueuse/core"))["useBreakpoints"]; + const useBroadcastChannel: (typeof import("@vueuse/core"))["useBroadcastChannel"]; + const useBrowserLocation: (typeof import("@vueuse/core"))["useBrowserLocation"]; + const useCached: (typeof import("@vueuse/core"))["useCached"]; + const useClipboard: (typeof import("@vueuse/core"))["useClipboard"]; + const useClipboardItems: (typeof import("@vueuse/core"))["useClipboardItems"]; + const useCloned: (typeof import("@vueuse/core"))["useCloned"]; + const useColorMode: (typeof import("@vueuse/core"))["useColorMode"]; + const useConfirmDialog: (typeof import("@vueuse/core"))["useConfirmDialog"]; + const useCounter: (typeof import("@vueuse/core"))["useCounter"]; + const useCssModule: (typeof import("vue"))["useCssModule"]; + const useCssVar: (typeof import("@vueuse/core"))["useCssVar"]; + const useCssVars: (typeof import("vue"))["useCssVars"]; + const useCurrentElement: (typeof import("@vueuse/core"))["useCurrentElement"]; + const useCycleList: (typeof import("@vueuse/core"))["useCycleList"]; + const useDark: (typeof import("@vueuse/core"))["useDark"]; + const useDateFormat: (typeof import("@vueuse/core"))["useDateFormat"]; + const useDebounce: (typeof import("@vueuse/core"))["useDebounce"]; + const useDebounceFn: (typeof import("@vueuse/core"))["useDebounceFn"]; + const useDebouncedRefHistory: (typeof import("@vueuse/core"))["useDebouncedRefHistory"]; + const useDeviceMotion: (typeof import("@vueuse/core"))["useDeviceMotion"]; + const useDeviceOrientation: (typeof import("@vueuse/core"))["useDeviceOrientation"]; + const useDevicePixelRatio: (typeof import("@vueuse/core"))["useDevicePixelRatio"]; + const useDevicesList: (typeof import("@vueuse/core"))["useDevicesList"]; + const useDisplayMedia: (typeof import("@vueuse/core"))["useDisplayMedia"]; + const useDocumentVisibility: (typeof import("@vueuse/core"))["useDocumentVisibility"]; + const useDraggable: (typeof import("@vueuse/core"))["useDraggable"]; + const useDropZone: (typeof import("@vueuse/core"))["useDropZone"]; + const useElementBounding: (typeof import("@vueuse/core"))["useElementBounding"]; + const useElementByPoint: (typeof import("@vueuse/core"))["useElementByPoint"]; + const useElementHover: (typeof import("@vueuse/core"))["useElementHover"]; + const useElementSize: (typeof import("@vueuse/core"))["useElementSize"]; + const useElementVisibility: (typeof import("@vueuse/core"))["useElementVisibility"]; + const useEventBus: (typeof import("@vueuse/core"))["useEventBus"]; + const useEventListener: (typeof import("@vueuse/core"))["useEventListener"]; + const useEventSource: (typeof import("@vueuse/core"))["useEventSource"]; + const useEyeDropper: (typeof import("@vueuse/core"))["useEyeDropper"]; + const useFavicon: (typeof import("@vueuse/core"))["useFavicon"]; + const useFetch: (typeof import("@vueuse/core"))["useFetch"]; + const useFileDialog: (typeof import("@vueuse/core"))["useFileDialog"]; + const useFileSystemAccess: (typeof import("@vueuse/core"))["useFileSystemAccess"]; + const useFocus: (typeof import("@vueuse/core"))["useFocus"]; + const useFocusWithin: (typeof import("@vueuse/core"))["useFocusWithin"]; + const useFps: (typeof import("@vueuse/core"))["useFps"]; + const useFullscreen: (typeof import("@vueuse/core"))["useFullscreen"]; + const useGamepad: (typeof import("@vueuse/core"))["useGamepad"]; + const useGeolocation: (typeof import("@vueuse/core"))["useGeolocation"]; + const useI18n: (typeof import("vue-i18n"))["useI18n"]; + const useIdle: (typeof import("@vueuse/core"))["useIdle"]; + const useImage: (typeof import("@vueuse/core"))["useImage"]; + const useInfiniteScroll: (typeof import("@vueuse/core"))["useInfiniteScroll"]; + const useIntersectionObserver: (typeof import("@vueuse/core"))["useIntersectionObserver"]; + const useInterval: (typeof import("@vueuse/core"))["useInterval"]; + const useIntervalFn: (typeof import("@vueuse/core"))["useIntervalFn"]; + const useKeyModifier: (typeof import("@vueuse/core"))["useKeyModifier"]; + const useLastChanged: (typeof import("@vueuse/core"))["useLastChanged"]; + const useLink: (typeof import("vue-router"))["useLink"]; + const useLocalStorage: (typeof import("@vueuse/core"))["useLocalStorage"]; + const useMagicKeys: (typeof import("@vueuse/core"))["useMagicKeys"]; + const useManualRefHistory: (typeof import("@vueuse/core"))["useManualRefHistory"]; + const useMediaControls: (typeof import("@vueuse/core"))["useMediaControls"]; + const useMediaQuery: (typeof import("@vueuse/core"))["useMediaQuery"]; + const useMemoize: (typeof import("@vueuse/core"))["useMemoize"]; + const useMemory: (typeof import("@vueuse/core"))["useMemory"]; + const useMounted: (typeof import("@vueuse/core"))["useMounted"]; + const useMouse: (typeof import("@vueuse/core"))["useMouse"]; + const useMouseInElement: (typeof import("@vueuse/core"))["useMouseInElement"]; + const useMousePressed: (typeof import("@vueuse/core"))["useMousePressed"]; + const useMutationObserver: (typeof import("@vueuse/core"))["useMutationObserver"]; + const useNavigatorLanguage: (typeof import("@vueuse/core"))["useNavigatorLanguage"]; + const useNetwork: (typeof import("@vueuse/core"))["useNetwork"]; + const useNow: (typeof import("@vueuse/core"))["useNow"]; + const useObjectUrl: (typeof import("@vueuse/core"))["useObjectUrl"]; + const useOffsetPagination: (typeof import("@vueuse/core"))["useOffsetPagination"]; + const useOnline: (typeof import("@vueuse/core"))["useOnline"]; + const usePageLeave: (typeof import("@vueuse/core"))["usePageLeave"]; + const useParallax: (typeof import("@vueuse/core"))["useParallax"]; + const useParentElement: (typeof import("@vueuse/core"))["useParentElement"]; + const usePerformanceObserver: (typeof import("@vueuse/core"))["usePerformanceObserver"]; + const usePermission: (typeof import("@vueuse/core"))["usePermission"]; + const usePointer: (typeof import("@vueuse/core"))["usePointer"]; + const usePointerLock: (typeof import("@vueuse/core"))["usePointerLock"]; + const usePointerSwipe: (typeof import("@vueuse/core"))["usePointerSwipe"]; + const usePreferredColorScheme: (typeof import("@vueuse/core"))["usePreferredColorScheme"]; + const usePreferredContrast: (typeof import("@vueuse/core"))["usePreferredContrast"]; + const usePreferredDark: (typeof import("@vueuse/core"))["usePreferredDark"]; + const usePreferredLanguages: (typeof import("@vueuse/core"))["usePreferredLanguages"]; + const usePreferredReducedMotion: (typeof import("@vueuse/core"))["usePreferredReducedMotion"]; + const usePrevious: (typeof import("@vueuse/core"))["usePrevious"]; + const useRafFn: (typeof import("@vueuse/core"))["useRafFn"]; + const useRefHistory: (typeof import("@vueuse/core"))["useRefHistory"]; + const useResizeObserver: (typeof import("@vueuse/core"))["useResizeObserver"]; + const useRoute: (typeof import("vue-router"))["useRoute"]; + const useRouter: (typeof import("vue-router"))["useRouter"]; + const useScreenOrientation: (typeof import("@vueuse/core"))["useScreenOrientation"]; + const useScreenSafeArea: (typeof import("@vueuse/core"))["useScreenSafeArea"]; + const useScriptTag: (typeof import("@vueuse/core"))["useScriptTag"]; + const useScroll: (typeof import("@vueuse/core"))["useScroll"]; + const useScrollLock: (typeof import("@vueuse/core"))["useScrollLock"]; + const useSessionStorage: (typeof import("@vueuse/core"))["useSessionStorage"]; + const useShare: (typeof import("@vueuse/core"))["useShare"]; + const useSlots: (typeof import("vue"))["useSlots"]; + const useSorted: (typeof import("@vueuse/core"))["useSorted"]; + const useSpeechRecognition: (typeof import("@vueuse/core"))["useSpeechRecognition"]; + const useSpeechSynthesis: (typeof import("@vueuse/core"))["useSpeechSynthesis"]; + const useStepper: (typeof import("@vueuse/core"))["useStepper"]; + const useStorage: (typeof import("@vueuse/core"))["useStorage"]; + const useStorageAsync: (typeof import("@vueuse/core"))["useStorageAsync"]; + const useStyleTag: (typeof import("@vueuse/core"))["useStyleTag"]; + const useSupported: (typeof import("@vueuse/core"))["useSupported"]; + const useSwipe: (typeof import("@vueuse/core"))["useSwipe"]; + const useTemplateRefsList: (typeof import("@vueuse/core"))["useTemplateRefsList"]; + const useTextDirection: (typeof import("@vueuse/core"))["useTextDirection"]; + const useTextSelection: (typeof import("@vueuse/core"))["useTextSelection"]; + const useTextareaAutosize: (typeof import("@vueuse/core"))["useTextareaAutosize"]; + const useThrottle: (typeof import("@vueuse/core"))["useThrottle"]; + const useThrottleFn: (typeof import("@vueuse/core"))["useThrottleFn"]; + const useThrottledRefHistory: (typeof import("@vueuse/core"))["useThrottledRefHistory"]; + const useTimeAgo: (typeof import("@vueuse/core"))["useTimeAgo"]; + const useTimeout: (typeof import("@vueuse/core"))["useTimeout"]; + const useTimeoutFn: (typeof import("@vueuse/core"))["useTimeoutFn"]; + const useTimeoutPoll: (typeof import("@vueuse/core"))["useTimeoutPoll"]; + const useTimestamp: (typeof import("@vueuse/core"))["useTimestamp"]; + const useTitle: (typeof import("@vueuse/core"))["useTitle"]; + const useToNumber: (typeof import("@vueuse/core"))["useToNumber"]; + const useToString: (typeof import("@vueuse/core"))["useToString"]; + const useToggle: (typeof import("@vueuse/core"))["useToggle"]; + const useTransition: (typeof import("@vueuse/core"))["useTransition"]; + const useUrlSearchParams: (typeof import("@vueuse/core"))["useUrlSearchParams"]; + const useUserMedia: (typeof import("@vueuse/core"))["useUserMedia"]; + const useVModel: (typeof import("@vueuse/core"))["useVModel"]; + const useVModels: (typeof import("@vueuse/core"))["useVModels"]; + const useVibrate: (typeof import("@vueuse/core"))["useVibrate"]; + const useVirtualList: (typeof import("@vueuse/core"))["useVirtualList"]; + const useWakeLock: (typeof import("@vueuse/core"))["useWakeLock"]; + const useWebNotification: (typeof import("@vueuse/core"))["useWebNotification"]; + const useWebSocket: (typeof import("@vueuse/core"))["useWebSocket"]; + const useWebWorker: (typeof import("@vueuse/core"))["useWebWorker"]; + const useWebWorkerFn: (typeof import("@vueuse/core"))["useWebWorkerFn"]; + const useWindowFocus: (typeof import("@vueuse/core"))["useWindowFocus"]; + const useWindowScroll: (typeof import("@vueuse/core"))["useWindowScroll"]; + const useWindowSize: (typeof import("@vueuse/core"))["useWindowSize"]; + const watch: (typeof import("vue"))["watch"]; + const watchArray: (typeof import("@vueuse/core"))["watchArray"]; + const watchAtMost: (typeof import("@vueuse/core"))["watchAtMost"]; + const watchDebounced: (typeof import("@vueuse/core"))["watchDebounced"]; + const watchDeep: (typeof import("@vueuse/core"))["watchDeep"]; + const watchEffect: (typeof import("vue"))["watchEffect"]; + const watchIgnorable: (typeof import("@vueuse/core"))["watchIgnorable"]; + const watchImmediate: (typeof import("@vueuse/core"))["watchImmediate"]; + const watchOnce: (typeof import("@vueuse/core"))["watchOnce"]; + const watchPausable: (typeof import("@vueuse/core"))["watchPausable"]; + const watchPostEffect: (typeof import("vue"))["watchPostEffect"]; + const watchSyncEffect: (typeof import("vue"))["watchSyncEffect"]; + const watchThrottled: (typeof import("@vueuse/core"))["watchThrottled"]; + const watchTriggerable: (typeof import("@vueuse/core"))["watchTriggerable"]; + const watchWithFilter: (typeof import("@vueuse/core"))["watchWithFilter"]; + const whenever: (typeof import("@vueuse/core"))["whenever"]; +} +// for type re-export +declare global { + // @ts-ignore + export type { + Component, + ComponentPublicInstance, + ComputedRef, + ExtractDefaultPropTypes, + ExtractPropTypes, + ExtractPublicPropTypes, + InjectionKey, + PropType, + Ref, + VNode, + WritableComputedRef, + } from "vue"; + import("vue"); +} +// for vue template auto import +import { UnwrapRef } from "vue"; +declare module "vue" { + interface GlobalComponents {} + interface ComponentCustomProperties { + readonly EffectScope: UnwrapRef<(typeof import("vue"))["EffectScope"]>; + readonly ElMessage: UnwrapRef< + (typeof import("element-plus/es"))["ElMessage"] + >; + readonly ElMessageBox: UnwrapRef< + (typeof import("element-plus/es"))["ElMessageBox"] + >; + readonly acceptHMRUpdate: UnwrapRef< + (typeof import("pinia"))["acceptHMRUpdate"] + >; + readonly asyncComputed: UnwrapRef< + (typeof import("@vueuse/core"))["asyncComputed"] + >; + readonly autoResetRef: UnwrapRef< + (typeof import("@vueuse/core"))["autoResetRef"] + >; + readonly computed: UnwrapRef<(typeof import("vue"))["computed"]>; + readonly computedAsync: UnwrapRef< + (typeof import("@vueuse/core"))["computedAsync"] + >; + readonly computedEager: UnwrapRef< + (typeof import("@vueuse/core"))["computedEager"] + >; + readonly computedInject: UnwrapRef< + (typeof import("@vueuse/core"))["computedInject"] + >; + readonly computedWithControl: UnwrapRef< + (typeof import("@vueuse/core"))["computedWithControl"] + >; + readonly controlledComputed: UnwrapRef< + (typeof import("@vueuse/core"))["controlledComputed"] + >; + readonly controlledRef: UnwrapRef< + (typeof import("@vueuse/core"))["controlledRef"] + >; + readonly createApp: UnwrapRef<(typeof import("vue"))["createApp"]>; + readonly createEventHook: UnwrapRef< + (typeof import("@vueuse/core"))["createEventHook"] + >; + readonly createGlobalState: UnwrapRef< + (typeof import("@vueuse/core"))["createGlobalState"] + >; + readonly createInjectionState: UnwrapRef< + (typeof import("@vueuse/core"))["createInjectionState"] + >; + readonly createPinia: UnwrapRef<(typeof import("pinia"))["createPinia"]>; + readonly createReactiveFn: UnwrapRef< + (typeof import("@vueuse/core"))["createReactiveFn"] + >; + readonly createReusableTemplate: UnwrapRef< + (typeof import("@vueuse/core"))["createReusableTemplate"] + >; + readonly createSharedComposable: UnwrapRef< + (typeof import("@vueuse/core"))["createSharedComposable"] + >; + readonly createTemplatePromise: UnwrapRef< + (typeof import("@vueuse/core"))["createTemplatePromise"] + >; + readonly createUnrefFn: UnwrapRef< + (typeof import("@vueuse/core"))["createUnrefFn"] + >; + readonly customRef: UnwrapRef<(typeof import("vue"))["customRef"]>; + readonly debouncedRef: UnwrapRef< + (typeof import("@vueuse/core"))["debouncedRef"] + >; + readonly debouncedWatch: UnwrapRef< + (typeof import("@vueuse/core"))["debouncedWatch"] + >; + readonly defineAsyncComponent: UnwrapRef< + (typeof import("vue"))["defineAsyncComponent"] + >; + readonly defineComponent: UnwrapRef< + (typeof import("vue"))["defineComponent"] + >; + readonly defineStore: UnwrapRef<(typeof import("pinia"))["defineStore"]>; + readonly eagerComputed: UnwrapRef< + (typeof import("@vueuse/core"))["eagerComputed"] + >; + readonly effectScope: UnwrapRef<(typeof import("vue"))["effectScope"]>; + readonly extendRef: UnwrapRef<(typeof import("@vueuse/core"))["extendRef"]>; + readonly getActivePinia: UnwrapRef< + (typeof import("pinia"))["getActivePinia"] + >; + readonly getCurrentInstance: UnwrapRef< + (typeof import("vue"))["getCurrentInstance"] + >; + readonly getCurrentScope: UnwrapRef< + (typeof import("vue"))["getCurrentScope"] + >; + readonly h: UnwrapRef<(typeof import("vue"))["h"]>; + readonly ignorableWatch: UnwrapRef< + (typeof import("@vueuse/core"))["ignorableWatch"] + >; + readonly inject: UnwrapRef<(typeof import("vue"))["inject"]>; + readonly injectLocal: UnwrapRef< + (typeof import("@vueuse/core"))["injectLocal"] + >; + readonly isDefined: UnwrapRef<(typeof import("@vueuse/core"))["isDefined"]>; + readonly isProxy: UnwrapRef<(typeof import("vue"))["isProxy"]>; + readonly isReactive: UnwrapRef<(typeof import("vue"))["isReactive"]>; + readonly isReadonly: UnwrapRef<(typeof import("vue"))["isReadonly"]>; + readonly isRef: UnwrapRef<(typeof import("vue"))["isRef"]>; + readonly makeDestructurable: UnwrapRef< + (typeof import("@vueuse/core"))["makeDestructurable"] + >; + readonly mapActions: UnwrapRef<(typeof import("pinia"))["mapActions"]>; + readonly mapGetters: UnwrapRef<(typeof import("pinia"))["mapGetters"]>; + readonly mapState: UnwrapRef<(typeof import("pinia"))["mapState"]>; + readonly mapStores: UnwrapRef<(typeof import("pinia"))["mapStores"]>; + readonly mapWritableState: UnwrapRef< + (typeof import("pinia"))["mapWritableState"] + >; + readonly markRaw: UnwrapRef<(typeof import("vue"))["markRaw"]>; + readonly nextTick: UnwrapRef<(typeof import("vue"))["nextTick"]>; + readonly onActivated: UnwrapRef<(typeof import("vue"))["onActivated"]>; + readonly onBeforeMount: UnwrapRef<(typeof import("vue"))["onBeforeMount"]>; + readonly onBeforeRouteLeave: UnwrapRef< + (typeof import("vue-router"))["onBeforeRouteLeave"] + >; + readonly onBeforeRouteUpdate: UnwrapRef< + (typeof import("vue-router"))["onBeforeRouteUpdate"] + >; + readonly onBeforeUnmount: UnwrapRef< + (typeof import("vue"))["onBeforeUnmount"] + >; + readonly onBeforeUpdate: UnwrapRef< + (typeof import("vue"))["onBeforeUpdate"] + >; + readonly onClickOutside: UnwrapRef< + (typeof import("@vueuse/core"))["onClickOutside"] + >; + readonly onDeactivated: UnwrapRef<(typeof import("vue"))["onDeactivated"]>; + readonly onErrorCaptured: UnwrapRef< + (typeof import("vue"))["onErrorCaptured"] + >; + readonly onKeyStroke: UnwrapRef< + (typeof import("@vueuse/core"))["onKeyStroke"] + >; + readonly onLongPress: UnwrapRef< + (typeof import("@vueuse/core"))["onLongPress"] + >; + readonly onMounted: UnwrapRef<(typeof import("vue"))["onMounted"]>; + readonly onRenderTracked: UnwrapRef< + (typeof import("vue"))["onRenderTracked"] + >; + readonly onRenderTriggered: UnwrapRef< + (typeof import("vue"))["onRenderTriggered"] + >; + readonly onScopeDispose: UnwrapRef< + (typeof import("vue"))["onScopeDispose"] + >; + readonly onServerPrefetch: UnwrapRef< + (typeof import("vue"))["onServerPrefetch"] + >; + readonly onStartTyping: UnwrapRef< + (typeof import("@vueuse/core"))["onStartTyping"] + >; + readonly onUnmounted: UnwrapRef<(typeof import("vue"))["onUnmounted"]>; + readonly onUpdated: UnwrapRef<(typeof import("vue"))["onUpdated"]>; + readonly pausableWatch: UnwrapRef< + (typeof import("@vueuse/core"))["pausableWatch"] + >; + readonly provide: UnwrapRef<(typeof import("vue"))["provide"]>; + readonly provideLocal: UnwrapRef< + (typeof import("@vueuse/core"))["provideLocal"] + >; + readonly reactify: UnwrapRef<(typeof import("@vueuse/core"))["reactify"]>; + readonly reactifyObject: UnwrapRef< + (typeof import("@vueuse/core"))["reactifyObject"] + >; + readonly reactive: UnwrapRef<(typeof import("vue"))["reactive"]>; + readonly reactiveComputed: UnwrapRef< + (typeof import("@vueuse/core"))["reactiveComputed"] + >; + readonly reactiveOmit: UnwrapRef< + (typeof import("@vueuse/core"))["reactiveOmit"] + >; + readonly reactivePick: UnwrapRef< + (typeof import("@vueuse/core"))["reactivePick"] + >; + readonly readonly: UnwrapRef<(typeof import("vue"))["readonly"]>; + readonly ref: UnwrapRef<(typeof import("vue"))["ref"]>; + readonly refAutoReset: UnwrapRef< + (typeof import("@vueuse/core"))["refAutoReset"] + >; + readonly refDebounced: UnwrapRef< + (typeof import("@vueuse/core"))["refDebounced"] + >; + readonly refDefault: UnwrapRef< + (typeof import("@vueuse/core"))["refDefault"] + >; + readonly refThrottled: UnwrapRef< + (typeof import("@vueuse/core"))["refThrottled"] + >; + readonly refWithControl: UnwrapRef< + (typeof import("@vueuse/core"))["refWithControl"] + >; + readonly resolveComponent: UnwrapRef< + (typeof import("vue"))["resolveComponent"] + >; + readonly resolveRef: UnwrapRef< + (typeof import("@vueuse/core"))["resolveRef"] + >; + readonly resolveUnref: UnwrapRef< + (typeof import("@vueuse/core"))["resolveUnref"] + >; + readonly setActivePinia: UnwrapRef< + (typeof import("pinia"))["setActivePinia"] + >; + readonly setMapStoreSuffix: UnwrapRef< + (typeof import("pinia"))["setMapStoreSuffix"] + >; + readonly shallowReactive: UnwrapRef< + (typeof import("vue"))["shallowReactive"] + >; + readonly shallowReadonly: UnwrapRef< + (typeof import("vue"))["shallowReadonly"] + >; + readonly shallowRef: UnwrapRef<(typeof import("vue"))["shallowRef"]>; + readonly storeToRefs: UnwrapRef<(typeof import("pinia"))["storeToRefs"]>; + readonly syncRef: UnwrapRef<(typeof import("@vueuse/core"))["syncRef"]>; + readonly syncRefs: UnwrapRef<(typeof import("@vueuse/core"))["syncRefs"]>; + readonly templateRef: UnwrapRef< + (typeof import("@vueuse/core"))["templateRef"] + >; + readonly throttledRef: UnwrapRef< + (typeof import("@vueuse/core"))["throttledRef"] + >; + readonly throttledWatch: UnwrapRef< + (typeof import("@vueuse/core"))["throttledWatch"] + >; + readonly toRaw: UnwrapRef<(typeof import("vue"))["toRaw"]>; + readonly toReactive: UnwrapRef< + (typeof import("@vueuse/core"))["toReactive"] + >; + readonly toRef: UnwrapRef<(typeof import("vue"))["toRef"]>; + readonly toRefs: UnwrapRef<(typeof import("vue"))["toRefs"]>; + readonly toValue: UnwrapRef<(typeof import("vue"))["toValue"]>; + readonly triggerRef: UnwrapRef<(typeof import("vue"))["triggerRef"]>; + readonly tryOnBeforeMount: UnwrapRef< + (typeof import("@vueuse/core"))["tryOnBeforeMount"] + >; + readonly tryOnBeforeUnmount: UnwrapRef< + (typeof import("@vueuse/core"))["tryOnBeforeUnmount"] + >; + readonly tryOnMounted: UnwrapRef< + (typeof import("@vueuse/core"))["tryOnMounted"] + >; + readonly tryOnScopeDispose: UnwrapRef< + (typeof import("@vueuse/core"))["tryOnScopeDispose"] + >; + readonly tryOnUnmounted: UnwrapRef< + (typeof import("@vueuse/core"))["tryOnUnmounted"] + >; + readonly unref: UnwrapRef<(typeof import("vue"))["unref"]>; + readonly unrefElement: UnwrapRef< + (typeof import("@vueuse/core"))["unrefElement"] + >; + readonly until: UnwrapRef<(typeof import("@vueuse/core"))["until"]>; + readonly useActiveElement: UnwrapRef< + (typeof import("@vueuse/core"))["useActiveElement"] + >; + readonly useAnimate: UnwrapRef< + (typeof import("@vueuse/core"))["useAnimate"] + >; + readonly useArrayDifference: UnwrapRef< + (typeof import("@vueuse/core"))["useArrayDifference"] + >; + readonly useArrayEvery: UnwrapRef< + (typeof import("@vueuse/core"))["useArrayEvery"] + >; + readonly useArrayFilter: UnwrapRef< + (typeof import("@vueuse/core"))["useArrayFilter"] + >; + readonly useArrayFind: UnwrapRef< + (typeof import("@vueuse/core"))["useArrayFind"] + >; + readonly useArrayFindIndex: UnwrapRef< + (typeof import("@vueuse/core"))["useArrayFindIndex"] + >; + readonly useArrayFindLast: UnwrapRef< + (typeof import("@vueuse/core"))["useArrayFindLast"] + >; + readonly useArrayIncludes: UnwrapRef< + (typeof import("@vueuse/core"))["useArrayIncludes"] + >; + readonly useArrayJoin: UnwrapRef< + (typeof import("@vueuse/core"))["useArrayJoin"] + >; + readonly useArrayMap: UnwrapRef< + (typeof import("@vueuse/core"))["useArrayMap"] + >; + readonly useArrayReduce: UnwrapRef< + (typeof import("@vueuse/core"))["useArrayReduce"] + >; + readonly useArraySome: UnwrapRef< + (typeof import("@vueuse/core"))["useArraySome"] + >; + readonly useArrayUnique: UnwrapRef< + (typeof import("@vueuse/core"))["useArrayUnique"] + >; + readonly useAsyncQueue: UnwrapRef< + (typeof import("@vueuse/core"))["useAsyncQueue"] + >; + readonly useAsyncState: UnwrapRef< + (typeof import("@vueuse/core"))["useAsyncState"] + >; + readonly useAttrs: UnwrapRef<(typeof import("vue"))["useAttrs"]>; + readonly useBase64: UnwrapRef<(typeof import("@vueuse/core"))["useBase64"]>; + readonly useBattery: UnwrapRef< + (typeof import("@vueuse/core"))["useBattery"] + >; + readonly useBluetooth: UnwrapRef< + (typeof import("@vueuse/core"))["useBluetooth"] + >; + readonly useBreakpoints: UnwrapRef< + (typeof import("@vueuse/core"))["useBreakpoints"] + >; + readonly useBroadcastChannel: UnwrapRef< + (typeof import("@vueuse/core"))["useBroadcastChannel"] + >; + readonly useBrowserLocation: UnwrapRef< + (typeof import("@vueuse/core"))["useBrowserLocation"] + >; + readonly useCached: UnwrapRef<(typeof import("@vueuse/core"))["useCached"]>; + readonly useClipboard: UnwrapRef< + (typeof import("@vueuse/core"))["useClipboard"] + >; + readonly useClipboardItems: UnwrapRef< + (typeof import("@vueuse/core"))["useClipboardItems"] + >; + readonly useCloned: UnwrapRef<(typeof import("@vueuse/core"))["useCloned"]>; + readonly useColorMode: UnwrapRef< + (typeof import("@vueuse/core"))["useColorMode"] + >; + readonly useConfirmDialog: UnwrapRef< + (typeof import("@vueuse/core"))["useConfirmDialog"] + >; + readonly useCounter: UnwrapRef< + (typeof import("@vueuse/core"))["useCounter"] + >; + readonly useCssModule: UnwrapRef<(typeof import("vue"))["useCssModule"]>; + readonly useCssVar: UnwrapRef<(typeof import("@vueuse/core"))["useCssVar"]>; + readonly useCssVars: UnwrapRef<(typeof import("vue"))["useCssVars"]>; + readonly useCurrentElement: UnwrapRef< + (typeof import("@vueuse/core"))["useCurrentElement"] + >; + readonly useCycleList: UnwrapRef< + (typeof import("@vueuse/core"))["useCycleList"] + >; + readonly useDark: UnwrapRef<(typeof import("@vueuse/core"))["useDark"]>; + readonly useDateFormat: UnwrapRef< + (typeof import("@vueuse/core"))["useDateFormat"] + >; + readonly useDebounce: UnwrapRef< + (typeof import("@vueuse/core"))["useDebounce"] + >; + readonly useDebounceFn: UnwrapRef< + (typeof import("@vueuse/core"))["useDebounceFn"] + >; + readonly useDebouncedRefHistory: UnwrapRef< + (typeof import("@vueuse/core"))["useDebouncedRefHistory"] + >; + readonly useDeviceMotion: UnwrapRef< + (typeof import("@vueuse/core"))["useDeviceMotion"] + >; + readonly useDeviceOrientation: UnwrapRef< + (typeof import("@vueuse/core"))["useDeviceOrientation"] + >; + readonly useDevicePixelRatio: UnwrapRef< + (typeof import("@vueuse/core"))["useDevicePixelRatio"] + >; + readonly useDevicesList: UnwrapRef< + (typeof import("@vueuse/core"))["useDevicesList"] + >; + readonly useDisplayMedia: UnwrapRef< + (typeof import("@vueuse/core"))["useDisplayMedia"] + >; + readonly useDocumentVisibility: UnwrapRef< + (typeof import("@vueuse/core"))["useDocumentVisibility"] + >; + readonly useDraggable: UnwrapRef< + (typeof import("@vueuse/core"))["useDraggable"] + >; + readonly useDropZone: UnwrapRef< + (typeof import("@vueuse/core"))["useDropZone"] + >; + readonly useElementBounding: UnwrapRef< + (typeof import("@vueuse/core"))["useElementBounding"] + >; + readonly useElementByPoint: UnwrapRef< + (typeof import("@vueuse/core"))["useElementByPoint"] + >; + readonly useElementHover: UnwrapRef< + (typeof import("@vueuse/core"))["useElementHover"] + >; + readonly useElementSize: UnwrapRef< + (typeof import("@vueuse/core"))["useElementSize"] + >; + readonly useElementVisibility: UnwrapRef< + (typeof import("@vueuse/core"))["useElementVisibility"] + >; + readonly useEventBus: UnwrapRef< + (typeof import("@vueuse/core"))["useEventBus"] + >; + readonly useEventListener: UnwrapRef< + (typeof import("@vueuse/core"))["useEventListener"] + >; + readonly useEventSource: UnwrapRef< + (typeof import("@vueuse/core"))["useEventSource"] + >; + readonly useEyeDropper: UnwrapRef< + (typeof import("@vueuse/core"))["useEyeDropper"] + >; + readonly useFavicon: UnwrapRef< + (typeof import("@vueuse/core"))["useFavicon"] + >; + readonly useFetch: UnwrapRef<(typeof import("@vueuse/core"))["useFetch"]>; + readonly useFileDialog: UnwrapRef< + (typeof import("@vueuse/core"))["useFileDialog"] + >; + readonly useFileSystemAccess: UnwrapRef< + (typeof import("@vueuse/core"))["useFileSystemAccess"] + >; + readonly useFocus: UnwrapRef<(typeof import("@vueuse/core"))["useFocus"]>; + readonly useFocusWithin: UnwrapRef< + (typeof import("@vueuse/core"))["useFocusWithin"] + >; + readonly useFps: UnwrapRef<(typeof import("@vueuse/core"))["useFps"]>; + readonly useFullscreen: UnwrapRef< + (typeof import("@vueuse/core"))["useFullscreen"] + >; + readonly useGamepad: UnwrapRef< + (typeof import("@vueuse/core"))["useGamepad"] + >; + readonly useGeolocation: UnwrapRef< + (typeof import("@vueuse/core"))["useGeolocation"] + >; + readonly useI18n: UnwrapRef<(typeof import("vue-i18n"))["useI18n"]>; + readonly useIdle: UnwrapRef<(typeof import("@vueuse/core"))["useIdle"]>; + readonly useImage: UnwrapRef<(typeof import("@vueuse/core"))["useImage"]>; + readonly useInfiniteScroll: UnwrapRef< + (typeof import("@vueuse/core"))["useInfiniteScroll"] + >; + readonly useIntersectionObserver: UnwrapRef< + (typeof import("@vueuse/core"))["useIntersectionObserver"] + >; + readonly useInterval: UnwrapRef< + (typeof import("@vueuse/core"))["useInterval"] + >; + readonly useIntervalFn: UnwrapRef< + (typeof import("@vueuse/core"))["useIntervalFn"] + >; + readonly useKeyModifier: UnwrapRef< + (typeof import("@vueuse/core"))["useKeyModifier"] + >; + readonly useLastChanged: UnwrapRef< + (typeof import("@vueuse/core"))["useLastChanged"] + >; + readonly useLink: UnwrapRef<(typeof import("vue-router"))["useLink"]>; + readonly useLocalStorage: UnwrapRef< + (typeof import("@vueuse/core"))["useLocalStorage"] + >; + readonly useMagicKeys: UnwrapRef< + (typeof import("@vueuse/core"))["useMagicKeys"] + >; + readonly useManualRefHistory: UnwrapRef< + (typeof import("@vueuse/core"))["useManualRefHistory"] + >; + readonly useMediaControls: UnwrapRef< + (typeof import("@vueuse/core"))["useMediaControls"] + >; + readonly useMediaQuery: UnwrapRef< + (typeof import("@vueuse/core"))["useMediaQuery"] + >; + readonly useMemoize: UnwrapRef< + (typeof import("@vueuse/core"))["useMemoize"] + >; + readonly useMemory: UnwrapRef<(typeof import("@vueuse/core"))["useMemory"]>; + readonly useMounted: UnwrapRef< + (typeof import("@vueuse/core"))["useMounted"] + >; + readonly useMouse: UnwrapRef<(typeof import("@vueuse/core"))["useMouse"]>; + readonly useMouseInElement: UnwrapRef< + (typeof import("@vueuse/core"))["useMouseInElement"] + >; + readonly useMousePressed: UnwrapRef< + (typeof import("@vueuse/core"))["useMousePressed"] + >; + readonly useMutationObserver: UnwrapRef< + (typeof import("@vueuse/core"))["useMutationObserver"] + >; + readonly useNavigatorLanguage: UnwrapRef< + (typeof import("@vueuse/core"))["useNavigatorLanguage"] + >; + readonly useNetwork: UnwrapRef< + (typeof import("@vueuse/core"))["useNetwork"] + >; + readonly useNow: UnwrapRef<(typeof import("@vueuse/core"))["useNow"]>; + readonly useObjectUrl: UnwrapRef< + (typeof import("@vueuse/core"))["useObjectUrl"] + >; + readonly useOffsetPagination: UnwrapRef< + (typeof import("@vueuse/core"))["useOffsetPagination"] + >; + readonly useOnline: UnwrapRef<(typeof import("@vueuse/core"))["useOnline"]>; + readonly usePageLeave: UnwrapRef< + (typeof import("@vueuse/core"))["usePageLeave"] + >; + readonly useParallax: UnwrapRef< + (typeof import("@vueuse/core"))["useParallax"] + >; + readonly useParentElement: UnwrapRef< + (typeof import("@vueuse/core"))["useParentElement"] + >; + readonly usePerformanceObserver: UnwrapRef< + (typeof import("@vueuse/core"))["usePerformanceObserver"] + >; + readonly usePermission: UnwrapRef< + (typeof import("@vueuse/core"))["usePermission"] + >; + readonly usePointer: UnwrapRef< + (typeof import("@vueuse/core"))["usePointer"] + >; + readonly usePointerLock: UnwrapRef< + (typeof import("@vueuse/core"))["usePointerLock"] + >; + readonly usePointerSwipe: UnwrapRef< + (typeof import("@vueuse/core"))["usePointerSwipe"] + >; + readonly usePreferredColorScheme: UnwrapRef< + (typeof import("@vueuse/core"))["usePreferredColorScheme"] + >; + readonly usePreferredContrast: UnwrapRef< + (typeof import("@vueuse/core"))["usePreferredContrast"] + >; + readonly usePreferredDark: UnwrapRef< + (typeof import("@vueuse/core"))["usePreferredDark"] + >; + readonly usePreferredLanguages: UnwrapRef< + (typeof import("@vueuse/core"))["usePreferredLanguages"] + >; + readonly usePreferredReducedMotion: UnwrapRef< + (typeof import("@vueuse/core"))["usePreferredReducedMotion"] + >; + readonly usePrevious: UnwrapRef< + (typeof import("@vueuse/core"))["usePrevious"] + >; + readonly useRafFn: UnwrapRef<(typeof import("@vueuse/core"))["useRafFn"]>; + readonly useRefHistory: UnwrapRef< + (typeof import("@vueuse/core"))["useRefHistory"] + >; + readonly useResizeObserver: UnwrapRef< + (typeof import("@vueuse/core"))["useResizeObserver"] + >; + readonly useRoute: UnwrapRef<(typeof import("vue-router"))["useRoute"]>; + readonly useRouter: UnwrapRef<(typeof import("vue-router"))["useRouter"]>; + readonly useScreenOrientation: UnwrapRef< + (typeof import("@vueuse/core"))["useScreenOrientation"] + >; + readonly useScreenSafeArea: UnwrapRef< + (typeof import("@vueuse/core"))["useScreenSafeArea"] + >; + readonly useScriptTag: UnwrapRef< + (typeof import("@vueuse/core"))["useScriptTag"] + >; + readonly useScroll: UnwrapRef<(typeof import("@vueuse/core"))["useScroll"]>; + readonly useScrollLock: UnwrapRef< + (typeof import("@vueuse/core"))["useScrollLock"] + >; + readonly useSessionStorage: UnwrapRef< + (typeof import("@vueuse/core"))["useSessionStorage"] + >; + readonly useShare: UnwrapRef<(typeof import("@vueuse/core"))["useShare"]>; + readonly useSlots: UnwrapRef<(typeof import("vue"))["useSlots"]>; + readonly useSorted: UnwrapRef<(typeof import("@vueuse/core"))["useSorted"]>; + readonly useSpeechRecognition: UnwrapRef< + (typeof import("@vueuse/core"))["useSpeechRecognition"] + >; + readonly useSpeechSynthesis: UnwrapRef< + (typeof import("@vueuse/core"))["useSpeechSynthesis"] + >; + readonly useStepper: UnwrapRef< + (typeof import("@vueuse/core"))["useStepper"] + >; + readonly useStorage: UnwrapRef< + (typeof import("@vueuse/core"))["useStorage"] + >; + readonly useStorageAsync: UnwrapRef< + (typeof import("@vueuse/core"))["useStorageAsync"] + >; + readonly useStyleTag: UnwrapRef< + (typeof import("@vueuse/core"))["useStyleTag"] + >; + readonly useSupported: UnwrapRef< + (typeof import("@vueuse/core"))["useSupported"] + >; + readonly useSwipe: UnwrapRef<(typeof import("@vueuse/core"))["useSwipe"]>; + readonly useTemplateRefsList: UnwrapRef< + (typeof import("@vueuse/core"))["useTemplateRefsList"] + >; + readonly useTextDirection: UnwrapRef< + (typeof import("@vueuse/core"))["useTextDirection"] + >; + readonly useTextSelection: UnwrapRef< + (typeof import("@vueuse/core"))["useTextSelection"] + >; + readonly useTextareaAutosize: UnwrapRef< + (typeof import("@vueuse/core"))["useTextareaAutosize"] + >; + readonly useThrottle: UnwrapRef< + (typeof import("@vueuse/core"))["useThrottle"] + >; + readonly useThrottleFn: UnwrapRef< + (typeof import("@vueuse/core"))["useThrottleFn"] + >; + readonly useThrottledRefHistory: UnwrapRef< + (typeof import("@vueuse/core"))["useThrottledRefHistory"] + >; + readonly useTimeAgo: UnwrapRef< + (typeof import("@vueuse/core"))["useTimeAgo"] + >; + readonly useTimeout: UnwrapRef< + (typeof import("@vueuse/core"))["useTimeout"] + >; + readonly useTimeoutFn: UnwrapRef< + (typeof import("@vueuse/core"))["useTimeoutFn"] + >; + readonly useTimeoutPoll: UnwrapRef< + (typeof import("@vueuse/core"))["useTimeoutPoll"] + >; + readonly useTimestamp: UnwrapRef< + (typeof import("@vueuse/core"))["useTimestamp"] + >; + readonly useTitle: UnwrapRef<(typeof import("@vueuse/core"))["useTitle"]>; + readonly useToNumber: UnwrapRef< + (typeof import("@vueuse/core"))["useToNumber"] + >; + readonly useToString: UnwrapRef< + (typeof import("@vueuse/core"))["useToString"] + >; + readonly useToggle: UnwrapRef<(typeof import("@vueuse/core"))["useToggle"]>; + readonly useTransition: UnwrapRef< + (typeof import("@vueuse/core"))["useTransition"] + >; + readonly useUrlSearchParams: UnwrapRef< + (typeof import("@vueuse/core"))["useUrlSearchParams"] + >; + readonly useUserMedia: UnwrapRef< + (typeof import("@vueuse/core"))["useUserMedia"] + >; + readonly useVModel: UnwrapRef<(typeof import("@vueuse/core"))["useVModel"]>; + readonly useVModels: UnwrapRef< + (typeof import("@vueuse/core"))["useVModels"] + >; + readonly useVibrate: UnwrapRef< + (typeof import("@vueuse/core"))["useVibrate"] + >; + readonly useVirtualList: UnwrapRef< + (typeof import("@vueuse/core"))["useVirtualList"] + >; + readonly useWakeLock: UnwrapRef< + (typeof import("@vueuse/core"))["useWakeLock"] + >; + readonly useWebNotification: UnwrapRef< + (typeof import("@vueuse/core"))["useWebNotification"] + >; + readonly useWebSocket: UnwrapRef< + (typeof import("@vueuse/core"))["useWebSocket"] + >; + readonly useWebWorker: UnwrapRef< + (typeof import("@vueuse/core"))["useWebWorker"] + >; + readonly useWebWorkerFn: UnwrapRef< + (typeof import("@vueuse/core"))["useWebWorkerFn"] + >; + readonly useWindowFocus: UnwrapRef< + (typeof import("@vueuse/core"))["useWindowFocus"] + >; + readonly useWindowScroll: UnwrapRef< + (typeof import("@vueuse/core"))["useWindowScroll"] + >; + readonly useWindowSize: UnwrapRef< + (typeof import("@vueuse/core"))["useWindowSize"] + >; + readonly watch: UnwrapRef<(typeof import("vue"))["watch"]>; + readonly watchArray: UnwrapRef< + (typeof import("@vueuse/core"))["watchArray"] + >; + readonly watchAtMost: UnwrapRef< + (typeof import("@vueuse/core"))["watchAtMost"] + >; + readonly watchDebounced: UnwrapRef< + (typeof import("@vueuse/core"))["watchDebounced"] + >; + readonly watchDeep: UnwrapRef<(typeof import("@vueuse/core"))["watchDeep"]>; + readonly watchEffect: UnwrapRef<(typeof import("vue"))["watchEffect"]>; + readonly watchIgnorable: UnwrapRef< + (typeof import("@vueuse/core"))["watchIgnorable"] + >; + readonly watchImmediate: UnwrapRef< + (typeof import("@vueuse/core"))["watchImmediate"] + >; + readonly watchOnce: UnwrapRef<(typeof import("@vueuse/core"))["watchOnce"]>; + readonly watchPausable: UnwrapRef< + (typeof import("@vueuse/core"))["watchPausable"] + >; + readonly watchPostEffect: UnwrapRef< + (typeof import("vue"))["watchPostEffect"] + >; + readonly watchSyncEffect: UnwrapRef< + (typeof import("vue"))["watchSyncEffect"] + >; + readonly watchThrottled: UnwrapRef< + (typeof import("@vueuse/core"))["watchThrottled"] + >; + readonly watchTriggerable: UnwrapRef< + (typeof import("@vueuse/core"))["watchTriggerable"] + >; + readonly watchWithFilter: UnwrapRef< + (typeof import("@vueuse/core"))["watchWithFilter"] + >; + readonly whenever: UnwrapRef<(typeof import("@vueuse/core"))["whenever"]>; + } +} +declare module "@vue/runtime-core" { + interface GlobalComponents {} + interface ComponentCustomProperties { + readonly EffectScope: UnwrapRef<(typeof import("vue"))["EffectScope"]>; + readonly ElMessage: UnwrapRef< + (typeof import("element-plus/es"))["ElMessage"] + >; + readonly ElMessageBox: UnwrapRef< + (typeof import("element-plus/es"))["ElMessageBox"] + >; + readonly acceptHMRUpdate: UnwrapRef< + (typeof import("pinia"))["acceptHMRUpdate"] + >; + readonly asyncComputed: UnwrapRef< + (typeof import("@vueuse/core"))["asyncComputed"] + >; + readonly autoResetRef: UnwrapRef< + (typeof import("@vueuse/core"))["autoResetRef"] + >; + readonly computed: UnwrapRef<(typeof import("vue"))["computed"]>; + readonly computedAsync: UnwrapRef< + (typeof import("@vueuse/core"))["computedAsync"] + >; + readonly computedEager: UnwrapRef< + (typeof import("@vueuse/core"))["computedEager"] + >; + readonly computedInject: UnwrapRef< + (typeof import("@vueuse/core"))["computedInject"] + >; + readonly computedWithControl: UnwrapRef< + (typeof import("@vueuse/core"))["computedWithControl"] + >; + readonly controlledComputed: UnwrapRef< + (typeof import("@vueuse/core"))["controlledComputed"] + >; + readonly controlledRef: UnwrapRef< + (typeof import("@vueuse/core"))["controlledRef"] + >; + readonly createApp: UnwrapRef<(typeof import("vue"))["createApp"]>; + readonly createEventHook: UnwrapRef< + (typeof import("@vueuse/core"))["createEventHook"] + >; + readonly createGlobalState: UnwrapRef< + (typeof import("@vueuse/core"))["createGlobalState"] + >; + readonly createInjectionState: UnwrapRef< + (typeof import("@vueuse/core"))["createInjectionState"] + >; + readonly createPinia: UnwrapRef<(typeof import("pinia"))["createPinia"]>; + readonly createReactiveFn: UnwrapRef< + (typeof import("@vueuse/core"))["createReactiveFn"] + >; + readonly createReusableTemplate: UnwrapRef< + (typeof import("@vueuse/core"))["createReusableTemplate"] + >; + readonly createSharedComposable: UnwrapRef< + (typeof import("@vueuse/core"))["createSharedComposable"] + >; + readonly createTemplatePromise: UnwrapRef< + (typeof import("@vueuse/core"))["createTemplatePromise"] + >; + readonly createUnrefFn: UnwrapRef< + (typeof import("@vueuse/core"))["createUnrefFn"] + >; + readonly customRef: UnwrapRef<(typeof import("vue"))["customRef"]>; + readonly debouncedRef: UnwrapRef< + (typeof import("@vueuse/core"))["debouncedRef"] + >; + readonly debouncedWatch: UnwrapRef< + (typeof import("@vueuse/core"))["debouncedWatch"] + >; + readonly defineAsyncComponent: UnwrapRef< + (typeof import("vue"))["defineAsyncComponent"] + >; + readonly defineComponent: UnwrapRef< + (typeof import("vue"))["defineComponent"] + >; + readonly defineStore: UnwrapRef<(typeof import("pinia"))["defineStore"]>; + readonly eagerComputed: UnwrapRef< + (typeof import("@vueuse/core"))["eagerComputed"] + >; + readonly effectScope: UnwrapRef<(typeof import("vue"))["effectScope"]>; + readonly extendRef: UnwrapRef<(typeof import("@vueuse/core"))["extendRef"]>; + readonly getActivePinia: UnwrapRef< + (typeof import("pinia"))["getActivePinia"] + >; + readonly getCurrentInstance: UnwrapRef< + (typeof import("vue"))["getCurrentInstance"] + >; + readonly getCurrentScope: UnwrapRef< + (typeof import("vue"))["getCurrentScope"] + >; + readonly h: UnwrapRef<(typeof import("vue"))["h"]>; + readonly ignorableWatch: UnwrapRef< + (typeof import("@vueuse/core"))["ignorableWatch"] + >; + readonly inject: UnwrapRef<(typeof import("vue"))["inject"]>; + readonly injectLocal: UnwrapRef< + (typeof import("@vueuse/core"))["injectLocal"] + >; + readonly isDefined: UnwrapRef<(typeof import("@vueuse/core"))["isDefined"]>; + readonly isProxy: UnwrapRef<(typeof import("vue"))["isProxy"]>; + readonly isReactive: UnwrapRef<(typeof import("vue"))["isReactive"]>; + readonly isReadonly: UnwrapRef<(typeof import("vue"))["isReadonly"]>; + readonly isRef: UnwrapRef<(typeof import("vue"))["isRef"]>; + readonly makeDestructurable: UnwrapRef< + (typeof import("@vueuse/core"))["makeDestructurable"] + >; + readonly mapActions: UnwrapRef<(typeof import("pinia"))["mapActions"]>; + readonly mapGetters: UnwrapRef<(typeof import("pinia"))["mapGetters"]>; + readonly mapState: UnwrapRef<(typeof import("pinia"))["mapState"]>; + readonly mapStores: UnwrapRef<(typeof import("pinia"))["mapStores"]>; + readonly mapWritableState: UnwrapRef< + (typeof import("pinia"))["mapWritableState"] + >; + readonly markRaw: UnwrapRef<(typeof import("vue"))["markRaw"]>; + readonly nextTick: UnwrapRef<(typeof import("vue"))["nextTick"]>; + readonly onActivated: UnwrapRef<(typeof import("vue"))["onActivated"]>; + readonly onBeforeMount: UnwrapRef<(typeof import("vue"))["onBeforeMount"]>; + readonly onBeforeRouteLeave: UnwrapRef< + (typeof import("vue-router"))["onBeforeRouteLeave"] + >; + readonly onBeforeRouteUpdate: UnwrapRef< + (typeof import("vue-router"))["onBeforeRouteUpdate"] + >; + readonly onBeforeUnmount: UnwrapRef< + (typeof import("vue"))["onBeforeUnmount"] + >; + readonly onBeforeUpdate: UnwrapRef< + (typeof import("vue"))["onBeforeUpdate"] + >; + readonly onClickOutside: UnwrapRef< + (typeof import("@vueuse/core"))["onClickOutside"] + >; + readonly onDeactivated: UnwrapRef<(typeof import("vue"))["onDeactivated"]>; + readonly onErrorCaptured: UnwrapRef< + (typeof import("vue"))["onErrorCaptured"] + >; + readonly onKeyStroke: UnwrapRef< + (typeof import("@vueuse/core"))["onKeyStroke"] + >; + readonly onLongPress: UnwrapRef< + (typeof import("@vueuse/core"))["onLongPress"] + >; + readonly onMounted: UnwrapRef<(typeof import("vue"))["onMounted"]>; + readonly onRenderTracked: UnwrapRef< + (typeof import("vue"))["onRenderTracked"] + >; + readonly onRenderTriggered: UnwrapRef< + (typeof import("vue"))["onRenderTriggered"] + >; + readonly onScopeDispose: UnwrapRef< + (typeof import("vue"))["onScopeDispose"] + >; + readonly onServerPrefetch: UnwrapRef< + (typeof import("vue"))["onServerPrefetch"] + >; + readonly onStartTyping: UnwrapRef< + (typeof import("@vueuse/core"))["onStartTyping"] + >; + readonly onUnmounted: UnwrapRef<(typeof import("vue"))["onUnmounted"]>; + readonly onUpdated: UnwrapRef<(typeof import("vue"))["onUpdated"]>; + readonly pausableWatch: UnwrapRef< + (typeof import("@vueuse/core"))["pausableWatch"] + >; + readonly provide: UnwrapRef<(typeof import("vue"))["provide"]>; + readonly provideLocal: UnwrapRef< + (typeof import("@vueuse/core"))["provideLocal"] + >; + readonly reactify: UnwrapRef<(typeof import("@vueuse/core"))["reactify"]>; + readonly reactifyObject: UnwrapRef< + (typeof import("@vueuse/core"))["reactifyObject"] + >; + readonly reactive: UnwrapRef<(typeof import("vue"))["reactive"]>; + readonly reactiveComputed: UnwrapRef< + (typeof import("@vueuse/core"))["reactiveComputed"] + >; + readonly reactiveOmit: UnwrapRef< + (typeof import("@vueuse/core"))["reactiveOmit"] + >; + readonly reactivePick: UnwrapRef< + (typeof import("@vueuse/core"))["reactivePick"] + >; + readonly readonly: UnwrapRef<(typeof import("vue"))["readonly"]>; + readonly ref: UnwrapRef<(typeof import("vue"))["ref"]>; + readonly refAutoReset: UnwrapRef< + (typeof import("@vueuse/core"))["refAutoReset"] + >; + readonly refDebounced: UnwrapRef< + (typeof import("@vueuse/core"))["refDebounced"] + >; + readonly refDefault: UnwrapRef< + (typeof import("@vueuse/core"))["refDefault"] + >; + readonly refThrottled: UnwrapRef< + (typeof import("@vueuse/core"))["refThrottled"] + >; + readonly refWithControl: UnwrapRef< + (typeof import("@vueuse/core"))["refWithControl"] + >; + readonly resolveComponent: UnwrapRef< + (typeof import("vue"))["resolveComponent"] + >; + readonly resolveRef: UnwrapRef< + (typeof import("@vueuse/core"))["resolveRef"] + >; + readonly resolveUnref: UnwrapRef< + (typeof import("@vueuse/core"))["resolveUnref"] + >; + readonly setActivePinia: UnwrapRef< + (typeof import("pinia"))["setActivePinia"] + >; + readonly setMapStoreSuffix: UnwrapRef< + (typeof import("pinia"))["setMapStoreSuffix"] + >; + readonly shallowReactive: UnwrapRef< + (typeof import("vue"))["shallowReactive"] + >; + readonly shallowReadonly: UnwrapRef< + (typeof import("vue"))["shallowReadonly"] + >; + readonly shallowRef: UnwrapRef<(typeof import("vue"))["shallowRef"]>; + readonly storeToRefs: UnwrapRef<(typeof import("pinia"))["storeToRefs"]>; + readonly syncRef: UnwrapRef<(typeof import("@vueuse/core"))["syncRef"]>; + readonly syncRefs: UnwrapRef<(typeof import("@vueuse/core"))["syncRefs"]>; + readonly templateRef: UnwrapRef< + (typeof import("@vueuse/core"))["templateRef"] + >; + readonly throttledRef: UnwrapRef< + (typeof import("@vueuse/core"))["throttledRef"] + >; + readonly throttledWatch: UnwrapRef< + (typeof import("@vueuse/core"))["throttledWatch"] + >; + readonly toRaw: UnwrapRef<(typeof import("vue"))["toRaw"]>; + readonly toReactive: UnwrapRef< + (typeof import("@vueuse/core"))["toReactive"] + >; + readonly toRef: UnwrapRef<(typeof import("vue"))["toRef"]>; + readonly toRefs: UnwrapRef<(typeof import("vue"))["toRefs"]>; + readonly toValue: UnwrapRef<(typeof import("vue"))["toValue"]>; + readonly triggerRef: UnwrapRef<(typeof import("vue"))["triggerRef"]>; + readonly tryOnBeforeMount: UnwrapRef< + (typeof import("@vueuse/core"))["tryOnBeforeMount"] + >; + readonly tryOnBeforeUnmount: UnwrapRef< + (typeof import("@vueuse/core"))["tryOnBeforeUnmount"] + >; + readonly tryOnMounted: UnwrapRef< + (typeof import("@vueuse/core"))["tryOnMounted"] + >; + readonly tryOnScopeDispose: UnwrapRef< + (typeof import("@vueuse/core"))["tryOnScopeDispose"] + >; + readonly tryOnUnmounted: UnwrapRef< + (typeof import("@vueuse/core"))["tryOnUnmounted"] + >; + readonly unref: UnwrapRef<(typeof import("vue"))["unref"]>; + readonly unrefElement: UnwrapRef< + (typeof import("@vueuse/core"))["unrefElement"] + >; + readonly until: UnwrapRef<(typeof import("@vueuse/core"))["until"]>; + readonly useActiveElement: UnwrapRef< + (typeof import("@vueuse/core"))["useActiveElement"] + >; + readonly useAnimate: UnwrapRef< + (typeof import("@vueuse/core"))["useAnimate"] + >; + readonly useArrayDifference: UnwrapRef< + (typeof import("@vueuse/core"))["useArrayDifference"] + >; + readonly useArrayEvery: UnwrapRef< + (typeof import("@vueuse/core"))["useArrayEvery"] + >; + readonly useArrayFilter: UnwrapRef< + (typeof import("@vueuse/core"))["useArrayFilter"] + >; + readonly useArrayFind: UnwrapRef< + (typeof import("@vueuse/core"))["useArrayFind"] + >; + readonly useArrayFindIndex: UnwrapRef< + (typeof import("@vueuse/core"))["useArrayFindIndex"] + >; + readonly useArrayFindLast: UnwrapRef< + (typeof import("@vueuse/core"))["useArrayFindLast"] + >; + readonly useArrayIncludes: UnwrapRef< + (typeof import("@vueuse/core"))["useArrayIncludes"] + >; + readonly useArrayJoin: UnwrapRef< + (typeof import("@vueuse/core"))["useArrayJoin"] + >; + readonly useArrayMap: UnwrapRef< + (typeof import("@vueuse/core"))["useArrayMap"] + >; + readonly useArrayReduce: UnwrapRef< + (typeof import("@vueuse/core"))["useArrayReduce"] + >; + readonly useArraySome: UnwrapRef< + (typeof import("@vueuse/core"))["useArraySome"] + >; + readonly useArrayUnique: UnwrapRef< + (typeof import("@vueuse/core"))["useArrayUnique"] + >; + readonly useAsyncQueue: UnwrapRef< + (typeof import("@vueuse/core"))["useAsyncQueue"] + >; + readonly useAsyncState: UnwrapRef< + (typeof import("@vueuse/core"))["useAsyncState"] + >; + readonly useAttrs: UnwrapRef<(typeof import("vue"))["useAttrs"]>; + readonly useBase64: UnwrapRef<(typeof import("@vueuse/core"))["useBase64"]>; + readonly useBattery: UnwrapRef< + (typeof import("@vueuse/core"))["useBattery"] + >; + readonly useBluetooth: UnwrapRef< + (typeof import("@vueuse/core"))["useBluetooth"] + >; + readonly useBreakpoints: UnwrapRef< + (typeof import("@vueuse/core"))["useBreakpoints"] + >; + readonly useBroadcastChannel: UnwrapRef< + (typeof import("@vueuse/core"))["useBroadcastChannel"] + >; + readonly useBrowserLocation: UnwrapRef< + (typeof import("@vueuse/core"))["useBrowserLocation"] + >; + readonly useCached: UnwrapRef<(typeof import("@vueuse/core"))["useCached"]>; + readonly useClipboard: UnwrapRef< + (typeof import("@vueuse/core"))["useClipboard"] + >; + readonly useClipboardItems: UnwrapRef< + (typeof import("@vueuse/core"))["useClipboardItems"] + >; + readonly useCloned: UnwrapRef<(typeof import("@vueuse/core"))["useCloned"]>; + readonly useColorMode: UnwrapRef< + (typeof import("@vueuse/core"))["useColorMode"] + >; + readonly useConfirmDialog: UnwrapRef< + (typeof import("@vueuse/core"))["useConfirmDialog"] + >; + readonly useCounter: UnwrapRef< + (typeof import("@vueuse/core"))["useCounter"] + >; + readonly useCssModule: UnwrapRef<(typeof import("vue"))["useCssModule"]>; + readonly useCssVar: UnwrapRef<(typeof import("@vueuse/core"))["useCssVar"]>; + readonly useCssVars: UnwrapRef<(typeof import("vue"))["useCssVars"]>; + readonly useCurrentElement: UnwrapRef< + (typeof import("@vueuse/core"))["useCurrentElement"] + >; + readonly useCycleList: UnwrapRef< + (typeof import("@vueuse/core"))["useCycleList"] + >; + readonly useDark: UnwrapRef<(typeof import("@vueuse/core"))["useDark"]>; + readonly useDateFormat: UnwrapRef< + (typeof import("@vueuse/core"))["useDateFormat"] + >; + readonly useDebounce: UnwrapRef< + (typeof import("@vueuse/core"))["useDebounce"] + >; + readonly useDebounceFn: UnwrapRef< + (typeof import("@vueuse/core"))["useDebounceFn"] + >; + readonly useDebouncedRefHistory: UnwrapRef< + (typeof import("@vueuse/core"))["useDebouncedRefHistory"] + >; + readonly useDeviceMotion: UnwrapRef< + (typeof import("@vueuse/core"))["useDeviceMotion"] + >; + readonly useDeviceOrientation: UnwrapRef< + (typeof import("@vueuse/core"))["useDeviceOrientation"] + >; + readonly useDevicePixelRatio: UnwrapRef< + (typeof import("@vueuse/core"))["useDevicePixelRatio"] + >; + readonly useDevicesList: UnwrapRef< + (typeof import("@vueuse/core"))["useDevicesList"] + >; + readonly useDisplayMedia: UnwrapRef< + (typeof import("@vueuse/core"))["useDisplayMedia"] + >; + readonly useDocumentVisibility: UnwrapRef< + (typeof import("@vueuse/core"))["useDocumentVisibility"] + >; + readonly useDraggable: UnwrapRef< + (typeof import("@vueuse/core"))["useDraggable"] + >; + readonly useDropZone: UnwrapRef< + (typeof import("@vueuse/core"))["useDropZone"] + >; + readonly useElementBounding: UnwrapRef< + (typeof import("@vueuse/core"))["useElementBounding"] + >; + readonly useElementByPoint: UnwrapRef< + (typeof import("@vueuse/core"))["useElementByPoint"] + >; + readonly useElementHover: UnwrapRef< + (typeof import("@vueuse/core"))["useElementHover"] + >; + readonly useElementSize: UnwrapRef< + (typeof import("@vueuse/core"))["useElementSize"] + >; + readonly useElementVisibility: UnwrapRef< + (typeof import("@vueuse/core"))["useElementVisibility"] + >; + readonly useEventBus: UnwrapRef< + (typeof import("@vueuse/core"))["useEventBus"] + >; + readonly useEventListener: UnwrapRef< + (typeof import("@vueuse/core"))["useEventListener"] + >; + readonly useEventSource: UnwrapRef< + (typeof import("@vueuse/core"))["useEventSource"] + >; + readonly useEyeDropper: UnwrapRef< + (typeof import("@vueuse/core"))["useEyeDropper"] + >; + readonly useFavicon: UnwrapRef< + (typeof import("@vueuse/core"))["useFavicon"] + >; + readonly useFetch: UnwrapRef<(typeof import("@vueuse/core"))["useFetch"]>; + readonly useFileDialog: UnwrapRef< + (typeof import("@vueuse/core"))["useFileDialog"] + >; + readonly useFileSystemAccess: UnwrapRef< + (typeof import("@vueuse/core"))["useFileSystemAccess"] + >; + readonly useFocus: UnwrapRef<(typeof import("@vueuse/core"))["useFocus"]>; + readonly useFocusWithin: UnwrapRef< + (typeof import("@vueuse/core"))["useFocusWithin"] + >; + readonly useFps: UnwrapRef<(typeof import("@vueuse/core"))["useFps"]>; + readonly useFullscreen: UnwrapRef< + (typeof import("@vueuse/core"))["useFullscreen"] + >; + readonly useGamepad: UnwrapRef< + (typeof import("@vueuse/core"))["useGamepad"] + >; + readonly useGeolocation: UnwrapRef< + (typeof import("@vueuse/core"))["useGeolocation"] + >; + readonly useI18n: UnwrapRef<(typeof import("vue-i18n"))["useI18n"]>; + readonly useIdle: UnwrapRef<(typeof import("@vueuse/core"))["useIdle"]>; + readonly useImage: UnwrapRef<(typeof import("@vueuse/core"))["useImage"]>; + readonly useInfiniteScroll: UnwrapRef< + (typeof import("@vueuse/core"))["useInfiniteScroll"] + >; + readonly useIntersectionObserver: UnwrapRef< + (typeof import("@vueuse/core"))["useIntersectionObserver"] + >; + readonly useInterval: UnwrapRef< + (typeof import("@vueuse/core"))["useInterval"] + >; + readonly useIntervalFn: UnwrapRef< + (typeof import("@vueuse/core"))["useIntervalFn"] + >; + readonly useKeyModifier: UnwrapRef< + (typeof import("@vueuse/core"))["useKeyModifier"] + >; + readonly useLastChanged: UnwrapRef< + (typeof import("@vueuse/core"))["useLastChanged"] + >; + readonly useLink: UnwrapRef<(typeof import("vue-router"))["useLink"]>; + readonly useLocalStorage: UnwrapRef< + (typeof import("@vueuse/core"))["useLocalStorage"] + >; + readonly useMagicKeys: UnwrapRef< + (typeof import("@vueuse/core"))["useMagicKeys"] + >; + readonly useManualRefHistory: UnwrapRef< + (typeof import("@vueuse/core"))["useManualRefHistory"] + >; + readonly useMediaControls: UnwrapRef< + (typeof import("@vueuse/core"))["useMediaControls"] + >; + readonly useMediaQuery: UnwrapRef< + (typeof import("@vueuse/core"))["useMediaQuery"] + >; + readonly useMemoize: UnwrapRef< + (typeof import("@vueuse/core"))["useMemoize"] + >; + readonly useMemory: UnwrapRef<(typeof import("@vueuse/core"))["useMemory"]>; + readonly useMounted: UnwrapRef< + (typeof import("@vueuse/core"))["useMounted"] + >; + readonly useMouse: UnwrapRef<(typeof import("@vueuse/core"))["useMouse"]>; + readonly useMouseInElement: UnwrapRef< + (typeof import("@vueuse/core"))["useMouseInElement"] + >; + readonly useMousePressed: UnwrapRef< + (typeof import("@vueuse/core"))["useMousePressed"] + >; + readonly useMutationObserver: UnwrapRef< + (typeof import("@vueuse/core"))["useMutationObserver"] + >; + readonly useNavigatorLanguage: UnwrapRef< + (typeof import("@vueuse/core"))["useNavigatorLanguage"] + >; + readonly useNetwork: UnwrapRef< + (typeof import("@vueuse/core"))["useNetwork"] + >; + readonly useNow: UnwrapRef<(typeof import("@vueuse/core"))["useNow"]>; + readonly useObjectUrl: UnwrapRef< + (typeof import("@vueuse/core"))["useObjectUrl"] + >; + readonly useOffsetPagination: UnwrapRef< + (typeof import("@vueuse/core"))["useOffsetPagination"] + >; + readonly useOnline: UnwrapRef<(typeof import("@vueuse/core"))["useOnline"]>; + readonly usePageLeave: UnwrapRef< + (typeof import("@vueuse/core"))["usePageLeave"] + >; + readonly useParallax: UnwrapRef< + (typeof import("@vueuse/core"))["useParallax"] + >; + readonly useParentElement: UnwrapRef< + (typeof import("@vueuse/core"))["useParentElement"] + >; + readonly usePerformanceObserver: UnwrapRef< + (typeof import("@vueuse/core"))["usePerformanceObserver"] + >; + readonly usePermission: UnwrapRef< + (typeof import("@vueuse/core"))["usePermission"] + >; + readonly usePointer: UnwrapRef< + (typeof import("@vueuse/core"))["usePointer"] + >; + readonly usePointerLock: UnwrapRef< + (typeof import("@vueuse/core"))["usePointerLock"] + >; + readonly usePointerSwipe: UnwrapRef< + (typeof import("@vueuse/core"))["usePointerSwipe"] + >; + readonly usePreferredColorScheme: UnwrapRef< + (typeof import("@vueuse/core"))["usePreferredColorScheme"] + >; + readonly usePreferredContrast: UnwrapRef< + (typeof import("@vueuse/core"))["usePreferredContrast"] + >; + readonly usePreferredDark: UnwrapRef< + (typeof import("@vueuse/core"))["usePreferredDark"] + >; + readonly usePreferredLanguages: UnwrapRef< + (typeof import("@vueuse/core"))["usePreferredLanguages"] + >; + readonly usePreferredReducedMotion: UnwrapRef< + (typeof import("@vueuse/core"))["usePreferredReducedMotion"] + >; + readonly usePrevious: UnwrapRef< + (typeof import("@vueuse/core"))["usePrevious"] + >; + readonly useRafFn: UnwrapRef<(typeof import("@vueuse/core"))["useRafFn"]>; + readonly useRefHistory: UnwrapRef< + (typeof import("@vueuse/core"))["useRefHistory"] + >; + readonly useResizeObserver: UnwrapRef< + (typeof import("@vueuse/core"))["useResizeObserver"] + >; + readonly useRoute: UnwrapRef<(typeof import("vue-router"))["useRoute"]>; + readonly useRouter: UnwrapRef<(typeof import("vue-router"))["useRouter"]>; + readonly useScreenOrientation: UnwrapRef< + (typeof import("@vueuse/core"))["useScreenOrientation"] + >; + readonly useScreenSafeArea: UnwrapRef< + (typeof import("@vueuse/core"))["useScreenSafeArea"] + >; + readonly useScriptTag: UnwrapRef< + (typeof import("@vueuse/core"))["useScriptTag"] + >; + readonly useScroll: UnwrapRef<(typeof import("@vueuse/core"))["useScroll"]>; + readonly useScrollLock: UnwrapRef< + (typeof import("@vueuse/core"))["useScrollLock"] + >; + readonly useSessionStorage: UnwrapRef< + (typeof import("@vueuse/core"))["useSessionStorage"] + >; + readonly useShare: UnwrapRef<(typeof import("@vueuse/core"))["useShare"]>; + readonly useSlots: UnwrapRef<(typeof import("vue"))["useSlots"]>; + readonly useSorted: UnwrapRef<(typeof import("@vueuse/core"))["useSorted"]>; + readonly useSpeechRecognition: UnwrapRef< + (typeof import("@vueuse/core"))["useSpeechRecognition"] + >; + readonly useSpeechSynthesis: UnwrapRef< + (typeof import("@vueuse/core"))["useSpeechSynthesis"] + >; + readonly useStepper: UnwrapRef< + (typeof import("@vueuse/core"))["useStepper"] + >; + readonly useStorage: UnwrapRef< + (typeof import("@vueuse/core"))["useStorage"] + >; + readonly useStorageAsync: UnwrapRef< + (typeof import("@vueuse/core"))["useStorageAsync"] + >; + readonly useStyleTag: UnwrapRef< + (typeof import("@vueuse/core"))["useStyleTag"] + >; + readonly useSupported: UnwrapRef< + (typeof import("@vueuse/core"))["useSupported"] + >; + readonly useSwipe: UnwrapRef<(typeof import("@vueuse/core"))["useSwipe"]>; + readonly useTemplateRefsList: UnwrapRef< + (typeof import("@vueuse/core"))["useTemplateRefsList"] + >; + readonly useTextDirection: UnwrapRef< + (typeof import("@vueuse/core"))["useTextDirection"] + >; + readonly useTextSelection: UnwrapRef< + (typeof import("@vueuse/core"))["useTextSelection"] + >; + readonly useTextareaAutosize: UnwrapRef< + (typeof import("@vueuse/core"))["useTextareaAutosize"] + >; + readonly useThrottle: UnwrapRef< + (typeof import("@vueuse/core"))["useThrottle"] + >; + readonly useThrottleFn: UnwrapRef< + (typeof import("@vueuse/core"))["useThrottleFn"] + >; + readonly useThrottledRefHistory: UnwrapRef< + (typeof import("@vueuse/core"))["useThrottledRefHistory"] + >; + readonly useTimeAgo: UnwrapRef< + (typeof import("@vueuse/core"))["useTimeAgo"] + >; + readonly useTimeout: UnwrapRef< + (typeof import("@vueuse/core"))["useTimeout"] + >; + readonly useTimeoutFn: UnwrapRef< + (typeof import("@vueuse/core"))["useTimeoutFn"] + >; + readonly useTimeoutPoll: UnwrapRef< + (typeof import("@vueuse/core"))["useTimeoutPoll"] + >; + readonly useTimestamp: UnwrapRef< + (typeof import("@vueuse/core"))["useTimestamp"] + >; + readonly useTitle: UnwrapRef<(typeof import("@vueuse/core"))["useTitle"]>; + readonly useToNumber: UnwrapRef< + (typeof import("@vueuse/core"))["useToNumber"] + >; + readonly useToString: UnwrapRef< + (typeof import("@vueuse/core"))["useToString"] + >; + readonly useToggle: UnwrapRef<(typeof import("@vueuse/core"))["useToggle"]>; + readonly useTransition: UnwrapRef< + (typeof import("@vueuse/core"))["useTransition"] + >; + readonly useUrlSearchParams: UnwrapRef< + (typeof import("@vueuse/core"))["useUrlSearchParams"] + >; + readonly useUserMedia: UnwrapRef< + (typeof import("@vueuse/core"))["useUserMedia"] + >; + readonly useVModel: UnwrapRef<(typeof import("@vueuse/core"))["useVModel"]>; + readonly useVModels: UnwrapRef< + (typeof import("@vueuse/core"))["useVModels"] + >; + readonly useVibrate: UnwrapRef< + (typeof import("@vueuse/core"))["useVibrate"] + >; + readonly useVirtualList: UnwrapRef< + (typeof import("@vueuse/core"))["useVirtualList"] + >; + readonly useWakeLock: UnwrapRef< + (typeof import("@vueuse/core"))["useWakeLock"] + >; + readonly useWebNotification: UnwrapRef< + (typeof import("@vueuse/core"))["useWebNotification"] + >; + readonly useWebSocket: UnwrapRef< + (typeof import("@vueuse/core"))["useWebSocket"] + >; + readonly useWebWorker: UnwrapRef< + (typeof import("@vueuse/core"))["useWebWorker"] + >; + readonly useWebWorkerFn: UnwrapRef< + (typeof import("@vueuse/core"))["useWebWorkerFn"] + >; + readonly useWindowFocus: UnwrapRef< + (typeof import("@vueuse/core"))["useWindowFocus"] + >; + readonly useWindowScroll: UnwrapRef< + (typeof import("@vueuse/core"))["useWindowScroll"] + >; + readonly useWindowSize: UnwrapRef< + (typeof import("@vueuse/core"))["useWindowSize"] + >; + readonly watch: UnwrapRef<(typeof import("vue"))["watch"]>; + readonly watchArray: UnwrapRef< + (typeof import("@vueuse/core"))["watchArray"] + >; + readonly watchAtMost: UnwrapRef< + (typeof import("@vueuse/core"))["watchAtMost"] + >; + readonly watchDebounced: UnwrapRef< + (typeof import("@vueuse/core"))["watchDebounced"] + >; + readonly watchDeep: UnwrapRef<(typeof import("@vueuse/core"))["watchDeep"]>; + readonly watchEffect: UnwrapRef<(typeof import("vue"))["watchEffect"]>; + readonly watchIgnorable: UnwrapRef< + (typeof import("@vueuse/core"))["watchIgnorable"] + >; + readonly watchImmediate: UnwrapRef< + (typeof import("@vueuse/core"))["watchImmediate"] + >; + readonly watchOnce: UnwrapRef<(typeof import("@vueuse/core"))["watchOnce"]>; + readonly watchPausable: UnwrapRef< + (typeof import("@vueuse/core"))["watchPausable"] + >; + readonly watchPostEffect: UnwrapRef< + (typeof import("vue"))["watchPostEffect"] + >; + readonly watchSyncEffect: UnwrapRef< + (typeof import("vue"))["watchSyncEffect"] + >; + readonly watchThrottled: UnwrapRef< + (typeof import("@vueuse/core"))["watchThrottled"] + >; + readonly watchTriggerable: UnwrapRef< + (typeof import("@vueuse/core"))["watchTriggerable"] + >; + readonly watchWithFilter: UnwrapRef< + (typeof import("@vueuse/core"))["watchWithFilter"] + >; + readonly whenever: UnwrapRef<(typeof import("@vueuse/core"))["whenever"]>; + } +} diff --git a/resources/vue/src/types/components.d.ts b/resources/vue/src/types/components.d.ts new file mode 100644 index 0000000..b3d88fb --- /dev/null +++ b/resources/vue/src/types/components.d.ts @@ -0,0 +1,108 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// Generated by unplugin-vue-components +// Read more: https://github.com/vuejs/core/pull/3399 +export {} + +declare module "vue" { + export interface GlobalComponents { + AppLink: (typeof import("./../components/AppLink/index.vue"))["default"]; + AppMain: (typeof import("./../layout/components/AppMain/index.vue"))["default"]; + VisitTrend: (typeof import("./../views/dashboard/components/VisitTrend.vue"))["default"]; + Breadcrumb: (typeof import("./../components/Breadcrumb/index.vue"))["default"]; + CopyButton: (typeof import("./../components/CopyButton/index.vue"))["default"]; + CURD: (typeof import("./../components/CURD/index.vue"))["default"]; + DeptTree: (typeof import("./../views/system/user/components/dept-tree.vue"))["default"]; + UserImport: (typeof import("./../views/system/user/components/user-import.vue"))["default"]; + Dictionary: (typeof import("./../components/Dictionary/index.vue"))["default"]; + DictItem: (typeof import("./../views/system/dict/components/dict-item.vue"))["default"]; + ElBacktop: (typeof import("element-plus/es"))["ElBacktop"]; + ElBreadcrumb: (typeof import("element-plus/es"))["ElBreadcrumb"]; + ElBreadcrumbItem: (typeof import("element-plus/es"))["ElBreadcrumbItem"]; + ElButton: (typeof import("element-plus/es"))["ElButton"]; + ElCard: (typeof import("element-plus/es"))["ElCard"]; + ElCheckbox: (typeof import("element-plus/es"))["ElCheckbox"]; + ElCheckboxGroup: (typeof import("element-plus/es"))["ElCheckboxGroup"]; + ElCol: (typeof import("element-plus/es"))["ElCol"]; + ElColorPicker: (typeof import("element-plus/es"))["ElColorPicker"]; + ElConfigProvider: (typeof import("element-plus/es"))["ElConfigProvider"]; + ElDatePicker: (typeof import("element-plus/es"))["ElDatePicker"]; + ElDialog: (typeof import("element-plus/es"))["ElDialog"]; + ElDivider: (typeof import("element-plus/es"))["ElDivider"]; + ElDrawer: (typeof import("element-plus/es"))["ElDrawer"]; + ElDropdown: (typeof import("element-plus/es"))["ElDropdown"]; + ElDropdownItem: (typeof import("element-plus/es"))["ElDropdownItem"]; + ElDropdownMenu: (typeof import("element-plus/es"))["ElDropdownMenu"]; + ElForm: (typeof import("element-plus/es"))["ElForm"]; + ElFormItem: (typeof import("element-plus/es"))["ElFormItem"]; + ElIcon: (typeof import("element-plus/es"))["ElIcon"]; + ElImage: (typeof import("element-plus/es"))["ElImage"]; + ElInput: (typeof import("element-plus/es"))["ElInput"]; + ElInputNumber: (typeof import("element-plus/es"))["ElInputNumber"]; + ElLink: (typeof import("element-plus/es"))["ElLink"]; + ElMenu: (typeof import("element-plus/es"))["ElMenu"]; + ElMenuItem: (typeof import("element-plus/es"))["ElMenuItem"]; + ElOption: (typeof import("element-plus/es"))["ElOption"]; + ElPagination: (typeof import("element-plus/es"))["ElPagination"]; + ElPopover: (typeof import("element-plus/es"))["ElPopover"]; + ElRadio: (typeof import("element-plus/es"))["ElRadio"]; + ElRadioGroup: (typeof import("element-plus/es"))["ElRadioGroup"]; + ElRow: (typeof import("element-plus/es"))["ElRow"]; + ElScrollbar: (typeof import("element-plus/es"))["ElScrollbar"]; + ElSelect: (typeof import("element-plus/es"))["ElSelect"]; + ElStatistic: (typeof import("element-plus/es"))["ElStatistic"]; + ElSubMenu: (typeof import("element-plus/es"))["ElSubMenu"]; + ElSwitch: (typeof import("element-plus/es"))["ElSwitch"]; + ElTable: (typeof import("element-plus/es"))["ElTable"]; + ElTableColumn: (typeof import("element-plus/es"))["ElTableColumn"]; + ElTag: (typeof import("element-plus/es"))["ElTag"]; + ElText: (typeof import("element-plus/es"))["ElText"]; + ElTooltip: (typeof import("element-plus/es"))["ElTooltip"]; + ElTreeSelect: (typeof import("element-plus/es"))["ElTreeSelect"]; + ElUpload: (typeof import("element-plus/es"))["ElUpload"]; + ElWatermark: (typeof import("element-plus/es"))["ElWatermark"]; + ElSkeleton: (typeof import("element-plus/es"))["ElSkeleton"]; + Form: (typeof import("./../components/CURD/Form.vue"))["default"]; + FunnelChart: (typeof import("./../views/dashboard/components/FunnelChart.vue"))["default"]; + GithubCorner: (typeof import("./../components/GithubCorner/index.vue"))["default"]; + Hamburger: (typeof import("./../components/Hamburger/index.vue"))["default"]; + IconSelect: (typeof import("./../components/IconSelect/index.vue"))["default"]; + IEpArrowDown: (typeof import("~icons/ep/arrow-down"))["default"]; + IEpArrowUp: (typeof import("~icons/ep/arrow-up"))["default"]; + IEpClose: (typeof import("~icons/ep/close"))["default"]; + IEpDownload: (typeof import("~icons/ep/download"))["default"]; + LangSelect: (typeof import("./../components/LangSelect/index.vue"))["default"]; + LayoutSelect: (typeof import("./../layout/components/Settings/components/LayoutSelect.vue"))["default"]; + MultiUpload: (typeof import("./../components/Upload/MultiUpload.vue"))["default"]; + NavBar: (typeof import("./../layout/components/NavBar/index.vue"))["default"]; + NavbarAction: (typeof import("./../layout/components/NavBar/components/NavbarAction.vue"))["default"]; + PageContent: (typeof import("./../components/CURD/PageContent.vue"))["default"]; + PageForm: (typeof import("./../components/CURD/PageForm.vue"))["default"]; + PageModal: (typeof import("./../components/CURD/PageModal.vue"))["default"]; + PageSearch: (typeof import("./../components/CURD/PageSearch.vue"))["default"]; + Pagination: (typeof import("./../components/Pagination/index.vue"))["default"]; + PieChart: (typeof import("./../views/dashboard/components/PieChart.vue"))["default"]; + RadarChart: (typeof import("./../views/dashboard/components/RadarChart.vue"))["default"]; + RouterLink: (typeof import("vue-router"))["RouterLink"]; + RouterView: (typeof import("vue-router"))["RouterView"]; + Settings: (typeof import("./../layout/components/Settings/index.vue"))["default"]; + Sidebar: (typeof import("./../layout/components/Sidebar/index.vue"))["default"]; + SidebarLogo: (typeof import("./../layout/components/Sidebar/components/SidebarLogo.vue"))["default"]; + SidebarMenu: (typeof import("./../layout/components/Sidebar/components/SidebarMenu.vue"))["default"]; + SidebarMenuItem: (typeof import("./../layout/components/Sidebar/components/SidebarMenuItem.vue"))["default"]; + SidebarMenuItemTitle: (typeof import("./../layout/components/Sidebar/components/SidebarMenuItemTitle.vue"))["default"]; + SidebarMixTopMenu: (typeof import("./../layout/components/Sidebar/components/SidebarMixTopMenu.vue"))["default"]; + SingleUpload: (typeof import("./../components/Upload/SingleUpload.vue"))["default"]; + SizeSelect: (typeof import("./../components/SizeSelect/index.vue"))["default"]; + SvgIcon: (typeof import("./../components/SvgIcon/index.vue"))["default"]; + TableSelect: (typeof import("./../components/TableSelect/index.vue"))["default"]; + TagsView: (typeof import("./../layout/components/TagsView/index.vue"))["default"]; + ThemeColorPicker: (typeof import("./../layout/components/Settings/components/ThemeColorPicker.vue"))["default"]; + WangEditor: (typeof import("./../components/WangEditor/index.vue"))["default"]; + } + export interface ComponentCustomProperties { + vLoading: (typeof import("element-plus/es"))["ElLoadingDirective"]; + } +} + diff --git a/resources/vue/src/types/env.d.ts b/resources/vue/src/types/env.d.ts new file mode 100644 index 0000000..7ed1377 --- /dev/null +++ b/resources/vue/src/types/env.d.ts @@ -0,0 +1,40 @@ +// https://cn.vitejs.dev/guide/env-and-mode + +declare module "*.vue" { + import { DefineComponent } from "vue"; + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types + const component: DefineComponent<{}, {}, any>; + export default component; +} + +// TypeScript 类型提示都为 string: https://github.com/vitejs/vite/issues/6930 +interface ImportMetaEnv { + /** 应用端口 */ + VITE_APP_PORT: number; + /** API 基础路径(代理前缀) */ + VITE_APP_BASE_API: string; + /** API 地址 */ + VITE_APP_API_URL: string; + /** 是否开启 Mock 服务 */ + VITE_MOCK_DEV_SERVER: boolean; +} + +interface ImportMeta { + readonly env: ImportMetaEnv; +} + +/** + * 平台的名称、版本、运行所需的`node`版本、依赖、构建时间的类型提示 + */ +declare const __APP_INFO__: { + pkg: { + name: string; + version: string; + engines: { + node: string; + }; + dependencies: Record; + devDependencies: Record; + }; + buildTimestamp: number; +}; diff --git a/resources/vue/src/types/global.d.ts b/resources/vue/src/types/global.d.ts new file mode 100644 index 0000000..146d5bf --- /dev/null +++ b/resources/vue/src/types/global.d.ts @@ -0,0 +1,95 @@ +declare global { + /** + * 响应数据 + */ + interface ResponseData { + code: string; + data: T; + msg: string; + } + + /** + * 分页查询参数 + */ + interface PageQuery { + pageNum: number; + pageSize: number; + } + + /** + * 分页响应对象 + */ + interface PageResult { + /** 数据列表 */ + list: T; + /** 总数 */ + total: number; + } + + /** + * 页签对象 + */ + interface TagView { + /** 页签名称 */ + name: string; + /** 页签标题 */ + title: string; + /** 页签路由路径 */ + path: string; + /** 页签路由完整路径 */ + fullPath: string; + /** 页签图标 */ + icon?: string; + /** 是否固定页签 */ + affix?: boolean; + /** 是否开启缓存 */ + keepAlive?: boolean; + /** 路由查询参数 */ + query?: any; + } + + /** + * 系统设置 + */ + interface AppSettings { + /** 系统标题 */ + title: string; + /** 系统版本 */ + version: string; + /** 是否显示设置 */ + showSettings: boolean; + /** 是否固定头部 */ + fixedHeader: boolean; + /** 是否显示多标签导航 */ + tagsView: boolean; + /** 是否显示侧边栏Logo */ + sidebarLogo: boolean; + /** 导航栏布局(left|top|mix) */ + layout: string; + /** 主题颜色 */ + themeColor: string; + /** 主题模式(dark|light) */ + theme: string; + /** 布局大小(default |large |small) */ + size: string; + /** 语言( zh-cn| en) */ + language: string; + /** 是否开启水印 */ + watermarkEnabled: boolean; + /** 水印内容 */ + watermarkContent: string; + } + + /** + * 组件数据源 + */ + interface OptionType { + /** 值 */ + value: string | number; + /** 文本 */ + label: string; + /** 子列表 */ + children?: OptionType[]; + } +} +export {}; diff --git a/resources/vue/src/types/router.d.ts b/resources/vue/src/types/router.d.ts new file mode 100644 index 0000000..a175ea1 --- /dev/null +++ b/resources/vue/src/types/router.d.ts @@ -0,0 +1,54 @@ +import "vue-router"; + +declare module "vue-router" { + // https://router.vuejs.org/zh/guide/advanced/meta.html#typescript + // 可以通过扩展 RouteMeta 接口来输入 meta 字段 + interface RouteMeta { + /** + * 菜单名称 + * @example 'Dashboard' + */ + title?: string; + + /** + * 菜单图标 + * @example 'el-icon-edit' + */ + icon?: string; + + /** + * 是否隐藏菜单项 + * true 隐藏, false 显示 + * @default false + */ + hidden?: boolean; + + /** + * 始终显示父级菜单,即使只有一个子菜单 + * true 显示父级菜单, false 隐藏父级菜单,显示唯一子节点 + * @default false + */ + alwaysShow?: boolean; + + /** + * 是否固定在页签上 + * true 固定, false 不固定 + * @default false + */ + affix?: boolean; + + /** + * 是否缓存页面 + * true 缓存, false 不缓存 + * @default false + */ + keepAlive?: boolean; + + /** + * 是否在面包屑导航中隐藏 + * true 隐藏, false 显示 + * @default false + */ + breadcrumb?: boolean; + } +} diff --git a/resources/vue/src/types/socket.d.ts b/resources/vue/src/types/socket.d.ts new file mode 100644 index 0000000..15a8ed7 --- /dev/null +++ b/resources/vue/src/types/socket.d.ts @@ -0,0 +1,6 @@ +// https://github.com/sockjs/sockjs-client/issues/565 + +declare module "sockjs-client/dist/sockjs.min.js" { + import Client from "sockjs-client"; + export default Client; +} diff --git a/resources/vue/src/utils/asyncRoutes.ts b/resources/vue/src/utils/asyncRoutes.ts new file mode 100644 index 0000000..a194973 --- /dev/null +++ b/resources/vue/src/utils/asyncRoutes.ts @@ -0,0 +1,102 @@ +export const asyncRoutes = [ + { + "path": "/permission", + "component": "layout", + "redirect": "/permission/role", + "alwaysShow": true, + "meta": { + "title": "权限", + "icon": "system" + }, + "children": [ + { + "path": "role", + "name": "role", + "component": "views/permission/role", + "meta": { + "title": "角色管理", + "icon": "role", + "hidden": false + }, + }, + { + "path": "user", + "name": "user", + "component": "views/permission/user", + "meta": { + "title": "用户管理", + "icon": "el-icon-user", + "hidden": false + }, + + }, + { + "path": "operater_log", + "name": "operater_log", + "component": "views/permission/operater_log", + "meta": { + "title": "操作日志列表", + "icon": "dict", + "hidden": false + }, + + } + ] + }, + { + "path": "/connect-tree", + "component": "layout", + "redirect": "/connect-tree/link", + "alwaysShow": false, + "meta": { + "title": "数据源管理", + "icon": "el-icon-link" + }, + "children": [ + { + "path": "link", + "name": "link", + "component": "views/connect-tree/link", + "meta": { + "title": "数据源管理", + "icon": "el-icon-link", + "hidden": false + }, + + }, + { + "path": "auth", + "name": "auth", + "component": "views/connect-tree/auth", + "meta": { + "title": "鉴权管理", + "icon": "el-icon-user", + "hidden": false + }, + } + ] + }, + { + "path": "/plugins", + "component": "layout", + "redirect": "/plugins/market", + "alwaysShow": false, + "meta": { + "title": "插件", + "icon": "el-icon-link" + }, + "children": [ + { + "path": "market", + "name": "market", + "component": "views/plugins/market", + "meta": { + "title": "插件市场", + "icon": "el-icon-link", + "hidden": false + }, + + } + ] + } +] diff --git a/resources/vue/src/utils/auth.ts b/resources/vue/src/utils/auth.ts new file mode 100644 index 0000000..4e0746c --- /dev/null +++ b/resources/vue/src/utils/auth.ts @@ -0,0 +1,17 @@ +// 鉴权 token 相关函数 + +const TokenKey = 'Admin-Token' + +export function getToken() { + // return Cookies.get(TokenKey) + return localStorage.getItem(TokenKey) +} + +export function setToken(token) { + return localStorage.setItem(TokenKey, token) +} + + +export function removeToken() { + return localStorage.removeItem(TokenKey) +} diff --git a/resources/vue/src/utils/clipboard.ts b/resources/vue/src/utils/clipboard.ts new file mode 100644 index 0000000..6c50ee2 --- /dev/null +++ b/resources/vue/src/utils/clipboard.ts @@ -0,0 +1,31 @@ +import { useClipboard,usePermission } from "@vueuse/core"; +import {ElMessage} from "element-plus"; + +const clipboardSuccess = (text: any) => { + + ElMessage({ + type: 'success', + message: `拷贝成功` + }) +} + +const clipboardError = (text: any) => { + + ElMessage({ + type: 'error', + message: `拷贝${text}失败` + }) +} + +export default function handleClipboard(text: string) { + const { isSupported, copy } = useClipboard() + if (!isSupported) usePermission('clipboard-write') + + copy(text) + .then(() => { + clipboardSuccess(text) + }) + .catch(() => { + clipboardError(text) + }) +} diff --git a/resources/vue/src/utils/es_link.ts b/resources/vue/src/utils/es_link.ts new file mode 100644 index 0000000..d2cb2fb --- /dev/null +++ b/resources/vue/src/utils/es_link.ts @@ -0,0 +1,29 @@ +export function SaveEsConnect(link){ + sessionStorage.setItem('EsConnect', link) +} + +export function GetEsConnect(){ + let esConnect = sessionStorage.getItem('EsConnect') + if(esConnect) { + return Number(esConnect) + } + if(esConnect == null){ + esConnect = 0 + } + return esConnect +} + +export function SaveEsConnectVer(ver){ + sessionStorage.setItem('EsConnVersion', ver) +} + +export function GetEsConnectVer(){ + let esConnectVer = sessionStorage.getItem('EsConnVersion') + if(esConnectVer) { + return esConnectVer + } + if(esConnectVer == null || esConnectVer == undefined){ + esConnectVer = "" + } + return esConnectVer +} diff --git a/resources/vue/src/utils/i18n.ts b/resources/vue/src/utils/i18n.ts new file mode 100644 index 0000000..5c20abb --- /dev/null +++ b/resources/vue/src/utils/i18n.ts @@ -0,0 +1,12 @@ +// translate router.meta.title, be used in breadcrumb sidebar tagsview +import i18n from "@/lang/index"; + +export function translateRouteTitle(title: any) { + // 判断是否存在国际化配置,如果没有原生返回 + const hasKey = i18n.global.te(title); + if (hasKey) { + const translatedTitle = i18n.global.t(title); + return translatedTitle; + } + return title; +} diff --git a/resources/vue/src/utils/index.ts b/resources/vue/src/utils/index.ts new file mode 100644 index 0000000..866ad96 --- /dev/null +++ b/resources/vue/src/utils/index.ts @@ -0,0 +1,380 @@ +/** + * Check if an element has a class + * @param {HTMLElement} ele + * @param {string} cls + * @returns {boolean} + */ +export function hasClass(ele: HTMLElement, cls: string) { + return !!ele.className.match(new RegExp("(\\s|^)" + cls + "(\\s|$)")); +} + +/** + * Add class to element + * @param {HTMLElement} ele + * @param {string} cls + */ +export function addClass(ele: HTMLElement, cls: string) { + if (!hasClass(ele, cls)) ele.className += " " + cls; +} + +/** + * Remove class from element + * @param {HTMLElement} ele + * @param {string} cls + */ +export function removeClass(ele: HTMLElement, cls: string) { + if (hasClass(ele, cls)) { + const reg = new RegExp("(\\s|^)" + cls + "(\\s|$)"); + ele.className = ele.className.replace(reg, " "); + } +} + +/** + * 判断是否是外部链接 + * + * @param {string} path + * @returns {Boolean} + */ +export function isExternal(path: string) { + const isExternal = /^(https?:|http?:|mailto:|tel:)/.test(path); + return isExternal; +} + +// 值复制 +export function clone(obj) { + // 判断是对象,就进行循环复制 + if (typeof obj === 'object' && obj != null) { + // 区分是数组还是对象,创建空的数组或对象 + var o = Object.prototype.toString.call(obj).slice(8, -1) === 'Array' ? [] : {} + for (var k in obj) { + // 如果属性对应的值为对象,则递归复制 + if (typeof obj[k] === 'object' && obj[k] != null) { + o[k] = clone(obj[k]) + } else { + o[k] = obj[k] + } + } + } else { // 不为对象,直接把值返回 + return obj + } + return o +} + +/** + * Created by PanJiaChen on 16/11/18. + */ + +/** + * Parse the time to string + * @param {(Object|string|number)} time + * @param {string} cFormat + * @returns {string | null} + */ +export function parseTime(time, cFormat) { + if (arguments.length === 0) { + return null + } + const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}' + let date + if (typeof time === 'object') { + date = time + } else { + if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) { + time = parseInt(time) + } + if ((typeof time === 'number') && (time.toString().length === 10)) { + time = time * 1000 + } + date = new Date(time) + } + const formatObj = { + y: date.getFullYear(), + m: date.getMonth() + 1, + d: date.getDate(), + h: date.getHours(), + i: date.getMinutes(), + s: date.getSeconds(), + a: date.getDay() + } + const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => { + const value = formatObj[key] + // Note: getDay() returns 0 on Sunday + if (key === 'a') { + return ['日', '一', '二', '三', '四', '五', '六'][value] + } + return value.toString().padStart(2, '0') + }) + return time_str +} + +/** + * @param {number} time + * @param {string} option + * @returns {string} + */ +export function formatTime(time, option) { + if (('' + time).length === 10) { + time = parseInt(time) * 1000 + } else { + time = +time + } + const d = new Date(time) + const now = Date.now() + + const diff = (now - d) / 1000 + + if (diff < 30) { + return '刚刚' + } else if (diff < 3600) { + // less 1 hour + return Math.ceil(diff / 60) + '分钟前' + } else if (diff < 3600 * 24) { + return Math.ceil(diff / 3600) + '小时前' + } else if (diff < 3600 * 24 * 2) { + return '1天前' + } + if (option) { + return parseTime(time, option) + } else { + return ( + d.getMonth() + + 1 + + '月' + + d.getDate() + + '日' + + d.getHours() + + '时' + + d.getMinutes() + + '分' + ) + } +} + +/** + * @param {string} url + * @returns {Object} + */ +export function getQueryObject(url) { + url = url == null ? window.location.href : url + const search = url.substring(url.lastIndexOf('?') + 1) + const obj = {} + const reg = /([^?&=]+)=([^?&=]*)/g + search.replace(reg, (rs, $1, $2) => { + const name = decodeURIComponent($1) + let val = decodeURIComponent($2) + val = String(val) + obj[name] = val + return rs + }) + return obj +} + +/** + * @param {string} input value + * @returns {number} output value + */ +export function byteLength(str) { + // returns the byte length of an utf8 string + let s = str.length + for (var i = str.length - 1; i >= 0; i--) { + const code = str.charCodeAt(i) + if (code > 0x7f && code <= 0x7ff) s++ + else if (code > 0x7ff && code <= 0xffff) s += 2 + if (code >= 0xDC00 && code <= 0xDFFF) i-- + } + return s +} + +/** + * @param {Array} actual + * @returns {Array} + */ +export function cleanArray(actual) { + const newArray = [] + for (let i = 0; i < actual.length; i++) { + if (actual[i]) { + newArray.push(actual[i]) + } + } + return newArray +} + +/** + * @param {Object} json + * @returns {Array} + */ +export function param(json) { + if (!json) return '' + return cleanArray( + Object.keys(json).map(key => { + if (json[key] === undefined) return '' + return encodeURIComponent(key) + '=' + encodeURIComponent(json[key]) + }) + ).join('&') +} + +/** + * @param {string} url + * @returns {Object} + */ +export function param2Obj(url) { + const search = url.split('?')[1] + if (!search) { + return {} + } + return JSON.parse( + '{"' + + decodeURIComponent(search) + .replace(/"/g, '\\"') + .replace(/&/g, '","') + .replace(/=/g, '":"') + .replace(/\+/g, ' ') + + '"}' + ) +} + +/** + * @param {string} val + * @returns {string} + */ +export function html2Text(val) { + const div = document.createElement('div') + div.innerHTML = val + return div.textContent || div.innerText +} + +/** + * Merges two objects, giving the last one precedence + * @param {Object} target + * @param {(Object|Array)} source + * @returns {Object} + */ +export function objectMerge(target, source) { + if (typeof target !== 'object') { + target = {} + } + if (Array.isArray(source)) { + return source.slice() + } + Object.keys(source).forEach(property => { + const sourceProperty = source[property] + if (typeof sourceProperty === 'object') { + target[property] = objectMerge(target[property], sourceProperty) + } else { + target[property] = sourceProperty + } + }) + return target +} + +/** + * @param {HTMLElement} element + * @param {string} className + */ +export function toggleClass(element, className) { + if (!element || !className) { + return + } + let classString = element.className + const nameIndex = classString.indexOf(className) + if (nameIndex === -1) { + classString += '' + className + } else { + classString = + classString.substr(0, nameIndex) + + classString.substr(nameIndex + className.length) + } + element.className = classString +} + +/** + * @param {string} type + * @returns {Date} + */ +export function getTime(type) { + if (type === 'start') { + return new Date().getTime() - 3600 * 1000 * 24 * 90 + } else { + return new Date(new Date().toDateString()) + } +} + +/** + * @param {Function} func + * @param {number} wait + * @param {boolean} immediate + * @return {*} + */ +export function debounce(func, wait, immediate) { + let timeout, args, context, timestamp, result + + const later = function () { + // 据上一次触发时间间隔 + const last = +new Date() - timestamp + + // 上次被包装函数被调用时间间隔 last 小于设定时间间隔 wait + if (last < wait && last > 0) { + timeout = setTimeout(later, wait - last) + } else { + timeout = null + // 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用 + if (!immediate) { + result = func.apply(context, args) + if (!timeout) context = args = null + } + } + } + + return function (...args) { + context = this + timestamp = +new Date() + const callNow = immediate && !timeout + // 如果延时不存在,重新设定延时 + if (!timeout) timeout = setTimeout(later, wait) + if (callNow) { + result = func.apply(context, args) + context = args = null + } + + return result + } +} + +/** + * This is just a simple version of deep copy + * Has a lot of edge cases bug + * If you want to use a perfect deep copy, use lodash's _.cloneDeep + * @param {Object} source + * @returns {Object} + */ +export function deepClone(source) { + if (!source && typeof source !== 'object') { + throw new Error('error arguments', 'deepClone') + } + const targetObj = source.constructor === Array ? [] : {} + Object.keys(source).forEach(keys => { + if (source[keys] && typeof source[keys] === 'object') { + targetObj[keys] = deepClone(source[keys]) + } else { + targetObj[keys] = source[keys] + } + }) + return targetObj +} + +/** + * @param {Array} arr + * @returns {Array} + */ +export function uniqueArr(arr) { + return Array.from(new Set(arr)) +} + +/** + * @returns {string} + */ +export function createUniqueString() { + const timestamp = +new Date() + '' + const randomNum = parseInt((1 + Math.random()) * 65536) + '' + return (+(randomNum + timestamp)).toString(32) +} diff --git a/resources/vue/src/utils/monaco.ts b/resources/vue/src/utils/monaco.ts new file mode 100644 index 0000000..8942ed6 --- /dev/null +++ b/resources/vue/src/utils/monaco.ts @@ -0,0 +1,34 @@ +import * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js'; +import 'monaco-editor/esm/vs/basic-languages/javascript/javascript.contribution'; +import 'monaco-editor/esm/vs/basic-languages/markdown/markdown.contribution'; +import 'monaco-editor/esm/vs/editor/editor.all.js'; + +import 'monaco-editor/esm/vs/language/typescript/monaco.contribution'; +import 'monaco-editor/esm/vs/language/json/monaco.contribution'; + +import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'; +import jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker'; +import cssWorker from 'monaco-editor/esm/vs/language/css/css.worker?worker'; +import htmlWorker from 'monaco-editor/esm/vs/language/html/html.worker?worker'; +import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker'; + +// @ts-ignore +self.MonacoEnvironment = { + getWorker(_, label) { + if (label === 'json') { + return new jsonWorker(); + } + if (label === 'css' || label === 'scss' || label === 'less') { + return new cssWorker(); + } + if (label === 'html' || label === 'handlebars' || label === 'razor') { + return new htmlWorker(); + } + if (label === 'typescript' || label === 'javascript') { + return new tsWorker(); + } + return new editorWorker(); + }, +}; + +export { monaco }; diff --git a/resources/vue/src/utils/nprogress.ts b/resources/vue/src/utils/nprogress.ts new file mode 100644 index 0000000..c1d5f23 --- /dev/null +++ b/resources/vue/src/utils/nprogress.ts @@ -0,0 +1,18 @@ +import NProgress from "nprogress"; +import "nprogress/nprogress.css"; + +// 进度条 +NProgress.configure({ + // 动画方式 + easing: "ease", + // 递增进度条的速度 + speed: 500, + // 是否显示加载ico + showSpinner: false, + // 自动递增间隔 + trickleSpeed: 200, + // 初始化时的最小百分比 + minimum: 0.3, +}); + +export default NProgress; diff --git a/resources/vue/src/utils/plugin.ts b/resources/vue/src/utils/plugin.ts new file mode 100644 index 0000000..6714be7 --- /dev/null +++ b/resources/vue/src/utils/plugin.ts @@ -0,0 +1,105 @@ +import router from '@/router' + +import { + registerMicroApps, + addGlobalUncaughtErrorHandler +} from 'qiankun' +import {CallPluginApi} from "@/api/plugin"; +import {GetEsConnect, GetEsConnectVer} from "@/utils/es_link"; +import {OptAction} from "@/api/es-link"; +import { useAppStoreHook, useSettingsStoreHook} from "@/store"; +import {DeviceEnum} from "@/enums/DeviceEnum"; +import {ElLoading} from "element-plus"; + +const useSettingsStore = useSettingsStoreHook() +const useAppStore = useAppStoreHook(); + +const onChangeSettingsStore = (fn:any) => { + return watch( + () => useSettingsStore.$state, // 监听状态的函数 + (state) => { + fn(useSettingsStore);//fn为子应用传过来的函数,即回调函数 + },{ + deep:true + } + ); +}; + +const onChangeAppStore = (fn:any) => { + return watch( + () => useAppStore.$state, // 监听状态的函数 + (state) => { + fn(useAppStore);//fn为子应用传过来的函数,即回调函数 + },{ + deep:true + } + ); +}; + +let loadingInstance = null; // 保存Loading实例 + +export function RegisterMicroApps(pluginList){ + let props = { + CallPluginApi:CallPluginApi, + GetSelectEsConnID:()=>{ + return GetEsConnect() + }, + GetSelectEsVersion:()=>{ + return GetEsConnectVer() + }, + LinkOptAction:async ()=>{ + return OptAction({ + getByLocal:1 + }) + }, + store:{ + useSettingsStore, + useAppStore, + onChangeSettingsStore, + onChangeAppStore + }, + router, + } + for(let i in pluginList){ + pluginList[i].container = "#Appmicro" + pluginList[i].props = props + } + console.log(pluginList) + + registerMicroApps(pluginList, { + // qiankun 生命周期钩子 - 加载前 + beforeLoad: (app) => { + loadingInstance = ElLoading.service({ + lock: true, + text: '插件正在加载中...', + background: 'rgba(0, 0, 0, 0.7)' + }); // 开启全局Loading + console.log('加载插件前,加载进度条', app.name) + return Promise.resolve() + }, + beforeMount:(app) =>{ + console.log('挂载插件前,加载进度条', app.name) + return Promise.resolve() + }, + // qiankun 生命周期钩子 - 挂载后 + afterMount: (app) => { + if (loadingInstance) { + loadingInstance.close(); // 关闭全局Loading + } + console.log('挂载插件后,进度条加载完成', app.name) + return Promise.resolve() + } + }) +} + +/** + * 添加全局的未捕获异常处理器 + */ +addGlobalUncaughtErrorHandler((event) => { + const { message: msg } = event + console.log("event",event) + // 加载失败时提示 + if (msg && msg.includes('died in status LOADING_SOURCE_CODE')) { + console.log('请检查插件是否可运行,插件加载未成功',msg) + } +}) diff --git a/resources/vue/src/utils/request.ts b/resources/vue/src/utils/request.ts new file mode 100644 index 0000000..90e43fa --- /dev/null +++ b/resources/vue/src/utils/request.ts @@ -0,0 +1,125 @@ +import axios, { InternalAxiosRequestConfig } from "axios"; +import { useUserStoreHook } from "@/store/modules/user"; +import { ResultEnum } from "@/enums/ResultEnum"; +import { TOKEN_KEY } from "@/enums/CacheEnum"; +import {getToken, removeToken, setToken} from "@/utils/auth"; + +// 创建 axios 实例 +const service = axios.create({ + baseURL: getBaseURL(), + timeout: 600000, + headers: { "Content-Type": "application/json;charset=utf-8" }, +}); + +// 请求拦截器 +service.interceptors.request.use( + (config: InternalAxiosRequestConfig) => { + config.headers["X-Token"] = getToken() + + config.headers["X-Version"] = window["appVersion"] + + if (localStorage.getItem('lang') != null) { + config.headers['Current-Language'] = localStorage.getItem('lang') + } + + return config; + }, + (error: any) => { + return Promise.reject(error); + } +); + +// 响应拦截器 +service.interceptors.response.use( + (response) => handleData(response), + (error: any) => { + + const { response } = error + if (response === undefined) { + ElMessage({ + message: '网络异常', // error.message, + type: 'error', + duration: 5 * 1000 + }) + return Promise.reject(error) + } else return handleData(response) + } +); + +const handleData = (response) => { + // 检查配置的响应类型是否为二进制类型('blob' 或 'arraybuffer'), 如果是,直接返回响应对象 + if (response.config.responseType == 'arraybuffer') { + return response.data + } + + const res = response.data + + // if the custom code is not 20000, it is judged as an error. + if (res.code !== 0) { + if (res.code === 40001) { + ElMessage.error('请重新登录!') + } + + if (res.code === 40007){ + ElMessageBox.confirm(res.msg, "警告", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning", + }).then(() => { + location.reload(); + }); + + } + + if (res.code === 40003 ) { + + let config = response.config + if (!config._retry){ + + let newToken = res.newToken + setToken(newToken) + config._retry = true + config.headers["X-Token"] = getToken() + return axios(config); + } + + ElMessageBox.confirm('登录超时,您可以取消以停留在此页,或重新登录', "警告", { + confirmButtonText: "重新登录", + cancelButtonText: "取消", + type: "warning", + }).then(() => { + removeToken() + location.reload(); + }); + } + + if (res.code === 40008 ) { + ElMessage.error(res.msg) + removeToken() + location.reload(); + } + + if (res.code === 40002 ) { + + ElMessageBox.confirm('登录验证失败,您可以取消以停留在此页,或重新登录', "警告", { + confirmButtonText: "重新登录", + cancelButtonText: "取消", + type: "warning", + }).then(() => { + removeToken() + location.reload(); + }); + } + } + return res +} + +// 导出 axios 实例 +export default service; + +function getBaseURL(){ + if(import.meta.env.PROD) { + return window["appUrl"] + } + return import.meta.env.VITE_APP_API_URL +} diff --git a/resources/vue/src/views/connect-tree/EsHeader.vue b/resources/vue/src/views/connect-tree/EsHeader.vue new file mode 100644 index 0000000..4aa9c2e --- /dev/null +++ b/resources/vue/src/views/connect-tree/EsHeader.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/resources/vue/src/views/connect-tree/auth.vue b/resources/vue/src/views/connect-tree/auth.vue new file mode 100644 index 0000000..092996b --- /dev/null +++ b/resources/vue/src/views/connect-tree/auth.vue @@ -0,0 +1,600 @@ + + + + + diff --git a/resources/vue/src/views/connect-tree/link.vue b/resources/vue/src/views/connect-tree/link.vue new file mode 100644 index 0000000..f2b1465 --- /dev/null +++ b/resources/vue/src/views/connect-tree/link.vue @@ -0,0 +1,504 @@ + + + + + diff --git a/resources/vue/src/views/dashboard/components/EsDashbord.vue b/resources/vue/src/views/dashboard/components/EsDashbord.vue new file mode 100644 index 0000000..806dc35 --- /dev/null +++ b/resources/vue/src/views/dashboard/components/EsDashbord.vue @@ -0,0 +1,153 @@ + + + + + diff --git a/resources/vue/src/views/dashboard/index.vue b/resources/vue/src/views/dashboard/index.vue new file mode 100644 index 0000000..3548774 --- /dev/null +++ b/resources/vue/src/views/dashboard/index.vue @@ -0,0 +1,277 @@ + + + + + diff --git a/resources/vue/src/views/error-page/401.vue b/resources/vue/src/views/error-page/401.vue new file mode 100644 index 0000000..afb3e59 --- /dev/null +++ b/resources/vue/src/views/error-page/401.vue @@ -0,0 +1,109 @@ + + + + + diff --git a/resources/vue/src/views/error-page/404.vue b/resources/vue/src/views/error-page/404.vue new file mode 100644 index 0000000..cb56f5d --- /dev/null +++ b/resources/vue/src/views/error-page/404.vue @@ -0,0 +1,264 @@ + + + + + diff --git a/resources/vue/src/views/login/index.vue b/resources/vue/src/views/login/index.vue new file mode 100644 index 0000000..fb7fd98 --- /dev/null +++ b/resources/vue/src/views/login/index.vue @@ -0,0 +1,473 @@ + + + + + + + + + diff --git a/resources/vue/src/views/permission/oauth.vue b/resources/vue/src/views/permission/oauth.vue new file mode 100644 index 0000000..5dd663c --- /dev/null +++ b/resources/vue/src/views/permission/oauth.vue @@ -0,0 +1,85 @@ + + + + + diff --git a/resources/vue/src/views/permission/operater_log.vue b/resources/vue/src/views/permission/operater_log.vue new file mode 100644 index 0000000..ccc63b5 --- /dev/null +++ b/resources/vue/src/views/permission/operater_log.vue @@ -0,0 +1,255 @@ + + + + + + diff --git a/resources/vue/src/views/permission/role.vue b/resources/vue/src/views/permission/role.vue new file mode 100644 index 0000000..8660f45 --- /dev/null +++ b/resources/vue/src/views/permission/role.vue @@ -0,0 +1,513 @@ + + + + + + + diff --git a/resources/vue/src/views/permission/user.vue b/resources/vue/src/views/permission/user.vue new file mode 100644 index 0000000..69c83a3 --- /dev/null +++ b/resources/vue/src/views/permission/user.vue @@ -0,0 +1,452 @@ + + + + + diff --git a/resources/vue/src/views/plugins/market.vue b/resources/vue/src/views/plugins/market.vue new file mode 100644 index 0000000..9513bff --- /dev/null +++ b/resources/vue/src/views/plugins/market.vue @@ -0,0 +1,717 @@ + + + + + diff --git a/resources/vue/src/views/redirect/index.vue b/resources/vue/src/views/redirect/index.vue new file mode 100644 index 0000000..4215bf6 --- /dev/null +++ b/resources/vue/src/views/redirect/index.vue @@ -0,0 +1,15 @@ + + + diff --git a/resources/vue/tsconfig.json b/resources/vue/tsconfig.json new file mode 100644 index 0000000..441cb93 --- /dev/null +++ b/resources/vue/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "target": "esnext", + "useDefineForClassFields": true, + "module": "esnext", + "moduleResolution": "node", + "strict": true, + "noLib": false, + "sourceMap": true, + "resolveJsonModule": true, + "esModuleInterop": true, + "lib": ["esnext", "dom"], + "baseUrl": ".", + "allowJs": true, + "skipLibCheck": true, + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true, + "jsx": "preserve", + "jsxFactory": "h", + "jsxFragmentFactory": "Fragment", + "paths": { + "@/*": ["src/*"] + }, + "types": ["vite/client", "unplugin-icons/types/vue", "element-plus/global"] + }, + "include": ["mock/**/*.ts", "src/**/*.ts", "src/**/*.vue", "vite.config.ts"], + "exclude": ["node_modules", "dist", "**/*.js"] +} diff --git a/resources/vue/uno.config.ts b/resources/vue/uno.config.ts new file mode 100644 index 0000000..b952fe4 --- /dev/null +++ b/resources/vue/uno.config.ts @@ -0,0 +1,43 @@ +// uno.config.ts +import { + defineConfig, + presetAttributify, + presetIcons, + presetTypography, + presetUno, + presetWebFonts, + transformerDirectives, + transformerVariantGroup, +} from "unocss"; + +export default defineConfig({ + shortcuts: { + "flex-center": "flex justify-center items-center", + "flex-x-center": "flex justify-center", + "flex-y-center": "flex items-center", + "wh-full": "w-full h-full", + "flex-x-between": "flex items-center justify-between", + "flex-x-end": "flex items-center justify-end", + "absolute-lt": "absolute left-0 top-0", + "absolute-rt": "absolute right-0 top-0 ", + "fixed-lt": "fixed left-0 top-0", + }, + theme: { + colors: { + primary: "var(--el-color-primary)", + primary_dark: "var(--el-color-primary-light-5)", + }, + }, + presets: [ + presetUno(), + presetAttributify(), + presetIcons(), + presetTypography(), + presetWebFonts({ + fonts: { + // ... + }, + }), + ], + transformers: [transformerDirectives(), transformerVariantGroup()], +}); diff --git a/resources/vue/vite.config.ts b/resources/vue/vite.config.ts new file mode 100644 index 0000000..10b57dd --- /dev/null +++ b/resources/vue/vite.config.ts @@ -0,0 +1,285 @@ +import vue from "@vitejs/plugin-vue"; +import vueJsx from "@vitejs/plugin-vue-jsx"; +import { UserConfig, ConfigEnv, loadEnv, defineConfig } from "vite"; +import { createHtmlPlugin } from "vite-plugin-html" + +import AutoImport from "unplugin-auto-import/vite"; +import Components from "unplugin-vue-components/vite"; +import { ElementPlusResolver } from "unplugin-vue-components/resolvers"; +import Icons from "unplugin-icons/vite"; +import IconsResolver from "unplugin-icons/resolver"; + +import { createSvgIconsPlugin } from "vite-plugin-svg-icons"; +import mockDevServerPlugin from "vite-plugin-mock-dev-server"; +import { dynamicBase } from 'vite-plugin-dynamic-base' + +import UnoCSS from "unocss/vite"; +import { resolve } from "path"; +import { + name, + version, + engines, + dependencies, + devDependencies, +} from "./package.json"; + +// https://devtools-next.vuejs.org/ +import VueDevTools from "vite-plugin-vue-devtools"; + +/** 平台的名称、版本、运行所需的`node`版本、依赖、构建时间的类型提示 */ +const __APP_INFO__ = { + pkg: { name, version, engines, dependencies, devDependencies }, + buildTimestamp: Date.now(), +}; + +const pathSrc = resolve(__dirname, "src"); +// https://cn.vitejs.dev/config +export default defineConfig(({ mode }: ConfigEnv): UserConfig => { + const env = loadEnv(mode, process.cwd()); + return { + resolve: { + alias: { + "@": pathSrc, + }, + }, + base: process.env.NODE_ENV === "production" ? "/__dynamic_base__/" : "/", + + css: { + // CSS 预处理器 + preprocessorOptions: { + // 定义全局 SCSS 变量 + scss: { + javascriptEnabled: true, + additionalData: ` + @use "@/styles/variables.scss" as *; + `, + }, + }, + }, + server: { + // 允许IP访问 + host: "0.0.0.0", + // 应用端口 (默认:3000) + port: Number(env.VITE_APP_PORT), + // 运行是否自动打开浏览器 + open: true, + proxy: { + /** 代理前缀为 /dev-api 的请求 */ + [env.VITE_APP_BASE_API]: { + changeOrigin: true, + // 接口地址 + target: env.VITE_APP_API_URL, + rewrite: (path) => + path.replace(new RegExp("^" + env.VITE_APP_BASE_API), ""), + }, + }, + }, + plugins: [ + vue(), + dynamicBase({ + publicPath: 'window.appSubUrl', + transformIndexHtml: true + }), + createHtmlPlugin({ + inject: { + data: { + isProd: env.VITE_ISPROD, + VITE_APPURL: env.VITE_APPURL, + VITE_APPSubUrl: env.VITE_APPSubUrl, + VITE_APPVersion: env.VITE_APPVersion, + VITE_Lang: env.VITE_Lang, + + title:'ElasticView' + }, + }, + }), + // jsx、tsx语法支持 + vueJsx(), + // MOCK 服务 + env.VITE_MOCK_DEV_SERVER === "true" ? mockDevServerPlugin() : null, + UnoCSS({ + hmrTopLevelAwait: false, + }), + // 自动导入参考: https://github.com/sxzz/element-plus-best-practices/blob/main/vite.config.ts + AutoImport({ + // 自动导入 Vue 相关函数,如:ref, reactive, toRef 等 + imports: ["vue", "@vueuse/core", "pinia", "vue-router", "vue-i18n"], + resolvers: [ + // 自动导入 Element Plus 相关函数,如:ElMessage, ElMessageBox... (带样式) + ElementPlusResolver(), + // 自动导入图标组件 + IconsResolver({}), + ], + eslintrc: { + // 是否自动生成 eslint 规则,建议生成之后设置 false + enabled: false, + // 指定自动导入函数 eslint 规则的文件 + filepath: "./.eslintrc-auto-import.json", + globalsPropValue: true, + }, + // 是否在 vue 模板中自动导入 + vueTemplate: true, + // 指定自动导入函数TS类型声明文件路径 (false:关闭自动生成) + dts: false, + // dts: "src/types/auto-imports.d.ts", + }), + Components({ + resolvers: [ + // 自动导入 Element Plus 组件 + ElementPlusResolver(), + // 自动注册图标组件 + IconsResolver({ + // element-plus图标库,其他图标库 https://icon-sets.iconify.design/ + enabledCollections: ["ep"], + }), + ], + // 指定自定义组件位置(默认:src/components) + dirs: ["src/components", "src/**/components"], + // 指定自动导入组件TS类型声明文件路径 (false:关闭自动生成) + dts: false, + // dts: "src/types/components.d.ts", + }), + Icons({ + // 自动安装图标库 + autoInstall: true, + }), + createSvgIconsPlugin({ + // 指定需要缓存的图标文件夹 + iconDirs: [resolve(pathSrc, "assets/icons")], + // 指定symbolId格式 + symbolId: "icon-[dir]-[name]", + }), + /* VueDevTools({ + openInEditorHost: `http://localhost:${env.VITE_APP_PORT}`, + }), */ + ], + // 预加载项目必需的组件 + optimizeDeps: { + include: [ + "vue", + "vue-router", + "pinia", + "axios", + "@vueuse/core", + "sortablejs", + "path-to-regexp", + "echarts", + "@wangeditor/editor", + "@wangeditor/editor-for-vue", + "vue-i18n", + "path-browserify", + + `monaco-editor/esm/vs/language/json/json.worker`, + `monaco-editor/esm/vs/language/css/css.worker`, + `monaco-editor/esm/vs/language/html/html.worker`, + `monaco-editor/esm/vs/language/typescript/ts.worker`, + `monaco-editor/esm/vs/editor/editor.worker`, + "element-plus/es/components/form/style/css", + "element-plus/es/components/form-item/style/css", + "element-plus/es/components/button/style/css", + "element-plus/es/components/input/style/css", + "element-plus/es/components/input-number/style/css", + "element-plus/es/components/switch/style/css", + "element-plus/es/components/upload/style/css", + "element-plus/es/components/menu/style/css", + "element-plus/es/components/col/style/css", + "element-plus/es/components/icon/style/css", + "element-plus/es/components/row/style/css", + "element-plus/es/components/tag/style/css", + "element-plus/es/components/dialog/style/css", + "element-plus/es/components/loading/style/css", + "element-plus/es/components/radio/style/css", + "element-plus/es/components/radio-group/style/css", + "element-plus/es/components/popover/style/css", + "element-plus/es/components/scrollbar/style/css", + "element-plus/es/components/tooltip/style/css", + "element-plus/es/components/dropdown/style/css", + "element-plus/es/components/dropdown-menu/style/css", + "element-plus/es/components/dropdown-item/style/css", + "element-plus/es/components/sub-menu/style/css", + "element-plus/es/components/menu-item/style/css", + "element-plus/es/components/divider/style/css", + "element-plus/es/components/card/style/css", + "element-plus/es/components/link/style/css", + "element-plus/es/components/breadcrumb/style/css", + "element-plus/es/components/breadcrumb-item/style/css", + "element-plus/es/components/table/style/css", + "element-plus/es/components/tree-select/style/css", + "element-plus/es/components/table-column/style/css", + "element-plus/es/components/select/style/css", + "element-plus/es/components/option/style/css", + "element-plus/es/components/pagination/style/css", + "element-plus/es/components/tree/style/css", + "element-plus/es/components/alert/style/css", + "element-plus/es/components/radio-button/style/css", + "element-plus/es/components/checkbox-group/style/css", + "element-plus/es/components/checkbox/style/css", + "element-plus/es/components/tabs/style/css", + "element-plus/es/components/tab-pane/style/css", + "element-plus/es/components/rate/style/css", + "element-plus/es/components/date-picker/style/css", + "element-plus/es/components/notification/style/css", + "element-plus/es/components/image/style/css", + "element-plus/es/components/statistic/style/css", + "element-plus/es/components/watermark/style/css", + "element-plus/es/components/config-provider/style/css", + "element-plus/es/components/text/style/css", + "element-plus/es/components/drawer/style/css", + "element-plus/es/components/color-picker/style/css", + "element-plus/es/components/backtop/style/css", + "element-plus/es/components/message-box/style/css", + "element-plus/es/components/skeleton/style/css", + "element-plus/es/components/skeleton/style/css", + "element-plus/es/components/skeleton-item/style/css", + "element-plus/es/components/badge/style/css", + ], + }, + // 构建配置 + build: { + outDir:'../views/dist', + assetsDir: 'static', + chunkSizeWarningLimit: 2000, // 消除打包大小超过500kb警告 + minify: "terser", // Vite 2.6.x 以上需要配置 minify: "terser", terserOptions 才能生效 + terserOptions: { + compress: { + keep_infinity: true, // 防止 Infinity 被压缩成 1/0,这可能会导致 Chrome 上的性能问题 + //drop_console: true, // 生产环境去除 console + //drop_debugger: true, // 生产环境去除 debugger + }, + format: { + comments: false, // 删除注释 + }, + }, + rollupOptions: { + output: { + // manualChunks: { + // "vue-i18n": ["vue-i18n"], + // }, + // 用于从入口点创建的块的打包输出格式[name]表示文件名,[hash]表示该文件内容hash值 + entryFileNames: "js/[name].[hash].js", + // 用于命名代码拆分时创建的共享块的输出命名 + chunkFileNames: "js/[name].[hash].js", + // 用于输出静态资源的命名,[ext]表示文件扩展名 + assetFileNames: (assetInfo: any) => { + const info = assetInfo.name.split("."); + let extType = info[info.length - 1]; + // console.log('文件信息', assetInfo.name) + if ( + /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/i.test(assetInfo.name) + ) { + extType = "media"; + } else if (/\.(png|jpe?g|gif|svg)(\?.*)?$/.test(assetInfo.name)) { + extType = "img"; + } else if (/\.(woff2?|eot|ttf|otf)(\?.*)?$/i.test(assetInfo.name)) { + extType = "fonts"; + } + return `${extType}/[name].[hash].[ext]`; + }, + }, + }, + }, + define: { + __APP_INFO__: JSON.stringify(__APP_INFO__), + }, + }; +}); diff --git a/testing/ev_back_dao_test.go b/testing/ev_back_dao_test.go new file mode 100644 index 0000000..95ee361 --- /dev/null +++ b/testing/ev_back_dao_test.go @@ -0,0 +1,55 @@ +package testing + +import ( + "context" + "github.com/1340691923/ElasticView/pkg/infrastructure/config" + "github.com/1340691923/ElasticView/pkg/server" + "github.com/1340691923/ElasticView/pkg/util" + "github.com/davecgh/go-spew/spew" + "log" + "testing" +) + +var args *config.CommandLineArgs + +func init() { + args = &config.CommandLineArgs{ + ConfigFile: "D:\\eve\\ev2\\config_dev\\config_dev.yml", + CmdName: "ev", + HomePath: util.GetCurrentDirectory(), + } + +} + +func TestEvBackDaoGetCheckEvKeyStatus(t *testing.T) { + dao, err := server.InitializeEvApiDao(args) + if err != nil { + t.Fatal(err) + } + log.Println(dao.GetWxArticleList(context.Background())) +} + +func TestPluginInstallService(t *testing.T) { + svr, err := server.InitializeProvideInstaller(args) + if err != nil { + t.Fatal(err) + } + err = svr.Remove(context.Background(), "ev-tools", "0.0.3") + if err != nil { + t.Fatal(err) + } + log.Println("succ") +} + +func TestInitializeGmRoleEslinkCfgV2Dao(t *testing.T) { + svr, err := server.InitializeGmRoleEslinkCfgV2Dao(args) + if err != nil { + t.Fatal(err) + } + l, err := svr.QueryByRoleID(context.Background(), 1) + if err != nil { + t.Fatal(err) + } + spew.Dump(l) + log.Println("succ") +} diff --git a/testing/logs/ev/info.log.20240914 b/testing/logs/ev/info.log.20240914 new file mode 100644 index 0000000..353ca00 --- /dev/null +++ b/testing/logs/ev/info.log.20240914 @@ -0,0 +1,19 @@ +2024-09-14 17:38:06 plugin.installer plugin_install_service/plugin_install_service.go:103 Installing plugin%!(EXTRA string=pluginId, string=ev-tools, string=version, string=0.0.1) +2024-09-14 17:41:26 plugin.installer plugin_install_service/plugin_install_service.go:103 Installing plugin%!(EXTRA string=pluginId, string=ev-tools, string=version, string=0.0.1) +2024-09-14 17:42:54 plugin.installer plugin_install_service/plugin_install_service.go:103 Installing plugin%!(EXTRA string=pluginId, string=ev-tools, string=version, string=0.0.1) +2024-09-14 17:44:21 plugin.installer plugin_install_service/plugin_install_service.go:103 Installing plugin%!(EXTRA string=pluginId, string=ev-tools, string=version, string=0.0.1) +2024-09-14 17:49:11 plugin.installer plugin_install_service/plugin_install_service.go:103 Installing plugin%!(EXTRA string=pluginId, string=ev-tools, string=version, string=0.0.1) +2024-09-14 17:50:22 plugin.installer plugin_install_service/plugin_install_service.go:103 Installing plugin%!(EXTRA string=pluginId, string=ev-tools, string=version, string=0.0.1) +2024-09-14 17:51:08 plugin.installer plugin_install_service/plugin_install_service.go:103 Installing plugin%!(EXTRA string=pluginId, string=ev-tools, string=version, string=0.0.1) +2024-09-14 17:52:12 plugin.installer plugin_install_service/plugin_install_service.go:103 Installing plugin%!(EXTRA string=pluginId, string=ev-tools, string=version, string=0.0.1) +2024-09-14 17:54:28 plugin.installer plugin_install_service/plugin_install_service.go:110 Installing plugin%!(EXTRA string=pluginId, string=ev-tools, string=version, string=0.0.1) +2024-09-14 17:54:56 plugin.installer plugin_install_service/plugin_install_service.go:110 Installing plugin%!(EXTRA string=pluginId, string=ev-tools, string=version, string=0.0.1) +2024-09-14 17:55:56 plugin.installer plugin_install_service/plugin_install_service.go:114 Installing plugin%!(EXTRA string=pluginId, string=ev-tools, string=version, string=0.0.1) +2024-09-14 17:57:29 plugin.installer plugin_install_service/plugin_install_service.go:115 Installing plugin%!(EXTRA string=pluginId, string=ev-tools, string=version, string=0.0.1) +2024-09-14 18:01:41 plugin.installer plugin_install_service/plugin_install_service.go:116 Installing plugin%!(EXTRA string=pluginId, string=ev-tools, string=version, string=0.0.1) +2024-09-14 18:06:35 plugin.installer plugin_install_service/plugin_install_service.go:108 Installing plugin%!(EXTRA string=pluginId, string=ev-tools, string=version, string=0.0.1) +2024-09-14 18:11:16 plugin.installer plugin_install_service/plugin_install_service.go:105 Installing plugin%!(EXTRA string=pluginId, string=ev-tools, string=version, string=0.0.1) +2024-09-14 18:12:26 plugin.installer plugin_install_service/plugin_install_service.go:86 开始删除之前安装的老版本插件 +2024-09-14 18:12:26 plugin.installer plugin_install_service/plugin_install_service.go:105 Installing plugin%!(EXTRA string=pluginId, string=ev-tools, string=version, string=0.0.2) +2024-09-14 18:14:32 plugin.installer plugin_install_service/plugin_install_service.go:86 开始删除之前安装的老版本插件 +2024-09-14 18:14:32 plugin.installer plugin_install_service/plugin_install_service.go:105 Installing plugin%!(EXTRA string=pluginId, string=ev-tools, string=version, string=0.0.3) diff --git a/testing/logs/ev/info.log.20241022 b/testing/logs/ev/info.log.20241022 new file mode 100644 index 0000000..613482e --- /dev/null +++ b/testing/logs/ev/info.log.20241022 @@ -0,0 +1,15 @@ +2024-10-22 17:11:32 sqlstore/orm.go:42 sqlStore组件初始化成功 +2024-10-22 17:12:28 sqlstore/orm.go:42 sqlStore组件初始化成功 +2024-10-22 17:12:28 svr_log/svr_log.go:70 D:/eve/ev2/pkg/infrastructure/dao/gm_role_eslink_cfg_v2.go:36 +[1.097ms] [rows:0] SELECT * FROM `gm_role_eslink_cfg_v2` WHERE role_id = 1 +2024-10-22 17:13:48 sqlstore/orm.go:42 sqlStore组件初始化成功 +2024-10-22 17:13:48 svr_log/svr_log.go:70 D:/eve/ev2/pkg/infrastructure/dao/gm_role_eslink_cfg_v2.go:36 +[0.519ms] [rows:0] SELECT * FROM `gm_role_eslink_cfg_v2` WHERE role_id = 1 +2024-10-22 17:14:55 sqlstore/orm.go:42 sqlStore组件初始化成功 +2024-10-22 17:14:55 svr_log/svr_log.go:70 D:/eve/ev2/pkg/infrastructure/dao/gm_role_eslink_cfg_v2.go:36 +[1.594ms] [rows:0] SELECT * FROM `gm_role_eslink_cfg_v2` WHERE role_id = 1 +2024-10-22 17:16:14 sqlstore/orm.go:42 sqlStore组件初始化成功 +2024-10-22 17:16:14 svr_log/svr_log.go:68 D:/eve/ev2/pkg/infrastructure/dao/gm_role_eslink_cfg_v2.go:37 +[0.000ms] [rows:-] show tables +2024-10-22 17:16:14 svr_log/svr_log.go:70 D:/eve/ev2/pkg/infrastructure/dao/gm_role_eslink_cfg_v2.go:39 +[1.143ms] [rows:0] SELECT * FROM `gm_role_eslink_cfg_v2` WHERE role_id = 1

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