gitextract_tfv9ubrh/ ├── .all-contributorsrc ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug-report.md │ │ ├── feature-request.md │ │ └── question.md │ ├── autolabeler.yml │ ├── codecov.yml │ ├── stale.yml │ └── workflows/ │ ├── build.yaml │ ├── manual-create-pd-pr.yaml │ ├── release.yaml │ ├── test-docker-image.yaml │ ├── test.yaml │ └── upload-e2e-snapshots.yaml ├── .gitignore ├── .golangci.yml ├── .prettierrc ├── CONTRIBUTING.md ├── LICENSE ├── Makefile ├── OWNERS ├── README.md ├── SECURITY.md ├── cmd/ │ └── tidb-dashboard/ │ └── main.go ├── dockerfiles/ │ └── docker-compose.yml ├── etc/ │ ├── go.mod │ └── manualTestEnv/ │ ├── .gitignore │ ├── _shared/ │ │ ├── Vagrantfile.partial.pubKey.rb │ │ ├── vagrant_key │ │ └── vagrant_key.pub │ ├── complexCase1/ │ │ ├── README.md │ │ ├── Vagrantfile │ │ └── topology.yaml │ ├── multiHost/ │ │ ├── README.md │ │ ├── Vagrantfile │ │ └── topology.yaml │ ├── multiReplica/ │ │ ├── README.md │ │ ├── Vagrantfile │ │ └── topology.yaml │ ├── singleHost/ │ │ ├── README.md │ │ ├── Vagrantfile │ │ └── topology.yaml │ └── singleHostMultiDisk/ │ ├── .gitignore │ ├── README.md │ ├── Vagrantfile │ └── topology.yaml ├── go.mod ├── go.sum ├── pkg/ │ ├── apiserver/ │ │ ├── apiserver.go │ │ ├── clusterinfo/ │ │ │ ├── host.go │ │ │ ├── hostinfo/ │ │ │ │ ├── cluster_config.go │ │ │ │ ├── cluster_hardware.go │ │ │ │ ├── cluster_load.go │ │ │ │ └── hostinfo.go │ │ │ ├── service.go │ │ │ ├── statistics.go │ │ │ └── topology.go │ │ ├── configuration/ │ │ │ ├── editable.go │ │ │ ├── flatten.go │ │ │ ├── router.go │ │ │ └── service.go │ │ ├── conprof/ │ │ │ ├── module.go │ │ │ └── service.go │ │ ├── deadlock/ │ │ │ ├── model.go │ │ │ ├── module.go │ │ │ └── service.go │ │ ├── debugapi/ │ │ │ ├── apis.go │ │ │ ├── endpoint/ │ │ │ │ ├── 1_main_test.go │ │ │ │ ├── errors.go │ │ │ │ ├── models.go │ │ │ │ ├── models_test.go │ │ │ │ ├── payload.go │ │ │ │ └── payload_test.go │ │ │ ├── module.go │ │ │ └── service.go │ │ ├── diagnose/ │ │ │ ├── compare.go │ │ │ ├── diagnose.go │ │ │ ├── inspection.go │ │ │ ├── model.go │ │ │ ├── query.go │ │ │ ├── report.go │ │ │ └── report_test.go │ │ ├── info/ │ │ │ └── info.go │ │ ├── logsearch/ │ │ │ ├── models.go │ │ │ ├── pack.go │ │ │ ├── scheduler.go │ │ │ ├── service.go │ │ │ └── task.go │ │ ├── metrics/ │ │ │ ├── prom_resolve.go │ │ │ ├── prom_resolve_test.go │ │ │ ├── router.go │ │ │ └── service.go │ │ ├── model/ │ │ │ └── common_models.go │ │ ├── profiling/ │ │ │ ├── fetcher.go │ │ │ ├── jeprof.in │ │ │ ├── model.go │ │ │ ├── module.go │ │ │ ├── pprof.go │ │ │ ├── profile.go │ │ │ ├── protobuf_to_svg.go │ │ │ ├── router.go │ │ │ └── service.go │ │ ├── queryeditor/ │ │ │ └── service.go │ │ ├── resource_manager/ │ │ │ ├── module.go │ │ │ └── service.go │ │ ├── slowquery/ │ │ │ ├── model.go │ │ │ ├── module.go │ │ │ ├── queries.go │ │ │ ├── service.go │ │ │ └── statement_gen.go │ │ ├── statement/ │ │ │ ├── config.go │ │ │ ├── config_test.go │ │ │ ├── models.go │ │ │ ├── module.go │ │ │ ├── queries.go │ │ │ ├── service.go │ │ │ └── statement_gen.go │ │ ├── topsql/ │ │ │ ├── module.go │ │ │ └── service.go │ │ ├── user/ │ │ │ ├── auth.go │ │ │ ├── code/ │ │ │ │ ├── codeauth/ │ │ │ │ │ └── auth.go │ │ │ │ ├── router.go │ │ │ │ └── service.go │ │ │ ├── module.go │ │ │ ├── rsa_utils.go │ │ │ ├── sqlauth/ │ │ │ │ └── sqlauth.go │ │ │ ├── sso/ │ │ │ │ ├── models.go │ │ │ │ ├── router.go │ │ │ │ ├── service.go │ │ │ │ └── ssoauth/ │ │ │ │ └── auth.go │ │ │ ├── verify_sql_user.go │ │ │ └── verify_sql_user_test.go │ │ ├── utils/ │ │ │ ├── auth.go │ │ │ ├── binary_plan.go │ │ │ ├── binary_plan_test.go │ │ │ ├── error.go │ │ │ ├── export.go │ │ │ ├── gorm.go │ │ │ ├── gorm_test.go │ │ │ ├── jwt.go │ │ │ ├── mw_experimental.go │ │ │ ├── ngm.go │ │ │ ├── subset.go │ │ │ └── tidb_conn.go │ │ └── visualplan/ │ │ ├── module.go │ │ └── service.go │ ├── config/ │ │ ├── config.go │ │ ├── dynamic_config.go │ │ └── dynamic_config_manager.go │ ├── dbstore/ │ │ └── dbstore.go │ ├── httpc/ │ │ ├── client.go │ │ └── client_test.go │ ├── keyvisual/ │ │ ├── decorator/ │ │ │ ├── decorator.go │ │ │ ├── decorator_test.go │ │ │ ├── separator.go │ │ │ ├── tidb.go │ │ │ ├── tidb_requests.go │ │ │ └── tidb_test.go │ │ ├── input/ │ │ │ ├── api.go │ │ │ ├── file.go │ │ │ ├── input.go │ │ │ └── periodic.go │ │ ├── manager.go │ │ ├── matrix/ │ │ │ ├── average.go │ │ │ ├── average_test.go │ │ │ ├── axis.go │ │ │ ├── axis_test.go │ │ │ ├── distance.go │ │ │ ├── distance_test.go │ │ │ ├── interface.go │ │ │ ├── key.go │ │ │ ├── key_test.go │ │ │ ├── matrix.go │ │ │ ├── matrix_test.go │ │ │ ├── plane.go │ │ │ ├── plane_test.go │ │ │ ├── util.go │ │ │ └── util_test.go │ │ ├── region/ │ │ │ ├── interface.go │ │ │ ├── tag.go │ │ │ └── utils.go │ │ ├── service.go │ │ ├── storage/ │ │ │ ├── model.go │ │ │ ├── model_test.go │ │ │ ├── region.go │ │ │ ├── region_test.go │ │ │ ├── stat.go │ │ │ ├── stat_persist.go │ │ │ └── stat_test.go │ │ └── testdata/ │ │ └── dis.json.gzip │ ├── pd/ │ │ ├── client.go │ │ ├── client_test.go │ │ ├── etcd.go │ │ └── pd.go │ ├── scheduling/ │ │ ├── client.go │ │ └── scheduling.go │ ├── swaggerserver/ │ │ └── handler.go │ ├── ticdc/ │ │ ├── client.go │ │ └── ticdc.go │ ├── tidb/ │ │ ├── client.go │ │ ├── forwarder.go │ │ ├── model/ │ │ │ ├── codec.go │ │ │ ├── codec_test.go │ │ │ └── model.go │ │ ├── proxy.go │ │ ├── proxy_test.go │ │ └── tidb.go │ ├── tiflash/ │ │ ├── client.go │ │ └── tiflash.go │ ├── tikv/ │ │ ├── client.go │ │ └── tikv.go │ ├── tiproxy/ │ │ ├── client.go │ │ └── tiproxy.go │ ├── tso/ │ │ ├── client.go │ │ └── tso.go │ ├── uiserver/ │ │ ├── .gitignore │ │ ├── embedded_assets_rewriter.go │ │ ├── empty_assets_handler.go │ │ └── uiserver.go │ └── utils/ │ ├── fx.go │ ├── grpc.go │ ├── service_status.go │ ├── sys_schema.go │ ├── topology/ │ │ ├── models.go │ │ ├── monitor.go │ │ ├── pd.go │ │ ├── scheduling.go │ │ ├── store.go │ │ ├── ticdc.go │ │ ├── tidb.go │ │ ├── tiproxy.go │ │ ├── topology.go │ │ └── tso.go │ └── version/ │ ├── fips.go │ └── version.go ├── release-version ├── scripts/ │ ├── _inc/ │ │ ├── download_tools.sh │ │ └── run_services.sh │ ├── create_release_tag.js │ ├── distro/ │ │ ├── write_strings.go │ │ └── write_strings.sh │ ├── embed_ui_assets.sh │ ├── generate_assets.go │ ├── generate_swagger_spec.sh │ ├── go.mod │ ├── go.sum │ ├── install_go_tools.sh │ ├── lint.sh │ ├── pd_version_matrix.go │ ├── start_tiup.sh │ ├── tiup.config.toml │ ├── tools.go │ └── wait_tiup_playground.sh ├── swaggerspec/ │ ├── .gitignore │ └── placeholder.go ├── tests/ │ ├── create_table.sh │ ├── dump.sh │ ├── fixtures/ │ │ └── CLUSTER_SLOW_QUERY.yml │ ├── integration/ │ │ ├── diagnose_report_test.go │ │ ├── info/ │ │ │ └── info_test.go │ │ ├── slowquery/ │ │ │ ├── compatibility_test.go │ │ │ └── mock_db_test.go │ │ └── user/ │ │ └── user_test.go │ ├── run.sh │ ├── schema/ │ │ └── test.CLUSTER_SLOW_QUERY-schema.sql │ └── util/ │ ├── compatibility.go │ ├── dump/ │ │ └── dump.go │ ├── fixtures.go │ ├── gin_test_helper.go │ ├── mock_app.go │ └── tidb_version.go ├── ui/ │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── .husky/ │ │ └── pre-commit │ ├── .prettierignore │ ├── .prettierrc │ ├── OWNERS │ ├── README.md │ ├── go.mod │ ├── less-vars.js │ ├── netlify.toml │ ├── package.json │ ├── packages/ │ │ ├── clinic-client/ │ │ │ ├── gulpfile.js │ │ │ ├── openapitools.json │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── client/ │ │ │ │ └── api/ │ │ │ │ ├── api.ts │ │ │ │ ├── base.ts │ │ │ │ ├── common.ts │ │ │ │ ├── configuration.ts │ │ │ │ └── index.ts │ │ │ ├── swagger/ │ │ │ │ ├── .openapi_config.yaml │ │ │ │ ├── gen_api.sh │ │ │ │ └── spec.json │ │ │ └── tsconfig.json │ │ ├── tidb-dashboard-client/ │ │ │ ├── gulpfile.js │ │ │ ├── openapitools.json │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── client/ │ │ │ │ └── api/ │ │ │ │ ├── api/ │ │ │ │ │ ├── default-api.ts │ │ │ │ │ └── statement-api.ts │ │ │ │ ├── api.ts │ │ │ │ ├── base.ts │ │ │ │ ├── common.ts │ │ │ │ ├── configuration.ts │ │ │ │ ├── index.ts │ │ │ │ └── models/ │ │ │ │ ├── clusterinfo-cluster-statistics-partial.ts │ │ │ │ ├── clusterinfo-cluster-statistics.ts │ │ │ │ ├── clusterinfo-get-hosts-info-response.ts │ │ │ │ ├── clusterinfo-store-topology-response.ts │ │ │ │ ├── code-share-request.ts │ │ │ │ ├── code-share-response.ts │ │ │ │ ├── config-key-visual-config.ts │ │ │ │ ├── config-profiling-config.ts │ │ │ │ ├── config-ssocore-config.ts │ │ │ │ ├── configuration-all-config-items.ts │ │ │ │ ├── configuration-edit-request.ts │ │ │ │ ├── configuration-edit-response.ts │ │ │ │ ├── configuration-item.ts │ │ │ │ ├── conprof-component-num.ts │ │ │ │ ├── conprof-component.ts │ │ │ │ ├── conprof-continuous-profiling-config.ts │ │ │ │ ├── conprof-estimate-size-res.ts │ │ │ │ ├── conprof-group-profile-detail.ts │ │ │ │ ├── conprof-group-profiles.ts │ │ │ │ ├── conprof-ng-monitoring-config.ts │ │ │ │ ├── conprof-profile-detail.ts │ │ │ │ ├── conprof-target.ts │ │ │ │ ├── deadlock-model.ts │ │ │ │ ├── decorator-label-key.ts │ │ │ │ ├── diagnose-gen-diagnosis-report-request.ts │ │ │ │ ├── diagnose-generate-metrics-relation-request.ts │ │ │ │ ├── diagnose-generate-report-request.ts │ │ │ │ ├── diagnose-report.ts │ │ │ │ ├── diagnose-table-def.ts │ │ │ │ ├── diagnose-table-row-def.ts │ │ │ │ ├── endpoint-apidefinition.ts │ │ │ │ ├── endpoint-apiparam-definition.ts │ │ │ │ ├── endpoint-request-payload.ts │ │ │ │ ├── hostinfo-cpuinfo.ts │ │ │ │ ├── hostinfo-cpuusage-info.ts │ │ │ │ ├── hostinfo-info.ts │ │ │ │ ├── hostinfo-instance-info.ts │ │ │ │ ├── hostinfo-memory-usage-info.ts │ │ │ │ ├── hostinfo-partition-info.ts │ │ │ │ ├── index.ts │ │ │ │ ├── info-info-response.ts │ │ │ │ ├── info-table-schema.ts │ │ │ │ ├── info-who-am-iresponse.ts │ │ │ │ ├── logsearch-create-task-group-request.ts │ │ │ │ ├── logsearch-preview-model.ts │ │ │ │ ├── logsearch-search-log-request.ts │ │ │ │ ├── logsearch-task-group-model.ts │ │ │ │ ├── logsearch-task-group-response.ts │ │ │ │ ├── logsearch-task-model.ts │ │ │ │ ├── matrix-matrix.ts │ │ │ │ ├── metrics-get-prom-address-config-response.ts │ │ │ │ ├── metrics-put-custom-prom-address-request.ts │ │ │ │ ├── metrics-put-custom-prom-address-response.ts │ │ │ │ ├── metrics-query-response.ts │ │ │ │ ├── model-request-target-node.ts │ │ │ │ ├── model-request-target-statistics.ts │ │ │ │ ├── profiling-group-detail-response.ts │ │ │ │ ├── profiling-start-request.ts │ │ │ │ ├── profiling-task-group-model.ts │ │ │ │ ├── profiling-task-model.ts │ │ │ │ ├── queryeditor-run-request.ts │ │ │ │ ├── queryeditor-run-response.ts │ │ │ │ ├── resourcemanager-calibrate-response.ts │ │ │ │ ├── resourcemanager-get-config-response.ts │ │ │ │ ├── resourcemanager-resource-info-row-def.ts │ │ │ │ ├── rest-error-response.ts │ │ │ │ ├── slowquery-get-list-request.ts │ │ │ │ ├── slowquery-model.ts │ │ │ │ ├── sso-create-impersonation-request.ts │ │ │ │ ├── sso-set-config-request.ts │ │ │ │ ├── sso-ssoimpersonation-model.ts │ │ │ │ ├── statement-binding.ts │ │ │ │ ├── statement-editable-config.ts │ │ │ │ ├── statement-get-statements-request.ts │ │ │ │ ├── statement-model.ts │ │ │ │ ├── statement-time-range.ts │ │ │ │ ├── topology-alert-manager-info.ts │ │ │ │ ├── topology-grafana-info.ts │ │ │ │ ├── topology-pdinfo.ts │ │ │ │ ├── topology-scheduling-info.ts │ │ │ │ ├── topology-store-info.ts │ │ │ │ ├── topology-store-labels.ts │ │ │ │ ├── topology-store-location.ts │ │ │ │ ├── topology-ti-cdcinfo.ts │ │ │ │ ├── topology-ti-dbinfo.ts │ │ │ │ ├── topology-ti-proxy-info.ts │ │ │ │ ├── topology-tsoinfo.ts │ │ │ │ ├── topsql-editable-config.ts │ │ │ │ ├── topsql-instance-item.ts │ │ │ │ ├── topsql-instance-response.ts │ │ │ │ ├── topsql-summary-by-item.ts │ │ │ │ ├── topsql-summary-item.ts │ │ │ │ ├── topsql-summary-plan-item.ts │ │ │ │ ├── topsql-summary-response.ts │ │ │ │ ├── topsql-tikv-network-io-collection-config.ts │ │ │ │ ├── topsql-update-tikv-network-io-collection-response.ts │ │ │ │ ├── user-authenticate-form.ts │ │ │ │ ├── user-get-login-info-response.ts │ │ │ │ ├── user-sign-out-info.ts │ │ │ │ ├── user-token-response.ts │ │ │ │ └── version-info.ts │ │ │ ├── swagger/ │ │ │ │ ├── .openapi_config.yaml │ │ │ │ ├── gen_api.sh │ │ │ │ └── spec.json │ │ │ └── tsconfig.json │ │ ├── tidb-dashboard-for-clinic-cloud/ │ │ │ ├── .gitignore │ │ │ ├── builder.js │ │ │ ├── gulpfile.js │ │ │ ├── package.json │ │ │ ├── process-shim.js │ │ │ ├── public/ │ │ │ │ ├── diagnose-report/ │ │ │ │ │ └── index.html │ │ │ │ ├── graphvizlib.wasm │ │ │ │ ├── index.html │ │ │ │ └── ngm.html │ │ │ ├── src/ │ │ │ │ ├── apps/ │ │ │ │ │ ├── ClusterInfo/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── Configuration/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── ContinuousProfiling/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── Deadlock/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── DebugAPI/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── Diagnose/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── InstanceProfiling/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── KeyViz/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── Monitoring/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── meta.ts │ │ │ │ │ │ └── metricsQueries.ts │ │ │ │ │ ├── OptimizerTrace/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── Overview/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── meta.ts │ │ │ │ │ │ └── metricsQueries.ts │ │ │ │ │ ├── QueryEditor/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── ResourceManager/ │ │ │ │ │ │ ├── context-impl.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── SearchLogs/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── SlowQuery/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── Statement/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── SystemReport/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── TopSQL/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── TopSlowQuery/ │ │ │ │ │ │ ├── context-provider.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── meta.ts │ │ │ │ │ │ └── sample-data/ │ │ │ │ │ │ └── slowqueries.json │ │ │ │ │ └── UserProfile/ │ │ │ │ │ ├── context.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── meta.ts │ │ │ │ ├── client/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── translations/ │ │ │ │ │ ├── en.yaml │ │ │ │ │ ├── index.ts │ │ │ │ │ └── zh.yaml │ │ │ │ ├── dashboardApp/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── layout/ │ │ │ │ │ │ ├── main/ │ │ │ │ │ │ │ ├── Sider/ │ │ │ │ │ │ │ │ ├── Banner.module.less │ │ │ │ │ │ │ │ ├── Banner.tsx │ │ │ │ │ │ │ │ ├── index.module.less │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── index.module.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── translations/ │ │ │ │ │ │ ├── en.yaml │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── zh.yaml │ │ │ │ │ ├── main.tsx │ │ │ │ │ └── nprogress.less │ │ │ │ ├── diagnoseReportApp/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── DiagnosisReport.tsx │ │ │ │ │ │ └── DiagnosisTable.tsx │ │ │ │ │ ├── index.css │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── react-app-env.d.ts │ │ │ │ │ ├── translations/ │ │ │ │ │ │ ├── en.yaml │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── zh.yaml │ │ │ │ │ └── types.ts │ │ │ │ ├── react-app-env.d.ts │ │ │ │ ├── styles/ │ │ │ │ │ ├── override.less │ │ │ │ │ └── style.less │ │ │ │ └── utils/ │ │ │ │ ├── distro/ │ │ │ │ │ ├── assetsRes.ts │ │ │ │ │ ├── stringsRes.ts │ │ │ │ │ └── strings_res.json │ │ │ │ ├── globalConfig.ts │ │ │ │ ├── publicPathPrefix.ts │ │ │ │ ├── registry.ts │ │ │ │ └── store.ts │ │ │ └── tsconfig.json │ │ ├── tidb-dashboard-for-clinic-op/ │ │ │ ├── README.md │ │ │ ├── builder.js │ │ │ ├── gulpfile.js │ │ │ ├── package.json │ │ │ ├── process-shim.js │ │ │ ├── public/ │ │ │ │ └── index.html │ │ │ ├── src/ │ │ │ │ ├── App.tsx │ │ │ │ ├── apps/ │ │ │ │ │ └── SlowQuery/ │ │ │ │ │ ├── context.ts │ │ │ │ │ └── index.tsx │ │ │ │ ├── client/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── translations/ │ │ │ │ │ ├── en.yaml │ │ │ │ │ ├── index.ts │ │ │ │ │ └── zh.yaml │ │ │ │ ├── index.tsx │ │ │ │ ├── react-app-env.d.ts │ │ │ │ └── styles/ │ │ │ │ ├── override.less │ │ │ │ └── style.less │ │ │ └── tsconfig.json │ │ ├── tidb-dashboard-for-op/ │ │ │ ├── builder.js │ │ │ ├── cypress/ │ │ │ │ ├── .eslintrc.json │ │ │ │ ├── README.md │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── topsql_instance:end=1641934800&start=1641916800.json │ │ │ │ │ ├── topsql_summary:end=1641934800&instance=127.0.0.1%3A10080&instance_type=tidb&start=1641916800&top=5&window=123s.json │ │ │ │ │ ├── topsql_summary_large_timerange:end=1641916800&instance=127.0.0.1%3A10080&instance_type=tidb&start=1641484800&top=5&window=2929s.json │ │ │ │ │ ├── topsql_summary_small_timerange:end=1641920460&instance=127.0.0.1%3A10080&instance_type=tidb&start=1641920400&top=5&window=1s.json │ │ │ │ │ └── uri.json │ │ │ │ ├── integration/ │ │ │ │ │ ├── components.js │ │ │ │ │ ├── login/ │ │ │ │ │ │ ├── login_session.spec.js │ │ │ │ │ │ ├── user_login.compat_spec.js │ │ │ │ │ │ └── user_login.spec.js │ │ │ │ │ ├── slow_query/ │ │ │ │ │ │ ├── 01-list.spec.js │ │ │ │ │ │ ├── 02-detail.spec.js │ │ │ │ │ │ └── list.compat_spec.js │ │ │ │ │ ├── statement/ │ │ │ │ │ │ ├── 01-list.spec.js │ │ │ │ │ │ ├── 02-detail.spec.js │ │ │ │ │ │ └── list.compat_spec.js │ │ │ │ │ ├── topsql/ │ │ │ │ │ │ ├── topsql.spec.ts │ │ │ │ │ │ ├── topsql.without_ngm_spec.js │ │ │ │ │ │ └── topsql_security.spec.js │ │ │ │ │ └── utils.js │ │ │ │ ├── plugins/ │ │ │ │ │ └── index.js │ │ │ │ ├── support/ │ │ │ │ │ ├── commands.js │ │ │ │ │ └── index.js │ │ │ │ ├── tsconfig.json │ │ │ │ └── types/ │ │ │ │ ├── global.d.ts │ │ │ │ └── mocha.d.ts │ │ │ ├── cypress.json │ │ │ ├── gulpfile.js │ │ │ ├── package.json │ │ │ ├── process-shim.js │ │ │ ├── public/ │ │ │ │ ├── .gitignore │ │ │ │ ├── diagnoseReport.html │ │ │ │ ├── graphvizlib.wasm │ │ │ │ ├── index.html │ │ │ │ └── test-portal/ │ │ │ │ └── index.html │ │ │ ├── src/ │ │ │ │ ├── apps/ │ │ │ │ │ ├── ClusterInfo/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── Configuration/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── ContinuousProfiling/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── Deadlock/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── DebugAPI/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── Diagnose/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── InstanceProfiling/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── KeyViz/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── Monitoring/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── meta.ts │ │ │ │ │ │ └── metricsQueries.ts │ │ │ │ │ ├── OptimizerTrace/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── Overview/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── meta.ts │ │ │ │ │ │ └── metricsQueries.ts │ │ │ │ │ ├── QueryEditor/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── ResourceManager/ │ │ │ │ │ │ ├── context-impl.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── SearchLogs/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── SlowQuery/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── Statement/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── SystemReport/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ ├── TopSQL/ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── meta.ts │ │ │ │ │ └── UserProfile/ │ │ │ │ │ ├── context.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── meta.ts │ │ │ │ ├── client/ │ │ │ │ │ ├── apiBasePath.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── translations/ │ │ │ │ │ ├── en.yaml │ │ │ │ │ ├── index.ts │ │ │ │ │ └── zh.yaml │ │ │ │ ├── dashboardApp/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── layout/ │ │ │ │ │ │ ├── main/ │ │ │ │ │ │ │ ├── Sider/ │ │ │ │ │ │ │ │ ├── Banner.module.less │ │ │ │ │ │ │ │ ├── Banner.tsx │ │ │ │ │ │ │ │ ├── index.module.less │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── index.module.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── signin/ │ │ │ │ │ │ │ ├── index.module.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── translations/ │ │ │ │ │ │ ├── en.yaml │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── zh.yaml │ │ │ │ │ ├── main.tsx │ │ │ │ │ └── nprogress.less │ │ │ │ ├── diagnoseReportApp/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── DiagnosisReport.tsx │ │ │ │ │ │ └── DiagnosisTable.tsx │ │ │ │ │ ├── index.css │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── react-app-env.d.ts │ │ │ │ │ ├── translations/ │ │ │ │ │ │ ├── en.yaml │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── zh.yaml │ │ │ │ │ └── types.ts │ │ │ │ ├── react-app-env.d.ts │ │ │ │ ├── styles/ │ │ │ │ │ ├── override.less │ │ │ │ │ └── style.less │ │ │ │ └── utils/ │ │ │ │ ├── appOptions.ts │ │ │ │ ├── auth.ts │ │ │ │ ├── authSSO.ts │ │ │ │ ├── distro/ │ │ │ │ │ ├── assetsRes.ts │ │ │ │ │ ├── stringsRes.ts │ │ │ │ │ └── strings_res.json │ │ │ │ ├── publicPathPrefix.ts │ │ │ │ ├── registry.ts │ │ │ │ └── store.ts │ │ │ └── tsconfig.json │ │ └── tidb-dashboard-lib/ │ │ ├── builder.js │ │ ├── gulpfile.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── apps/ │ │ │ │ ├── ClusterInfo/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── DiskTable.tsx │ │ │ │ │ │ ├── HostTable.tsx │ │ │ │ │ │ ├── InstanceTable.tsx │ │ │ │ │ │ ├── Statistics.module.less │ │ │ │ │ │ ├── Statistics.tsx │ │ │ │ │ │ ├── StoreLocation.tsx │ │ │ │ │ │ └── StoreLocationTree/ │ │ │ │ │ │ ├── index.module.less │ │ │ │ │ │ ├── index.stories.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── context/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── pages/ │ │ │ │ │ │ ├── List.module.less │ │ │ │ │ │ └── List.tsx │ │ │ │ │ ├── status/ │ │ │ │ │ │ └── status.ts │ │ │ │ │ └── translations/ │ │ │ │ │ ├── en.yaml │ │ │ │ │ ├── index.ts │ │ │ │ │ └── zh.yaml │ │ │ │ ├── Configuration/ │ │ │ │ │ ├── InlineEditor.tsx │ │ │ │ │ ├── context/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── translations/ │ │ │ │ │ ├── en.yaml │ │ │ │ │ ├── index.ts │ │ │ │ │ └── zh.yaml │ │ │ │ ├── ContinuousProfiling/ │ │ │ │ │ ├── context/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── pages/ │ │ │ │ │ │ ├── ConProfSettingForm.tsx │ │ │ │ │ │ ├── Detail.tsx │ │ │ │ │ │ ├── List.module.less │ │ │ │ │ │ ├── List.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── translations/ │ │ │ │ │ │ ├── en.yaml │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── zh.yaml │ │ │ │ │ └── utils/ │ │ │ │ │ └── telemetry.ts │ │ │ │ ├── Deadlock/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── DeadlockChainGraph.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── context/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── pages/ │ │ │ │ │ │ ├── Detail.tsx │ │ │ │ │ │ ├── List.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── translations/ │ │ │ │ │ ├── en.yaml │ │ │ │ │ ├── index.ts │ │ │ │ │ └── zh.yaml │ │ │ │ ├── DebugAPI/ │ │ │ │ │ ├── apilist/ │ │ │ │ │ │ ├── ApiForm.tsx │ │ │ │ │ │ ├── ApiList.module.less │ │ │ │ │ │ ├── ApiList.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── widgets/ │ │ │ │ │ │ ├── Database.tsx │ │ │ │ │ │ ├── Enum.tsx │ │ │ │ │ │ ├── Host.tsx │ │ │ │ │ │ ├── Table.tsx │ │ │ │ │ │ ├── TableID.tsx │ │ │ │ │ │ ├── Text.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── useLimitSelection.ts │ │ │ │ │ ├── context/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── translations/ │ │ │ │ │ ├── en.yaml │ │ │ │ │ ├── index.ts │ │ │ │ │ └── zh.yaml │ │ │ │ ├── Diagnose/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── DiagnosisTable.tsx │ │ │ │ │ ├── context/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── pages/ │ │ │ │ │ │ ├── DiagnoseGenerator.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── translations/ │ │ │ │ │ │ ├── en.yaml │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── zh.yaml │ │ │ │ │ └── utils/ │ │ │ │ │ └── tableColumns.tsx │ │ │ │ ├── InstanceProfiling/ │ │ │ │ │ ├── context/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── pages/ │ │ │ │ │ │ ├── Detail.tsx │ │ │ │ │ │ ├── List.module.less │ │ │ │ │ │ ├── List.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── translations/ │ │ │ │ │ │ ├── en.yaml │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── zh.yaml │ │ │ │ │ └── utils/ │ │ │ │ │ ├── combineTargetStats.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── KeyViz/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── KeyViz.less │ │ │ │ │ │ ├── KeyViz.tsx │ │ │ │ │ │ ├── KeyVizSettingForm.tsx │ │ │ │ │ │ └── KeyVizToolbar.tsx │ │ │ │ │ ├── context/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── heatmap/ │ │ │ │ │ │ ├── axis/ │ │ │ │ │ │ │ ├── histogram.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── label-axis.ts │ │ │ │ │ │ ├── buffer.ts │ │ │ │ │ │ ├── chart.ts │ │ │ │ │ │ ├── color.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── legend.ts │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── translations/ │ │ │ │ │ │ ├── en.yaml │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── zh.yaml │ │ │ │ │ └── utils/ │ │ │ │ │ ├── api.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── telemetry.ts │ │ │ │ ├── Monitoring/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── Monitoring.tsx │ │ │ │ │ ├── context/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── translations/ │ │ │ │ │ │ ├── en.yaml │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── zh.yaml │ │ │ │ │ └── utils/ │ │ │ │ │ └── telemetry.ts │ │ │ │ ├── OptimizerTrace/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── LogicalOperatorTree.tsx │ │ │ │ │ │ ├── OperatorTree.module.less │ │ │ │ │ │ ├── PhysicalCostTree.tsx │ │ │ │ │ │ └── PhysicalOperatorTree.tsx │ │ │ │ │ ├── context/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── examples/ │ │ │ │ │ │ ├── new-format.json │ │ │ │ │ │ └── old-format.json │ │ │ │ │ ├── index.module.less │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── translations/ │ │ │ │ │ ├── en.yaml │ │ │ │ │ ├── index.ts │ │ │ │ │ └── zh.yaml │ │ │ │ ├── Overview/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── Instances.tsx │ │ │ │ │ │ ├── Metrics.tsx │ │ │ │ │ │ ├── MonitorAlert.tsx │ │ │ │ │ │ └── Styles.module.less │ │ │ │ │ ├── context/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── translations/ │ │ │ │ │ │ ├── en.yaml │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── zh.yaml │ │ │ │ │ └── utils/ │ │ │ │ │ └── telemetry.ts │ │ │ │ ├── QueryEditor/ │ │ │ │ │ ├── Editor.module.less │ │ │ │ │ ├── Editor.tsx │ │ │ │ │ ├── ResultTable.module.less │ │ │ │ │ ├── ResultTable.tsx │ │ │ │ │ ├── context/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── editorThemes/ │ │ │ │ │ │ ├── oneHalfDark.js │ │ │ │ │ │ └── oneHalfLight.js │ │ │ │ │ ├── index.module.less │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── translations/ │ │ │ │ │ ├── en.yaml │ │ │ │ │ ├── index.ts │ │ │ │ │ └── zh.yaml │ │ │ │ ├── ResourceManager/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── Configuration.tsx │ │ │ │ │ │ ├── EstimateCapacity.tsx │ │ │ │ │ │ ├── Metrics.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── context/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── pages/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── translations/ │ │ │ │ │ │ ├── en.yaml │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── zh.yaml │ │ │ │ │ └── uilts/ │ │ │ │ │ ├── helpers.ts │ │ │ │ │ ├── metricQueries.ts │ │ │ │ │ └── url-state.ts │ │ │ │ ├── SQLAdvisor/ │ │ │ │ │ ├── component/ │ │ │ │ │ │ ├── IndexInsightList.tsx │ │ │ │ │ │ ├── IndexInsightListWithRegister.module.less │ │ │ │ │ │ ├── IndexInsightListWithRegister.tsx │ │ │ │ │ │ ├── IndexInsightTable.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── context/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── pages/ │ │ │ │ │ │ ├── Detail/ │ │ │ │ │ │ │ ├── index.module.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── List/ │ │ │ │ │ │ │ ├── List.module.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── translations/ │ │ │ │ │ │ ├── en.yaml │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── zh.yaml │ │ │ │ │ ├── types/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── utils/ │ │ │ │ │ ├── dbaasSecuritySetting.ts │ │ │ │ │ └── suggestedCommandMaps.tsx │ │ │ │ ├── SearchLogs/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── Icon.tsx │ │ │ │ │ │ ├── LogRow.module.less │ │ │ │ │ │ ├── LogRow.tsx │ │ │ │ │ │ ├── SearchHeader.tsx │ │ │ │ │ │ ├── SearchProgress.tsx │ │ │ │ │ │ ├── SearchResult.tsx │ │ │ │ │ │ ├── Styles.module.less │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── context/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── pages/ │ │ │ │ │ │ ├── LogSearch.tsx │ │ │ │ │ │ ├── LogSearchDetail.tsx │ │ │ │ │ │ ├── LogSearchHistory.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── translations/ │ │ │ │ │ │ ├── en.yaml │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── zh.yaml │ │ │ │ │ └── utils/ │ │ │ │ │ └── index.ts │ │ │ │ ├── SlowQuery/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── LimitTimeRange.tsx │ │ │ │ │ │ ├── SlowQueriesTable.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── context/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── pages/ │ │ │ │ │ │ ├── Detail/ │ │ │ │ │ │ │ ├── DetailTabBasic.tsx │ │ │ │ │ │ │ ├── DetailTabCopr.tsx │ │ │ │ │ │ │ ├── DetailTabRuV2.tsx │ │ │ │ │ │ │ ├── DetailTabTime.tsx │ │ │ │ │ │ │ ├── DetailTabTxn.tsx │ │ │ │ │ │ │ ├── DetailTabs.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── List/ │ │ │ │ │ │ │ ├── DownloadDBFileModal.tsx │ │ │ │ │ │ │ ├── List.module.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── translations/ │ │ │ │ │ │ ├── en.yaml │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── zh.yaml │ │ │ │ │ └── utils/ │ │ │ │ │ ├── detail-url-state.ts │ │ │ │ │ ├── helpers.ts │ │ │ │ │ ├── list-url-state.ts │ │ │ │ │ ├── tableColumns.tsx │ │ │ │ │ ├── telemetry.ts │ │ │ │ │ ├── useSchemaColumns.ts │ │ │ │ │ └── useSlowQueryTableController.ts │ │ │ │ ├── Statement/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── StatementsTable.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── context/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── pages/ │ │ │ │ │ │ ├── Detail/ │ │ │ │ │ │ │ ├── PlanBind.module.less │ │ │ │ │ │ │ ├── PlanBind.tsx │ │ │ │ │ │ │ ├── PlanDetail.tsx │ │ │ │ │ │ │ ├── PlanDetailTabBasic.tsx │ │ │ │ │ │ │ ├── PlanDetailTabCopr.tsx │ │ │ │ │ │ │ ├── PlanDetailTabTime.tsx │ │ │ │ │ │ │ ├── PlanDetailTabTxn.tsx │ │ │ │ │ │ │ ├── PlanDetailTabs.tsx │ │ │ │ │ │ │ ├── SlowQueryTab.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── List/ │ │ │ │ │ │ │ ├── List.module.less │ │ │ │ │ │ │ ├── StatementSettingForm.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── translations/ │ │ │ │ │ │ ├── en.yaml │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── zh.yaml │ │ │ │ │ └── utils/ │ │ │ │ │ ├── tableColumns.tsx │ │ │ │ │ ├── telemetry.ts │ │ │ │ │ ├── useSchemaColumns.ts │ │ │ │ │ └── useStatementTableController.ts │ │ │ │ ├── SystemReport/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── ReportHistory.tsx │ │ │ │ │ ├── context/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── pages/ │ │ │ │ │ │ ├── ReportGenerator.tsx │ │ │ │ │ │ ├── ReportStatus.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── translations/ │ │ │ │ │ ├── en.yaml │ │ │ │ │ ├── index.ts │ │ │ │ │ └── zh.yaml │ │ │ │ ├── TopSQL/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── Filter/ │ │ │ │ │ │ ├── InstanceSelect.tsx │ │ │ │ │ │ ├── common.module.less │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── context/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── pages/ │ │ │ │ │ │ └── List/ │ │ │ │ │ │ ├── List.module.less │ │ │ │ │ │ ├── List.tsx │ │ │ │ │ │ ├── ListChart.tsx │ │ │ │ │ │ ├── ListDetail/ │ │ │ │ │ │ │ ├── ListDetail.tsx │ │ │ │ │ │ │ ├── ListDetailContent.tsx │ │ │ │ │ │ │ ├── ListDetailTable.tsx │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── ListTable.tsx │ │ │ │ │ │ ├── SettingsForm.module.less │ │ │ │ │ │ ├── SettingsForm.tsx │ │ │ │ │ │ └── legendAction.ts │ │ │ │ │ ├── translations/ │ │ │ │ │ │ ├── en.yaml │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── zh.yaml │ │ │ │ │ └── utils/ │ │ │ │ │ ├── specialRecord.ts │ │ │ │ │ ├── telemetry.ts │ │ │ │ │ └── useRecordSelection.ts │ │ │ │ ├── TopSlowQuery/ │ │ │ │ │ ├── context.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── pages/ │ │ │ │ │ │ ├── CountChart.tsx │ │ │ │ │ │ ├── List.module.less │ │ │ │ │ │ ├── List.tsx │ │ │ │ │ │ └── ListTable.tsx │ │ │ │ │ ├── translations/ │ │ │ │ │ │ ├── en.yaml │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── zh.yaml │ │ │ │ │ └── uilts/ │ │ │ │ │ ├── helpers.ts │ │ │ │ │ ├── telemetry.ts │ │ │ │ │ └── url-state.ts │ │ │ │ ├── UserProfile/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── Form.Language.tsx │ │ │ │ │ │ ├── Form.PrometheusAddr.tsx │ │ │ │ │ │ ├── Form.SSO.tsx │ │ │ │ │ │ ├── Form.Session.tsx │ │ │ │ │ │ ├── Form.Version.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── context/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── translations/ │ │ │ │ │ │ ├── en.yaml │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── zh.yaml │ │ │ │ │ └── utils/ │ │ │ │ │ └── helper.ts │ │ │ │ └── index.ts │ │ │ ├── client/ │ │ │ │ ├── clinic-extensions.d.ts │ │ │ │ ├── index.ts │ │ │ │ └── models.ts │ │ │ ├── components/ │ │ │ │ ├── AnimatedSkeleton/ │ │ │ │ │ ├── index.module.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── AppearAnimate/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── AutoRefreshButton/ │ │ │ │ │ ├── AutoRefreshButton.tsx │ │ │ │ │ ├── index.module.less │ │ │ │ │ └── index.ts │ │ │ │ ├── Bar/ │ │ │ │ │ ├── Bar.module.less │ │ │ │ │ ├── Bar.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── BaseSelect/ │ │ │ │ │ ├── index.module.less │ │ │ │ │ ├── index.stories.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── BinaryPlanTable/ │ │ │ │ │ ├── BinaryPlanColsSelector.tsx │ │ │ │ │ ├── index.module.less │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── sample-data/ │ │ │ │ │ ├── binary-plan.json │ │ │ │ │ └── detail-res.json │ │ │ │ ├── Blink/ │ │ │ │ │ ├── index.module.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── Card/ │ │ │ │ │ ├── index.module.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── CardTable/ │ │ │ │ │ ├── GroupHeader.tsx │ │ │ │ │ ├── index.module.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── CardTabs/ │ │ │ │ │ ├── index.module.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── ColumnsSelector/ │ │ │ │ │ ├── index.module.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── CopyLink/ │ │ │ │ │ ├── index.module.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── DatePicker/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── DateTime/ │ │ │ │ │ ├── Calendar.tsx │ │ │ │ │ ├── Long.tsx │ │ │ │ │ ├── calendarPlugin.ts │ │ │ │ │ └── index.tsx │ │ │ │ ├── Descriptions/ │ │ │ │ │ ├── index.module.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── DrawerFooter/ │ │ │ │ │ ├── index.module.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── ErrorBar/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Expand/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Head/ │ │ │ │ │ ├── index.module.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── HighlightSQL/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── InstanceSelect/ │ │ │ │ │ ├── DropOverlay.tsx │ │ │ │ │ ├── TableWithFilter.module.less │ │ │ │ │ ├── TableWithFilter.tsx │ │ │ │ │ ├── ValueDisplay.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── InstanceStatusBadge/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── LanguageDropdown/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── LimitTimeRange/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── MultiSelect/ │ │ │ │ │ ├── DropOverlay.tsx │ │ │ │ │ ├── Plain.tsx │ │ │ │ │ ├── index.stories.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── Ngm/ │ │ │ │ │ ├── NgmNotStarted.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── ParamsPageWrapper/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── PlanText/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Pre/ │ │ │ │ │ ├── index.module.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── Root/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── TextWithInfo/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── TextWrap/ │ │ │ │ │ ├── index.module.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── TimePicker/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── TimeRangeSelector/ │ │ │ │ │ ├── WithZoomOut.tsx │ │ │ │ │ ├── hook.tsx │ │ │ │ │ ├── index.module.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── Toolbar/ │ │ │ │ │ ├── index.module.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── TxtDownloadLink/ │ │ │ │ │ ├── index.module.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── ValueWithTooltip/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── VisualPlan/ │ │ │ │ │ ├── DetailDrawer.tsx │ │ │ │ │ ├── VisualPlan.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── translations/ │ │ │ │ │ ├── en.yaml │ │ │ │ │ ├── index.ts │ │ │ │ │ └── zh.yaml │ │ │ │ └── index.ts │ │ │ ├── hooks/ │ │ │ │ ├── useLocationChange.ts │ │ │ │ ├── useQueryParams.ts │ │ │ │ └── useURLTimeRange.ts │ │ │ ├── index.ts │ │ │ ├── react-app-env.d.ts │ │ │ ├── types/ │ │ │ │ ├── index.ts │ │ │ │ └── reqConfig.ts │ │ │ └── utils/ │ │ │ ├── charts.ts │ │ │ ├── distro.ts │ │ │ ├── format.ts │ │ │ ├── i18n.ts │ │ │ ├── index.ts │ │ │ ├── instanceTable.ts │ │ │ ├── local-download.ts │ │ │ ├── openLink.ts │ │ │ ├── prometheus/ │ │ │ │ ├── data.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── query.ts │ │ │ ├── routing.ts │ │ │ ├── selectionWithFilter.ts │ │ │ ├── sqlFormatter/ │ │ │ │ └── index.ts │ │ │ ├── store.ts │ │ │ ├── tableColumnFactory.tsx │ │ │ ├── tableColumns.tsx │ │ │ ├── telemetry.ts │ │ │ ├── timezone.ts │ │ │ ├── useCache.ts │ │ │ ├── useCacheItemIndex.ts │ │ │ ├── useChange.ts │ │ │ ├── useClientRequest.ts │ │ │ ├── useOrderState.ts │ │ │ ├── useQueryParams.ts │ │ │ ├── useVersionedLocalStorageState.ts │ │ │ └── wdyr.ts │ │ └── tsconfig.json │ ├── pnpm-workspace.yaml │ └── tsconfig.json ├── ui-v2/ │ ├── .changeset/ │ │ ├── README.md │ │ └── config.json │ ├── .gitignore │ ├── .husky/ │ │ └── pre-commit │ ├── .prettierignore │ ├── .prettierrc │ ├── README.md │ ├── api-specs/ │ │ └── azores.json │ ├── eslint.config.js │ ├── orval.config.ts │ ├── package.json │ ├── packages/ │ │ ├── api/ │ │ │ ├── client/ │ │ │ │ ├── .gitignore │ │ │ │ ├── CHANGELOG.md │ │ │ │ ├── package.json │ │ │ │ ├── rollup.config.js │ │ │ │ ├── src/ │ │ │ │ │ ├── http/ │ │ │ │ │ │ └── client.ts │ │ │ │ │ └── index.ts │ │ │ │ └── tsconfig.json │ │ │ └── server/ │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── azores/ │ │ │ │ ├── handlers/ │ │ │ │ │ ├── apiKeyServiceCreateApiKey.ts │ │ │ │ │ ├── apiKeyServiceDeleteApiKey.ts │ │ │ │ │ ├── apiKeyServiceGetApiKey.ts │ │ │ │ │ ├── apiKeyServiceGetTemErrorDetail.ts │ │ │ │ │ ├── apiKeyServiceListApiKeys.ts │ │ │ │ │ ├── apiKeyServiceResetSecretKey.ts │ │ │ │ │ ├── apiKeyServiceUpdateApiKey.ts │ │ │ │ │ ├── clusterBRServiceCreateBackupTask.ts │ │ │ │ │ ├── clusterBRServiceCreateRestoreTask.ts │ │ │ │ │ ├── clusterBRServiceDetectCluster.ts │ │ │ │ │ ├── clusterBRServiceGetClusterBackupPolicy.ts │ │ │ │ │ ├── clusterBRServiceListClusterBRTasks.ts │ │ │ │ │ ├── clusterBRServiceListClusterBackupRecords.ts │ │ │ │ │ ├── clusterServiceDeleteProcess.ts │ │ │ │ │ ├── clusterServiceGetProcessList.ts │ │ │ │ │ ├── credentialServiceCreateCredential.ts │ │ │ │ │ ├── credentialServiceDeleteCredential.ts │ │ │ │ │ ├── credentialServiceDownloadRSAKey.ts │ │ │ │ │ ├── credentialServiceGenerateRSAKey.ts │ │ │ │ │ ├── credentialServiceGetCredential.ts │ │ │ │ │ ├── credentialServiceListCredentials.ts │ │ │ │ │ ├── credentialServiceUpdateCredential.ts │ │ │ │ │ ├── credentialServiceValidateConnection.ts │ │ │ │ │ ├── diagnosisServiceAddSqlLimit.ts │ │ │ │ │ ├── diagnosisServiceBindSqlPlan.ts │ │ │ │ │ ├── diagnosisServiceCheckSqlLimitSupport.ts │ │ │ │ │ ├── diagnosisServiceCheckSqlPlanSupport.ts │ │ │ │ │ ├── diagnosisServiceDownloadSlowQueryList.ts │ │ │ │ │ ├── diagnosisServiceGetResourceGroupList.ts │ │ │ │ │ ├── diagnosisServiceGetSlowQueryAvailableAdvancedFilterInfo.ts │ │ │ │ │ ├── diagnosisServiceGetSlowQueryAvailableAdvancedFilters.ts │ │ │ │ │ ├── diagnosisServiceGetSlowQueryAvailableFields.ts │ │ │ │ │ ├── diagnosisServiceGetSlowQueryDetail.ts │ │ │ │ │ ├── diagnosisServiceGetSlowQueryList.ts │ │ │ │ │ ├── diagnosisServiceGetSqlLimitList.ts │ │ │ │ │ ├── diagnosisServiceGetSqlPlanBindingList.ts │ │ │ │ │ ├── diagnosisServiceGetSqlPlanList.ts │ │ │ │ │ ├── diagnosisServiceGetTopSqlAvailableAdvancedFilterInfo.ts │ │ │ │ │ ├── diagnosisServiceGetTopSqlAvailableAdvancedFilters.ts │ │ │ │ │ ├── diagnosisServiceGetTopSqlAvailableFields.ts │ │ │ │ │ ├── diagnosisServiceGetTopSqlConfigs.ts │ │ │ │ │ ├── diagnosisServiceGetTopSqlDetail.ts │ │ │ │ │ ├── diagnosisServiceGetTopSqlList.ts │ │ │ │ │ ├── diagnosisServiceRemoveSqlLimit.ts │ │ │ │ │ ├── diagnosisServiceUnbindSqlPlan.ts │ │ │ │ │ ├── diagnosisServiceUpdateTopSqlConfigs.ts │ │ │ │ │ ├── globalBRServiceCreateBackupPolicy.ts │ │ │ │ │ ├── globalBRServiceDeleteBRTask.ts │ │ │ │ │ ├── globalBRServiceDeleteBackupPolicy.ts │ │ │ │ │ ├── globalBRServiceGetBRSummary.ts │ │ │ │ │ ├── globalBRServiceGetBackupPolicy.ts │ │ │ │ │ ├── globalBRServiceListBRTasks.ts │ │ │ │ │ ├── globalBRServiceListBackupPolicies.ts │ │ │ │ │ ├── globalBRServicePreCheckBackupPolicy.ts │ │ │ │ │ ├── globalBRServiceStartBRTask.ts │ │ │ │ │ ├── globalBRServiceStopBRTask.ts │ │ │ │ │ ├── globalBRServiceUpdateBackupPolicy.ts │ │ │ │ │ ├── hostServiceBatchDelete.ts │ │ │ │ │ ├── hostServiceCheck.ts │ │ │ │ │ ├── hostServiceCreateHosts.ts │ │ │ │ │ ├── hostServiceDelete.ts │ │ │ │ │ ├── hostServiceDownloadHostTemplate.ts │ │ │ │ │ ├── hostServiceDownloadListHosts.ts │ │ │ │ │ ├── hostServiceFix.ts │ │ │ │ │ ├── hostServiceGetDisks.ts │ │ │ │ │ ├── hostServiceGetHost.ts │ │ │ │ │ ├── hostServiceGetTiDBProcesses.ts │ │ │ │ │ ├── hostServiceHostConfirm.ts │ │ │ │ │ ├── hostServiceImport.ts │ │ │ │ │ ├── hostServiceImportTask.ts │ │ │ │ │ ├── hostServiceListHosts.ts │ │ │ │ │ ├── hostServiceReport.ts │ │ │ │ │ ├── hostServiceUpdateHost.ts │ │ │ │ │ ├── labelServiceBatchCreateLabels.ts │ │ │ │ │ ├── labelServiceBindLabel.ts │ │ │ │ │ ├── labelServiceBindResource.ts │ │ │ │ │ ├── labelServiceCreateLabel.ts │ │ │ │ │ ├── labelServiceDeleteLabel.ts │ │ │ │ │ ├── labelServiceGetLabel.ts │ │ │ │ │ ├── labelServiceGetLabelWithBindings.ts │ │ │ │ │ ├── labelServiceListLabelKeys.ts │ │ │ │ │ ├── labelServiceListLabels.ts │ │ │ │ │ ├── labelServiceListLabelsByResourceType.ts │ │ │ │ │ ├── labelServiceListLabelsWithBindings.ts │ │ │ │ │ ├── labelServiceUpdateLabel.ts │ │ │ │ │ ├── licenseServiceActivateFreeLicense.ts │ │ │ │ │ ├── licenseServiceActivateLicense.ts │ │ │ │ │ ├── licenseServiceGetDeviceCode.ts │ │ │ │ │ ├── licenseServiceGetLicense.ts │ │ │ │ │ ├── locationServiceCreateLocations.ts │ │ │ │ │ ├── locationServiceDeleteLocation.ts │ │ │ │ │ ├── locationServiceGetLocations.ts │ │ │ │ │ ├── locationServiceListLocations.ts │ │ │ │ │ ├── locationServiceUpdateLocations.ts │ │ │ │ │ ├── metricsServiceGetClusterMetricData.ts │ │ │ │ │ ├── metricsServiceGetClusterMetricInstance.ts │ │ │ │ │ ├── metricsServiceGetHostMetricData.ts │ │ │ │ │ ├── metricsServiceGetMetrics.ts │ │ │ │ │ ├── metricsServiceGetOverviewStatus.ts │ │ │ │ │ ├── metricsServiceGetTopMetricConfig.ts │ │ │ │ │ ├── metricsServiceGetTopMetricData.ts │ │ │ │ │ ├── roleServiceCreateRole.ts │ │ │ │ │ ├── roleServiceDeleteRole.ts │ │ │ │ │ ├── roleServiceListRoles.ts │ │ │ │ │ ├── roleServiceUpdateRole.ts │ │ │ │ │ ├── tagServiceBatchCreateTags.ts │ │ │ │ │ ├── tagServiceBindResource.ts │ │ │ │ │ ├── tagServiceBindTag.ts │ │ │ │ │ ├── tagServiceCreateTag.ts │ │ │ │ │ ├── tagServiceDeleteTag.ts │ │ │ │ │ ├── tagServiceGetTag.ts │ │ │ │ │ ├── tagServiceGetTagWithBindings.ts │ │ │ │ │ ├── tagServiceListTagKeys.ts │ │ │ │ │ ├── tagServiceListTags.ts │ │ │ │ │ ├── tagServiceListTagsByResourceType.ts │ │ │ │ │ ├── tagServiceListTagsWithBindings.ts │ │ │ │ │ ├── tagServiceUpdateTag.ts │ │ │ │ │ ├── tiupsServiceCreateTiups.ts │ │ │ │ │ ├── tiupsServiceDeleteTiups.ts │ │ │ │ │ ├── tiupsServiceGetTiups.ts │ │ │ │ │ ├── tiupsServiceGetTiupsCluster.ts │ │ │ │ │ ├── tiupsServiceListTiups.ts │ │ │ │ │ ├── tiupsServiceUpdateTiups.ts │ │ │ │ │ ├── userServiceChangePassword.ts │ │ │ │ │ ├── userServiceCreateUser.ts │ │ │ │ │ ├── userServiceDeleteUser.ts │ │ │ │ │ ├── userServiceGetUser.ts │ │ │ │ │ ├── userServiceGetUserProfile.ts │ │ │ │ │ ├── userServiceListUserRoles.ts │ │ │ │ │ ├── userServiceListUsers.ts │ │ │ │ │ ├── userServiceLogin.ts │ │ │ │ │ ├── userServiceLogout.ts │ │ │ │ │ ├── userServiceResetPassword.ts │ │ │ │ │ ├── userServiceUpdateUser.ts │ │ │ │ │ └── userServiceValidateSession.ts │ │ │ │ ├── index.context.ts │ │ │ │ ├── index.schemas.ts │ │ │ │ ├── index.ts │ │ │ │ ├── index.validator.ts │ │ │ │ ├── index.zod.ts │ │ │ │ └── sample-res/ │ │ │ │ ├── metrics-config-cluster-overview.json │ │ │ │ ├── metrics-config-cluster.json │ │ │ │ ├── metrics-config-host.json │ │ │ │ ├── metrics-config-overview.json │ │ │ │ ├── metrics-data-cpu-usage.json │ │ │ │ ├── slow-query-detail.json │ │ │ │ ├── slow-query-list.json │ │ │ │ ├── statement-list.json │ │ │ │ ├── statement-plans-detail.json │ │ │ │ ├── statement-plans-list.json │ │ │ │ └── statement-slow-query-list.json │ │ │ ├── tsconfig.json │ │ │ └── wrangler.toml │ │ ├── libs/ │ │ │ ├── 1-charts/ │ │ │ │ ├── CHANGELOG.md │ │ │ │ ├── README.md │ │ │ │ ├── package.json │ │ │ │ ├── rollup.config.js │ │ │ │ ├── src/ │ │ │ │ │ ├── chart-theme-switch.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── sample-data.ts │ │ │ │ │ ├── series-chart.tsx │ │ │ │ │ ├── series-render.tsx │ │ │ │ │ ├── style.scss │ │ │ │ │ └── type.ts │ │ │ │ └── tsconfig.json │ │ │ ├── 1-icons/ │ │ │ │ ├── CHANGELOG.md │ │ │ │ ├── package.json │ │ │ │ ├── rollup.config.js │ │ │ │ ├── src/ │ │ │ │ │ └── index.ts │ │ │ │ └── tsconfig.json │ │ │ ├── 1-utils/ │ │ │ │ ├── CHANGELOG.md │ │ │ │ ├── package.json │ │ │ │ ├── rollup.config.js │ │ │ │ ├── src/ │ │ │ │ │ ├── delay.ts │ │ │ │ │ ├── env.d.ts │ │ │ │ │ ├── format.ts │ │ │ │ │ ├── i18n.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── memory-state/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── reset-filters-state.ts │ │ │ │ │ ├── prom.ts │ │ │ │ │ ├── time-range.ts │ │ │ │ │ └── url-state/ │ │ │ │ │ ├── advanced-filters-url-state.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── pagination-url-state.ts │ │ │ │ │ ├── pro-table-pagination-state.ts │ │ │ │ │ ├── pro-table-sort-state.ts │ │ │ │ │ ├── search-url-state.ts │ │ │ │ │ ├── sort-url-state.ts │ │ │ │ │ ├── timerange-url-state.ts │ │ │ │ │ └── use-url-state.tsx │ │ │ │ └── tsconfig.json │ │ │ ├── 2-primitive-ui/ │ │ │ │ ├── CHANGELOG.md │ │ │ │ ├── package.json │ │ │ │ ├── rollup.config.js │ │ │ │ ├── src/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── uikit-theme-provider.tsx │ │ │ │ └── tsconfig.json │ │ │ ├── 3-biz-ui/ │ │ │ │ ├── CHANGELOG.md │ │ │ │ ├── package.json │ │ │ │ ├── rollup.config.js │ │ │ │ ├── src/ │ │ │ │ │ ├── action-drawer.tsx │ │ │ │ │ ├── advanced-filters/ │ │ │ │ │ │ ├── filter-setting.tsx │ │ │ │ │ │ ├── filters-modal.tsx │ │ │ │ │ │ ├── filters-setting.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── locales.ts │ │ │ │ │ ├── auto-refresh-button/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── progress.tsx │ │ │ │ │ ├── charts-multi-select.tsx │ │ │ │ │ ├── cols-multi-select.tsx │ │ │ │ │ ├── custom-json-view.tsx │ │ │ │ │ ├── filter-multi-select.tsx │ │ │ │ │ ├── highlight-sql.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── info-table.tsx │ │ │ │ │ ├── loading-skeleton.tsx │ │ │ │ │ ├── plan-table/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── parser.ts │ │ │ │ │ │ └── sample-data/ │ │ │ │ │ │ ├── plan-v1-1.txt │ │ │ │ │ │ ├── plan-v1-2.txt │ │ │ │ │ │ ├── plan-v2-1.txt │ │ │ │ │ │ └── slow-query-detail.json │ │ │ │ │ ├── sql-with-hover.tsx │ │ │ │ │ ├── status-indicator.tsx │ │ │ │ │ └── time-range-picker/ │ │ │ │ │ ├── custom.tsx │ │ │ │ │ └── index.tsx │ │ │ │ └── tsconfig.json │ │ │ └── 4-apps/ │ │ │ ├── CHANGELOG.md │ │ │ ├── package.json │ │ │ ├── rollup.config.js │ │ │ ├── src/ │ │ │ │ ├── _re-exports/ │ │ │ │ │ ├── biz-ui.ts │ │ │ │ │ ├── charts-css.ts │ │ │ │ │ ├── charts.ts │ │ │ │ │ ├── primitive-ui.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── _shared/ │ │ │ │ │ ├── cols-factory.tsx │ │ │ │ │ ├── sql-history/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── chart.tsx │ │ │ │ │ │ │ ├── filters.tsx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── time-range-clip-alert.tsx │ │ │ │ │ │ ├── ctx/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── locales/ │ │ │ │ │ │ │ ├── en.json │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── zh.json │ │ │ │ │ │ ├── shared-state/ │ │ │ │ │ │ │ └── memory-state.ts │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ └── use-data.ts │ │ │ │ │ ├── sql-limit/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ ├── setting.tsx │ │ │ │ │ │ │ └── table.tsx │ │ │ │ │ │ ├── ctx/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── locales/ │ │ │ │ │ │ │ ├── en.json │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── zh.json │ │ │ │ │ │ ├── shared-state/ │ │ │ │ │ │ │ └── memory-state.ts │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ └── use-data.ts │ │ │ │ │ └── state-filters.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── metric/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── chart-actions-menu.tsx │ │ │ │ │ │ ├── chart-body.tsx │ │ │ │ │ │ ├── chart-header.tsx │ │ │ │ │ │ ├── charts-select.tsx │ │ │ │ │ │ └── loading-card.tsx │ │ │ │ │ ├── ctx/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── locales/ │ │ │ │ │ │ ├── en.json │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── zh.json │ │ │ │ │ ├── pages/ │ │ │ │ │ │ ├── azores-cluster/ │ │ │ │ │ │ │ ├── filters.tsx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── panel.tsx │ │ │ │ │ │ ├── azores-cluster-overview/ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── panel.tsx │ │ │ │ │ │ ├── azores-host/ │ │ │ │ │ │ │ ├── filters.tsx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── panel.tsx │ │ │ │ │ │ ├── azores-metric-detail/ │ │ │ │ │ │ │ ├── body.tsx │ │ │ │ │ │ │ ├── drawer.tsx │ │ │ │ │ │ │ ├── filters.tsx │ │ │ │ │ │ │ └── modal.tsx │ │ │ │ │ │ ├── azores-overview/ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── panel.tsx │ │ │ │ │ │ └── normal/ │ │ │ │ │ │ ├── chart-card.tsx │ │ │ │ │ │ ├── filters.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── panel.tsx │ │ │ │ │ ├── shared-state/ │ │ │ │ │ │ ├── memory-state.ts │ │ │ │ │ │ └── url-state.ts │ │ │ │ │ └── utils/ │ │ │ │ │ ├── common.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── type.ts │ │ │ │ │ └── use-data.ts │ │ │ │ ├── slow-query/ │ │ │ │ │ ├── ctx/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── locales/ │ │ │ │ │ │ ├── en.json │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── preset.ts │ │ │ │ │ │ └── zh.json │ │ │ │ │ ├── models/ │ │ │ │ │ │ ├── advanced-filter-info-model.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── slowquery-model.ts │ │ │ │ │ ├── pages/ │ │ │ │ │ │ ├── detail/ │ │ │ │ │ │ │ ├── detail-basic.tsx │ │ │ │ │ │ │ ├── detail-copr.tsx │ │ │ │ │ │ │ ├── detail-tabs.tsx │ │ │ │ │ │ │ ├── detail-time.tsx │ │ │ │ │ │ │ ├── detail-txn.tsx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ ├── plan.tsx │ │ │ │ │ │ │ ├── query.tsx │ │ │ │ │ │ │ ├── related-statement-button.tsx │ │ │ │ │ │ │ ├── related-statement-link.tsx │ │ │ │ │ │ │ ├── sql-history.tsx │ │ │ │ │ │ │ └── sql-limit.tsx │ │ │ │ │ │ └── list/ │ │ │ │ │ │ ├── advanced-filters-modal.tsx │ │ │ │ │ │ ├── cols-select.tsx │ │ │ │ │ │ ├── cols.tsx │ │ │ │ │ │ ├── filters-with-advanced.tsx │ │ │ │ │ │ ├── filters.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── refresh-button.tsx │ │ │ │ │ │ ├── table.tsx │ │ │ │ │ │ └── time-range-clip-alert.tsx │ │ │ │ │ ├── shared-state/ │ │ │ │ │ │ ├── detail-url-state.ts │ │ │ │ │ │ ├── list-url-state.ts │ │ │ │ │ │ └── memory-state.ts │ │ │ │ │ └── utils/ │ │ │ │ │ ├── constants.ts │ │ │ │ │ └── use-data.ts │ │ │ │ └── statement/ │ │ │ │ ├── ctx/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── locales/ │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── preset.ts │ │ │ │ │ └── zh.json │ │ │ │ ├── models/ │ │ │ │ │ ├── advanced-filter-info-model.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── statement-config-model.ts │ │ │ │ │ └── statement-model.ts │ │ │ │ ├── pages/ │ │ │ │ │ ├── detail/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── plan-detail/ │ │ │ │ │ │ │ ├── detail-basic.tsx │ │ │ │ │ │ │ ├── detail-copr.tsx │ │ │ │ │ │ │ ├── detail-tabs.tsx │ │ │ │ │ │ │ ├── detail-time.tsx │ │ │ │ │ │ │ ├── detail-txn.tsx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── plan.tsx │ │ │ │ │ │ ├── plans-list/ │ │ │ │ │ │ │ ├── bind-sql-cell.tsx │ │ │ │ │ │ │ ├── cols.tsx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ ├── plan-check-cell.tsx │ │ │ │ │ │ │ ├── slow-query-cell.tsx │ │ │ │ │ │ │ └── table.tsx │ │ │ │ │ │ ├── sql-history.tsx │ │ │ │ │ │ ├── sql-limit.tsx │ │ │ │ │ │ ├── stmt-basic.tsx │ │ │ │ │ │ └── stmt-sql.tsx │ │ │ │ │ ├── list/ │ │ │ │ │ │ ├── advanced-filters-modal.tsx │ │ │ │ │ │ ├── cols-select.tsx │ │ │ │ │ │ ├── cols.tsx │ │ │ │ │ │ ├── disabled-status.tsx │ │ │ │ │ │ ├── filters-with-advanced.tsx │ │ │ │ │ │ ├── filters.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── refresh-button.tsx │ │ │ │ │ │ ├── stmt-setting-button.tsx │ │ │ │ │ │ ├── table.tsx │ │ │ │ │ │ └── time-range-fix-alert.tsx │ │ │ │ │ └── setting/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── shared-state/ │ │ │ │ │ ├── detail-url-state.ts │ │ │ │ │ ├── list-url-state.ts │ │ │ │ │ └── memory-state.ts │ │ │ │ └── utils/ │ │ │ │ ├── constants.ts │ │ │ │ └── use-data.ts │ │ │ └── tsconfig.json │ │ ├── portals/ │ │ │ └── test/ │ │ │ ├── CHANGELOG.md │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── public/ │ │ │ │ └── swagger.index-advisor.json │ │ │ ├── src/ │ │ │ │ ├── App.css │ │ │ │ ├── App.tsx │ │ │ │ ├── apps/ │ │ │ │ │ ├── metric/ │ │ │ │ │ │ ├── mock-api-app-provider.tsx │ │ │ │ │ │ └── sample-data/ │ │ │ │ │ │ ├── normal-configs.ts │ │ │ │ │ │ └── qps-type.json │ │ │ │ │ ├── slow-query/ │ │ │ │ │ │ └── mock-api-app-provider.tsx │ │ │ │ │ └── statement/ │ │ │ │ │ ├── mock-api-app-provider.tsx │ │ │ │ │ └── stmt-types.ts │ │ │ │ ├── index.css │ │ │ │ ├── main.tsx │ │ │ │ ├── providers/ │ │ │ │ │ ├── react-query-provider.tsx │ │ │ │ │ └── url-state-provider.tsx │ │ │ │ ├── router/ │ │ │ │ │ ├── devtools.tsx │ │ │ │ │ ├── provider.tsx │ │ │ │ │ └── router.ts │ │ │ │ ├── routes/ │ │ │ │ │ ├── __root.tsx │ │ │ │ │ ├── _apps-layout/ │ │ │ │ │ │ ├── metrics/ │ │ │ │ │ │ │ ├── azores-cluster-overview.lazy.tsx │ │ │ │ │ │ │ ├── azores-cluster.lazy.tsx │ │ │ │ │ │ │ ├── azores-host.lazy.tsx │ │ │ │ │ │ │ ├── azores-overview.lazy.tsx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── normal.lazy.tsx │ │ │ │ │ │ ├── metrics.lazy.tsx │ │ │ │ │ │ ├── slow-query/ │ │ │ │ │ │ │ ├── detail.lazy.tsx │ │ │ │ │ │ │ └── index.lazy.tsx │ │ │ │ │ │ ├── slow-query.lazy.tsx │ │ │ │ │ │ ├── statement/ │ │ │ │ │ │ │ ├── detail.lazy.tsx │ │ │ │ │ │ │ └── index.lazy.tsx │ │ │ │ │ │ └── statement.lazy.tsx │ │ │ │ │ ├── _apps-layout.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── login.lazy.tsx │ │ │ │ └── vite-env.d.ts │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ └── tsconfig.app.json │ ├── pnpm-workspace.yaml │ └── scripts/ │ ├── gen-locales.ts │ └── gogocode-test/ │ ├── 1.js │ └── 2.js └── util/ ├── assertutil/ │ ├── 1_main_test.go │ ├── json.go │ ├── json_test.go │ └── mock.go ├── client/ │ ├── httpclient/ │ │ ├── 1_main_test.go │ │ ├── client.go │ │ ├── config.go │ │ ├── info.go │ │ ├── request.go │ │ ├── request_resty.go │ │ ├── response.go │ │ └── response_test.go │ ├── pdclient/ │ │ ├── 1_main_test.go │ │ ├── etcd_client.go │ │ ├── fixture/ │ │ │ └── pd_server.go │ │ ├── pd_api.go │ │ ├── pd_api_client.go │ │ ├── pd_api_highlevel.go │ │ ├── pd_api_highlevel_test.go │ │ └── pd_api_test.go │ ├── schedulingclient/ │ │ └── status_client.go │ ├── ticdcclient/ │ │ └── status_client.go │ ├── tidbclient/ │ │ ├── sql_client.go │ │ ├── status_client.go │ │ ├── tidbproto/ │ │ │ ├── 1_main_test.go │ │ │ ├── codec.go │ │ │ ├── codec_test.go │ │ │ └── model.go │ │ └── tidbproxy/ │ │ └── proxy.go │ ├── tiflashclient/ │ │ └── status_client.go │ ├── tikvclient/ │ │ └── status_client.go │ ├── tiproxyclient/ │ │ └── status_client.go │ └── tsoclient/ │ └── status_client.go ├── csvutil/ │ ├── 1_main_test.go │ ├── writer.go │ └── writer_test.go ├── distro/ │ ├── 1_main_test.go │ ├── distro.go │ └── distro_test.go ├── featureflag/ │ ├── 1_main_test.go │ ├── featureflag.go │ ├── featureflag_test.go │ ├── registry.go │ └── registry_test.go ├── fxprinter/ │ └── fxprinter.go ├── gormutil/ │ ├── datatype/ │ │ ├── 1_main_test.go │ │ ├── int.go │ │ ├── int_test.go │ │ ├── int_withdb_test.go │ │ ├── nullable/ │ │ │ └── nullable.go │ │ ├── timestamp.go │ │ ├── timestamp_test.go │ │ └── timestamp_withdb_test.go │ └── virtualview/ │ ├── 1_main_test.go │ ├── schema.go │ ├── schema_test.go │ ├── virtualview.go │ └── virtualview_test.go ├── israce/ │ ├── no_race.go │ └── race.go ├── jsonserde/ │ ├── 1_main_test.go │ ├── convert.go │ ├── default.go │ ├── default_test.go │ └── ginadapter/ │ ├── 1_main_test.go │ ├── binding.go │ ├── binding_test.go │ ├── render.go │ └── render_test.go ├── lifecyclectx/ │ ├── fx.go │ └── lifecyclectxtest/ │ └── test.go ├── netutil/ │ ├── 1_main_test.go │ ├── parse.go │ └── parse_test.go ├── nocopy/ │ └── nocopy.go ├── proxy/ │ ├── 1_main_test.go │ ├── proxy.go │ ├── proxy_test.go │ └── upstream.go ├── reflectutil/ │ ├── 1_main_test.go │ ├── field.go │ ├── field_test.go │ ├── tag.go │ └── tag_test.go ├── rest/ │ ├── 1_main_test.go │ ├── context_helpers.go │ ├── context_helpers_test.go │ ├── empty_resp.go │ ├── error.go │ ├── error_resp.go │ ├── error_resp_test.go │ ├── error_test.go │ └── fileswap/ │ ├── 1_main_test.go │ ├── server.go │ └── server_test.go ├── sqlitestore/ │ └── sqlitestore.go ├── testutil/ │ ├── db.go │ ├── gintest/ │ │ └── context.go │ ├── http_server.go │ ├── httpmockutil/ │ │ └── responder.go │ └── testdefault/ │ └── main.go ├── timeutil/ │ ├── 1_main_test.go │ ├── format.go │ └── format_test.go ├── tlsutil/ │ ├── 1_main_test.go │ ├── config_ext.go │ └── config_ext_test.go ├── topo/ │ ├── 1_main_test.go │ ├── mock_TopologyProvider.go │ ├── model.go │ ├── model_desc.go │ ├── model_info.go │ ├── pdtopo/ │ │ ├── 1_main_test.go │ │ ├── monitor.go │ │ ├── pd.go │ │ ├── pd_test.go │ │ ├── provider_pd.go │ │ ├── std_comp.go │ │ ├── store.go │ │ ├── store_test.go │ │ └── tidb.go │ ├── provider.go │ ├── provider_cached.go │ └── provider_cached_test.go └── ziputil/ └── zip_writer.go